public class Window extends Container implements Accessible
Window
对象是没有边框的顶级窗口,没有菜单栏。
窗口的默认布局为BorderLayout
。
构建窗口时,窗口必须有一个框架,对话框或其他窗口,作为其所有者。
在多屏幕环境中,你可以创建一个Window
通过构建不同的屏幕设备上Window
与Window(Window, GraphicsConfiguration)
。 GraphicsConfiguration
对象是目标屏幕设备的GraphicsConfiguration
对象之一。
在桌面区域可跨越多个物理屏幕设备的虚拟设备多屏幕环境中,所有配置的边界都相对于虚拟设备坐标系。 虚拟坐标系的原点位于主物理屏幕的左上角。 根据虚拟设备中主屏幕的位置,可以使用负坐标,如下图所示。
在这样的环境中,当调用setLocation
时,必须将虚拟坐标传递给此方法。 同样,调用getLocationOnScreen
上Window
返回虚拟设备坐标。 调用getBounds
一个的方法GraphicsConfiguration
找到它的起源在虚拟坐标系统相同。
下面的代码设定的位置Window
在(10,10)相对于所述相应的物理屏幕的原点GraphicsConfiguration
。 如果GraphicsConfiguration
的边界未被考虑, Window
位置将相对于虚拟坐标系设置为(10,10),并将出现在主物理屏幕上,这可能与物理屏幕不同指定为GraphicsConfiguration
。
Window w = new Window(Window owner, GraphicsConfiguration gc);
Rectangle bounds = gc.getBounds();
w.setLocation(10 + bounds.x, 10 + bounds.y);
注意:顶级窗口的位置和大小(包括Window
s, Frame
s和Dialog
)位于桌面窗口管理系统的控制之下。 拨打setLocation
, setSize
和setBounds
是转发到窗口管理系统的请求(不是指令)。 将竭尽全力履行这些要求。 然而,在某些情况下,窗口管理系统可能会忽略此类请求,或者修改所请求的几何,以便以更符合桌面设置的方式放置和Window
。
由于本地事件处理的异步特性,结果被返回getBounds
, getLocation
, getLocationOnScreen
和getSize
,直到最后一个请求已被处理可能不反映屏幕上Window的实际几何结构。 在处理后续请求期间,窗口管理系统满足请求时,这些值可能会相应地更改。
应用可为一个不可见的大小和位置Window
任意,但窗口管理系统可以随后改变其大小和/或位置时, Window
变得可见。 将生成一个或多个ComponentEvent
,以指示新几何。
Windows能够生成以下WindowEvents:WindowOpened,WindowClosed,WindowGainedFocus,WindowLostFocus。
WindowEvent
, addWindowListener(java.awt.event.WindowListener)
, BorderLayout
, Serialized Form
Modifier and Type | Class and Description |
---|---|
protected class |
Window.AccessibleAWTWindow
该类实现对
Window 类的辅助功能支持。
|
static class |
Window.Type
枚举可用的
窗口类型 。
|
Container.AccessibleAWTContainer
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
Constructor and Description |
---|
Window(Frame owner)
构造一个新的,最初不可见的窗口,其指定的
Frame 为
Frame 。
|
Window(Window owner)
构造一个新的,最初看不见的窗口,其指定的
Window 为
Window 。
|
Window(Window owner, GraphicsConfiguration gc)
构造一个新的,最初不可见的窗口,其中指定的所有者为
Window 和屏幕设备的
GraphicsConfiguration 。
|
Modifier and Type | Method and Description |
---|---|
void |
addNotify()
通过创建与其本机屏幕资源的连接,使此窗口可显示。
|
void |
addPropertyChangeListener(PropertyChangeListener listener)
将PropertyChangeListener添加到侦听器列表。
|
void |
addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
将PropertyChangeListener添加到特定属性的侦听器列表中。
|
void |
addWindowFocusListener(WindowFocusListener l)
添加指定的窗口焦点侦听器以从此窗口接收窗口事件。
|
void |
addWindowListener(WindowListener l)
添加指定的窗口侦听器以从此窗口接收窗口事件。
|
void |
addWindowStateListener(WindowStateListener l)
添加指定的窗口状态侦听器以从此窗口接收窗口事件。
|
void |
applyResourceBundle(ResourceBundle rb)
已弃用
截至J2SE 1.4,由
Component.applyComponentOrientation 替代 。
|
void |
applyResourceBundle(String rbName)
已弃用
截至J2SE 1.4,由
Component.applyComponentOrientation 替代 。
|
void |
createBufferStrategy(int numBuffers)
为此组件创建一个新的多缓冲策略。
|
void |
createBufferStrategy(int numBuffers, BufferCapabilities caps)
在此组件上创建一个新策略,以实现所需的缓冲功能。
|
void |
dispose()
释放此
Window ,其子组件及其所有子集所使用的所有本地屏幕资源。
|
AccessibleContext |
getAccessibleContext()
获取与此窗口关联的AccessibleContext。
|
Color |
getBackground()
获取此窗口的背景颜色。
|
BufferStrategy |
getBufferStrategy()
返回此
BufferStrategy 使用的BufferStrategy。
|
boolean |
getFocusableWindowState()
返回此窗口是否可以成为焦点窗口,如果它符合列出的其他要求
isFocusableWindow 。
|
Container |
getFocusCycleRootAncestor()
始终返回 null ,因为Windows没有祖先;
它们代表组件层次结构的顶部。
|
Component |
getFocusOwner()
如果此窗口被聚焦,则返回此窗口的具有焦点的子组件;
否则返回null。
|
Set<AWTKeyStroke> |
getFocusTraversalKeys(int id)
获取此窗口的焦点遍历键。
|
List<Image> |
getIconImages()
返回要显示为此窗口的图标的图像序列。
|
InputContext |
getInputContext()
获取此窗口的输入上下文。
|
<T extends EventListener> |
getListeners(类<T> listenerType)
返回当前注册为
FooListener 的所有对象的数组,在此
Window 。
|
Locale |
getLocale()
获取与此窗口相关
Locale 对象,如果已设置了语言环境。
|
Dialog.ModalExclusionType |
getModalExclusionType()
返回此窗口的模态排除类型。
|
Component |
getMostRecentFocusOwner()
返回此窗口的子组件,该窗口将在此窗口聚焦时接收焦点。
|
float |
getOpacity()
返回窗口的不透明度。
|
Window[] |
getOwnedWindows()
返回一个包含此窗口当前拥有的所有窗口的数组。
|
Window |
getOwner()
返回此窗口的所有者。
|
static Window[] |
getOwnerlessWindows()
返回
Window 创建的所有
Window 的数组,该数组没有所有者。
|
Shape |
getShape()
返回窗口的形状。
|
Toolkit |
getToolkit()
返回此框架的工具包。
|
Window.Type |
getType()
返回窗口的类型。
|
String |
getWarningString()
获取此窗口显示的警告字符串。
|
WindowFocusListener[] |
getWindowFocusListeners()
返回在此窗口上注册的所有窗口焦点侦听器的数组。
|
WindowListener[] |
getWindowListeners()
返回在此窗口上注册的所有窗口侦听器的数组。
|
static Window[] |
getWindows()
返回由此应用程序创建的所有拥有和无主的所有
Window 的数组。
|
WindowStateListener[] |
getWindowStateListeners()
返回在此窗口上注册的所有窗口状态侦听器的数组。
|
void |
hide()
已弃用
从JDK版本1.5开始,替换为
setVisible(boolean) 。
|
boolean |
isActive()
返回此窗口是否处于活动状态。
|
boolean |
isAlwaysOnTop()
返回此窗口是否为始终在上的窗口。
|
boolean |
isAlwaysOnTopSupported()
返回此窗口是否支持始终在线模式。
|
boolean |
isAutoRequestFocus()
返回此窗口是否应该随后显示焦点(调用
setVisible(true) )或被移动到前面(调用
toFront() )。
|
boolean |
isFocusableWindow()
返回此窗口是否可以成为关注的窗口,也就是说,此窗口或其任何子组件是否可以成为焦点所有者。
|
boolean |
isFocusCycleRoot()
始终返回
true ,因为所有Windows都必须是焦点遍历循环的根。
|
boolean |
isFocused()
返回此窗口是否聚焦。
|
boolean |
isLocationByPlatform()
如果此窗口在下一次此窗口可见时,此窗口将显示在本机窗口系统的默认位置,则返回
true 。
|
boolean |
isOpaque()
指示窗口当前是否不透明。
|
boolean |
isShowing()
检查此窗口是否在屏幕上显示。
|
boolean |
isValidateRoot()
指示此容器是否为验证根。
|
void |
pack()
使此窗口的大小适合其子组件的首选大小和布局。
|
void |
paint(Graphics g)
涂上容器
|
boolean |
postEvent(Event e)
已弃用
由JDK版本1.1替换为
dispatchEvent(AWTEvent) 。
|
protected void |
processEvent(AWTEvent e)
在此窗口处理事件。
|
protected void |
processWindowEvent(WindowEvent e)
通过将窗口事件分派到任何注册的WindowListener对象来处理窗口事件。
|
protected void |
processWindowFocusEvent(WindowEvent e)
通过将窗口焦点事件分派到任何已注册的WindowFocusListener对象来处理窗口焦点事件。
|
protected void |
processWindowStateEvent(WindowEvent e)
通过将窗口状态调度到任何已
WindowStateListener 对象来处理窗口状态事件。
|
void |
removeNotify()
通过删除其与其本机屏幕资源的连接,使此容器不可显示。
|
void |
removeWindowFocusListener(WindowFocusListener l)
删除指定的窗口焦点侦听器,使其不再从此窗口接收窗口事件。
|
void |
removeWindowListener(WindowListener l)
删除指定的窗口监听器,使其不再从此窗口接收窗口事件。
|
void |
removeWindowStateListener(WindowStateListener l)
删除指定的窗口状态监听器,使其不再从此窗口接收窗口事件。
|
void |
reshape(int x, int y, int width, int height)
已弃用
从JDK 1.1版开始,由
setBounds(int, int, int, int) 。
|
void |
setAlwaysOnTop(boolean alwaysOnTop)
设置此窗口是否应始终高于其他窗口。
|
void |
setAutoRequestFocus(boolean autoRequestFocus)
设置此窗口是否应该随后显示焦点(调用
setVisible(true) )或被移动到前面(调用
toFront() )。
|
void |
setBackground(Color bgColor)
设置此窗口的背景颜色。
|
void |
setBounds(int x, int y, int width, int height)
移动并调整此组件的大小。
|
void |
setBounds(Rectangle r)
移动并调整此组件的大小以符合新的边界矩形
r 。
|
void |
setCursor(Cursor cursor)
将光标图像设置为指定的光标。
|
void |
setFocusableWindowState(boolean focusableWindowState)
设置此窗口是否可以成为关注窗口,如果它符合isFocusableWindow中列出的其他
isFocusableWindow 。
|
void |
setFocusCycleRoot(boolean focusCycleRoot)
没有因为Windows必须始终是焦点遍历循环的根源。
|
void |
setIconImage(Image image)
将要显示的图像设置为此窗口的图标。
|
void |
setIconImages(List<? extends Image> icons)
设置要显示为该窗口的图标的图像序列。
|
void |
setLocation(int x, int y)
将此组件移动到新位置。
|
void |
setLocation(Point p)
将此组件移动到新位置。
|
void |
setLocationByPlatform(boolean locationByPlatform)
设置此窗口是否应显示在本机窗口系统的默认位置或当前位置(由
getLocation 返回)下一次窗口可见时。
|
void |
setLocationRelativeTo(Component c)
根据以下情况设置窗口相对于指定组件的位置。
|
void |
setMinimumSize(Dimension minimumSize)
将此窗口的最小大小设置为常量值。
|
void |
setModalExclusionType(Dialog.ModalExclusionType exclusionType)
指定此窗口的模态排除类型。
|
void |
setOpacity(float opacity)
设置窗口的不透明度。
|
void |
setShape(Shape shape)
设置窗口的形状。
|
void |
setSize(Dimension d)
调整此组件的大小,使其宽度为
d.width ,高度为
d.height 。
|
void |
setSize(int width, int height)
调整此组件的大小,使其宽度为
width ,高度为
height 。
|
void |
setType(Window.Type type)
设置窗口的类型。
|
void |
setVisible(boolean b)
Window b的值显示或隐藏此
b 。
|
void |
show()
已弃用
从JDK版本1.5开始,替换为
setVisible(boolean) 。
|
void |
toBack()
如果此窗口可见,则将此窗口发送到后面,如果该窗口是聚焦窗口或活动窗口,则可能导致其失去焦点或激活。
|
void |
toFront()
如果此窗口可见,将此窗口放在前面,并可能使其成为聚焦窗口。
|
add, add, add, add, add, addContainerListener, addImpl, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, paramString, preferredSize, print, printComponents, processContainerEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, setLayout, transferFocusDownCycle, update, validate, validateTree
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
public Window(Frame owner)
Frame
为Frame
。
除非其所有者显示在屏幕上,否则该窗口将不会对焦。
如果有一个安全管理器设置,它被调用来检查AWTPermission("showWindowWithoutWarningBanner")
。 如果该检查失败,使用SecurityException
则会创建一个警告横幅。
owner
-
Frame
作为所有者或
null
如果此窗口没有所有者
IllegalArgumentException
- 如果
owner
的
GraphicsConfiguration
不是来自屏幕设备
HeadlessException
- 当时
GraphicsEnvironment.isHeadless
返回
true
GraphicsEnvironment.isHeadless()
,
isShowing()
public Window(Window owner)
Window
为Window
。
除非最近拥有的屏幕上显示Frame
或Dialog
,否则此窗口将不会对焦。
如果有一个安全管理器集,它被调用来检查AWTPermission("showWindowWithoutWarningBanner")
。 如果该检查失败,使用SecurityException
则会创建一个警告横幅。
owner
-
Window
作为所有者或
null
如果此窗口没有所有者
IllegalArgumentException
- 如果
owner
的
GraphicsConfiguration
不是来自屏幕设备
HeadlessException
- 当
GraphicsEnvironment.isHeadless()
返回
true
GraphicsEnvironment.isHeadless()
,
isShowing()
public Window(Window owner, GraphicsConfiguration gc)
Window
和屏幕设备的GraphicsConfiguration
。
除非最近拥有的屏幕上显示Frame
或Dialog
,否则窗口将不会对焦。
如果有一个安全管理器设置,它被调用来检查AWTPermission("showWindowWithoutWarningBanner")
。 如果该检查失败并使用SecurityException
则会创建一个警告横幅。
owner
- 作为所有者的窗口或
null
如果此窗口没有所有者
gc
- 目标屏幕设备的GraphicsConfiguration
;
如果gc
为null
,则假定系统默认值为GraphicsConfiguration
IllegalArgumentException
- 如果
gc
不是来自屏幕设备
HeadlessException
- 当时
GraphicsEnvironment.isHeadless()
返回
true
GraphicsEnvironment.isHeadless()
,
GraphicsConfiguration.getBounds()
,
isShowing()
public List<Image> getIconImages()
此方法返回内部存储的列表的副本,因此返回对象的所有操作都不会影响窗口的行为。
setIconImages(java.util.List<? extends java.awt.Image>)
,
setIconImage(Image)
public void setIconImages(List<? extends Image> icons)
getIconImages
将永远返回icons
列表的副本。
根据平台功能,不同尺寸的一个或多个图像将被用作窗口的图标。
icons
列表从一开始就扫描最合适尺寸的图像。 如果列表包含几个相同大小的图像,则会使用第一个图像。
没有图标的无窗窗口使用platfrom-default图标。 拥有窗口的图标可以从所有者继承,除非明确覆盖。 将图标设置为null
或空列表将恢复默认行为。
注意:根据上下文(例如窗口装饰,窗口列表,任务栏等),本机窗口系统可以使用不同尺寸的不同图像来表示窗口。 他们也可以仅使用单个图像进行所有上下文或根本没有图像。
icons
- 要显示的图标图像的列表。
getIconImages()
,
setIconImage(Image)
public void setIconImage(Image image)
可以使用此方法代替setIconImages()
将单个图像指定为窗口的图标。
以下声明:
setIconImage(image);
相当于:
ArrayList<Image> imageList = new ArrayList<Image>();
imageList.add(image);
setIconImages(imageList);
注意:根据上下文(例如窗口装饰,窗口列表,任务栏等),本机窗口系统可以使用不同尺寸的不同图像来表示窗口。 他们也可以仅使用单个图像进行所有上下文或根本没有图像。
image
- 要显示的图标图像。
setIconImages(java.util.List<? extends java.awt.Image>)
,
getIconImages()
public void addNotify()
addNotify
在
Container
Component.isDisplayable()
,
Container.removeNotify()
public void removeNotify()
public void pack()
setMinimumSize
方法规定的最小尺寸,窗口的宽度和高度将自动放大。
如果窗口和/或其所有者不可显示,则在计算优选尺寸之前,它们都可显示。 窗口在其大小计算后验证。
public void setMinimumSize(Dimension minimumSize)
getMinimumSize
总是返回此值。
如果当前窗口的大小小于minimumSize
,窗口的大小将自动放大,以符合最小尺寸。
如果之后setSize
或setBounds
方法,其宽度或高度小于setMinimumSize
方法setMinimumSize
方法,窗口将自动放大以符合minimumSize
值。 minimumSize
值也会影响pack
方法的行为。
通过将最小尺寸参数设置为null
值来恢复默认行为。
如果用户尝试将窗口的大小调整到minimumSize
值以下,则调整大小操作可能会受到限制。 这种行为是平台依赖的。
setMinimumSize
在
Component
minimumSize
- 这个窗口的最小尺寸
Component.setMinimumSize(java.awt.Dimension)
,
Container.getMinimumSize()
,
Component.isMinimumSizeSet()
,
setSize(Dimension)
,
pack()
public void setSize(Dimension d)
d.width
,高度为d.height
。
该方法更改布局相关信息,因此使组件层次结构无效。
如果任一者小于先前致电setMinimumSize
的最小大小,则d.width
和d.height
值将自动放大。
该方法更改几何相关数据。 因此,本地窗口系统可以忽略这样的请求,或者它可以修改所请求的数据,使得Window
对象以与桌面设置紧密相对的方式被放置和定尺寸。
setSize
在
Component
d
- 指定此组件的新大小的维度
Component.getSize()
,
setBounds(int, int, int, int)
,
setMinimumSize(java.awt.Dimension)
public void setSize(int width, int height)
width
,高度为height
。
该方法更改布局相关信息,因此使组件层次结构无效。
如果这些值小于先前呼叫setMinimumSize
的最小大小,则width
和height
值将自动放大。
该方法更改几何相关数据。 因此,本地窗口系统可以忽略这样的请求,或者它可以修改所请求的数据,使得Window
对象以与桌面设置紧密相对的方式放置和调整大小。
setSize
在
Component
width
- 该
width
的新宽度(以像素为单位)
height
- 该
height
的新高度(以像素为单位)
Component.getSize()
,
setBounds(int, int, int, int)
,
setMinimumSize(java.awt.Dimension)
public void setLocation(int x, int y)
x
和y
参数指定。
该方法更改布局相关信息,因此使组件层次结构无效。
该方法更改几何相关数据。 因此,本地窗口系统可以忽略这样的请求,或者它可以修改所请求的数据,使得Window
对象以与桌面设置紧密对应的方式被放置和调整大小。
setLocation
在
Component
x
-新位置的左上角的父坐标空间的
X -协调
y
-新位置的左上角的父坐标空间在
y -协调
Component.getLocation()
,
Component.setBounds(int, int, int, int)
,
Component.invalidate()
public void setLocation(Point p)
p
。
点p
在父协调空间中给出。
该方法更改布局相关信息,因此使组件层次结构无效。
该方法更改几何相关数据。 因此,本地窗口系统可以忽略这样的请求,或者它可以修改所请求的数据,使得Window
对象以与桌面设置紧密相对的方式放置和调整大小。
setLocation
在
Component
p
- 定义新位置左上角的点,在该组件的父项的坐标空间中给出
Component.getLocation()
,
Component.setBounds(int, int, int, int)
,
Component.invalidate()
@Deprecated public void reshape(int x, int y, int width, int height)
setBounds(int, int, int, int)
。
public void setVisible(boolean b)
Window
b的值显示或隐藏此b
。
如果方法显示窗口,则在以下条件下也将窗口重点放在:
Window
符合isFocusableWindow()
方法中概述的要求 。 Window
的autoRequestFocus
属性是true
价值。 Window
聚焦。 autoRequestFocus
属性的值)有autoRequestFocus
。
如果窗口是模态对话框,则阻止当前关注的窗口,该属性不被考虑。
除非接收到WINDOW_GAINED_FOCUS或WINDOW_ACTIVATED事件,否则开发人员绝不能假定该窗口是关注或活动的窗口。
setVisible
在
Component
b
- 如果true
,使Window
可见,否则隐藏Window
。
如果Window
和/或其所有者尚未显示,则两者均可显示。
Window
将在被显示之前验证。
如果Window
已经可见,这将使Window
到前面。
如果false
,隐藏这个Window
,其子组件,以及其所有的所有子女。 Window
及其子组件可以再次显示,呼叫#setVisible(true)
。
Component.isDisplayable()
,
Component.setVisible(boolean)
,
toFront()
,
dispose()
,
setAutoRequestFocus(boolean)
,
isFocusableWindow()
@Deprecated public void show()
setVisible(boolean)
。
show
在
Component
Component.isDisplayable()
,
toFront()
@Deprecated public void hide()
setVisible(boolean)
。
show
。
public void dispose()
Window
,其子组件及其所有子集所使用的所有本地屏幕资源。
也就是说,这些Component
的资源将被销毁,它们消耗的任何内存将被返回到操作系统,并且它们将被标记为不可显示。
Window
及其子组件可以通过重新生成本地资源,随后调用pack
或show
。 重新创建的状态Window
及其子组件将等同于这些对象在其中的点的状态Window
被布置(不考虑这些操作之间附加的修改)。
注意 :当Java虚拟机(VM)中的最后一个可显示的窗口被丢弃时,VM可能会终止。 见AWT Threading Issues以获取更多信息。
Component.isDisplayable()
,
pack()
,
show()
public void toFront()
将此窗口放置在堆叠顺序的顶部,并将其显示在此VM中任何其他Windows的前面。 如果此窗口不可见,将不会发生任何操作。 某些平台不允许拥有其他Windows的Windows显示在所拥有的Windows之上。 某些平台可能不允许此虚拟机将Windows位于本机应用程序的Windows或其他虚拟机的Windows上。 此权限可能取决于此VM中的窗口是否已经聚焦。 每次尝试将堆叠顺序中的该窗口移动到尽可能高的位置; 然而,开发人员不应该假设这种方法会在任何情况下将此窗口移到所有其他窗口之上。
开发人员绝对不能假定此Window是焦点或活动的窗口,直到此窗口收到WINDOW_GAINED_FOCUS或WINDOW_ACTIVATED事件为止。 在最上面的窗口是关注窗口的平台上,在以下条件下,此方法可能会将此窗口(如果尚未集中)集中起来:
isFocusableWindow()
方法中的要求 。 autoRequestFocus
是true
价值。 如果此方法导致此窗口被聚焦,并且此窗口是框架或对话框,它也将被激活。 如果此窗口被聚焦,但它不是框架或对话框,那么作为此窗口的所有者的第一个框架或对话框将被激活。
如果此窗口被模态对话框阻止,则阻止对话框将显示在前面并保留在阻止窗口的上方。
public void toBack()
将此窗口放置在堆叠顺序的底部,并将其显示在此VM中的任何其他Windows之后。 这个窗口不可见,不会发生任何动作。 某些平台不允许其他Windows拥有的Windows显示在其所有者的下方。 每次尝试将堆叠顺序中的窗口移动到尽可能低的位置; 然而,开发人员不应该假设这种方法会将Window在所有其他窗口中移动到所有情况。
由于本机窗口系统的变化,不能保证关注和活动的Windows的更改。 开发人员绝对不能假定此窗口不再是聚焦或活动窗口,直到此窗口收到WINDOW_LOST_FOCUS或WINDOW_DEACTIVATED事件为止。 在最上面的窗口是关注窗口的平台上,这种方法可能会导致此窗口失去焦点。 在这种情况下,这个VM中的下一个最高的可调焦窗口将会得到关注。 在堆叠顺序通常不会影响聚焦窗口的平台上,此方法可能会使焦点和活动窗口保持不变。
toFront()
public Toolkit getToolkit()
getToolkit
在类别
Component
Toolkit
, Toolkit.getDefaultToolkit()
, Component.getToolkit()
public final String getWarningString()
AWTPermission("showWindowWithoutWarningBanner")
,则窗口不安全。
如果窗口是安全的,那么getWarningString
返回null
。 如果窗口不安全,则此方法将检查系统属性awt.appletWarning
并返回该属性的字符串值。
public Locale getLocale()
Locale
对象(如果已设置了语言环境)。
如果没有设置语言环境,则返回默认语言环境。
public InputContext getInputContext()
getInputContext
在类别
Component
null
如果没有上下文可以确定
Component.getInputContext()
public void setCursor(Cursor cursor)
如果Java平台实现和/或本地系统不支持更改鼠标光标的形状,该方法可能没有视觉效果。
setCursor
在
Component
cursor
- Cursor
类定义的Cursor
。
如果此参数为空,则此窗口的光标将设置为Cursor.DEFAULT_CURSOR类型。
Component.getCursor()
, Cursor
public Window getOwner()
public Window[] getOwnedWindows()
public static Window[] getWindows()
Window
的所有数据。
如果从小程序调用,该数组只包含该applet可Window
的Window。
警告:此方法可能会返回系统创建的窗口,如打印对话框。 应用程序不应该假定存在这些对话框,应用程序也不应该对这些对话框(例如组件位置, LayoutManager
或序列化)承担任何事情。
Frame.getFrames()
,
getOwnerlessWindows()
public static Window[] getOwnerlessWindows()
Window
s的数组,该数组没有所有者。
它们包括Frame
和所有者Dialog
和Window
s。
如果从小程序调用,该数组只包含该小程序可Window
的Window。
警告:此方法可能会返回系统创建的窗口,如打印对话框。 应用程序不应该假定这些对话框的存在,应用程序也不应该对这些对话框(例如组件位置, LayoutManager
或序列化)承担任何事情。
Frame.getFrames()
,
getWindows()
public void setModalExclusionType(Dialog.ModalExclusionType exclusionType)
Dialog.ModalExclusionType
。
如果不支持给定类型,则使用NO_EXCLUDE
。
注意:更改可见窗口的模式排除类型可能不会有任何效果,直到它被隐藏,然后再次显示。
exclusionType
- 此窗口的模态排除类型
一个null
值相当于NO_EXCLUDE
SecurityException
- 如果调用线程没有权限将模态排除属性设置为给定的窗口
exclusionType
Dialog.ModalExclusionType
, getModalExclusionType()
, Toolkit.isModalExclusionTypeSupported(java.awt.Dialog.ModalExclusionType)
public Dialog.ModalExclusionType getModalExclusionType()
Dialog.ModalExclusionType
, setModalExclusionType(java.awt.Dialog.ModalExclusionType)
public void addWindowListener(WindowListener l)
l
- 窗口监听器
removeWindowListener(java.awt.event.WindowListener)
,
getWindowListeners()
public void addWindowStateListener(WindowStateListener l)
l
- 窗口状态侦听器
removeWindowStateListener(java.awt.event.WindowStateListener)
,
getWindowStateListeners()
public void addWindowFocusListener(WindowFocusListener l)
l
- 窗口焦点侦听器
removeWindowFocusListener(java.awt.event.WindowFocusListener)
,
getWindowFocusListeners()
public void removeWindowListener(WindowListener l)
l
- 窗口监听器
addWindowListener(java.awt.event.WindowListener)
,
getWindowListeners()
public void removeWindowStateListener(WindowStateListener l)
l
- 窗口状态侦听器
addWindowStateListener(java.awt.event.WindowStateListener)
,
getWindowStateListeners()
public void removeWindowFocusListener(WindowFocusListener l)
l
- 窗口焦点侦听器
addWindowFocusListener(java.awt.event.WindowFocusListener)
,
getWindowFocusListeners()
public WindowListener[] getWindowListeners()
WindowListener
s或一个空数组,如果没有窗口监听器当前注册
addWindowListener(java.awt.event.WindowListener)
,
removeWindowListener(java.awt.event.WindowListener)
public WindowFocusListener[] getWindowFocusListeners()
WindowFocusListener
s或一个空数组,如果没有窗口焦点侦听器当前注册
addWindowFocusListener(java.awt.event.WindowFocusListener)
,
removeWindowFocusListener(java.awt.event.WindowFocusListener)
public WindowStateListener[] getWindowStateListeners()
WindowStateListener
s或一个空数组,如果没有窗口状态监听器当前注册
addWindowStateListener(java.awt.event.WindowStateListener)
,
removeWindowStateListener(java.awt.event.WindowStateListener)
public <T extends EventListener> T[] getListeners(类<T> listenerType)
FooListener
的所有对象的数组,此对象为Window
。
FooListener
是使用addFooListener
方法进行注册。
您可以使用类文字指定listenerType
参数,例如FooListener.class
。 例如,您可以使用以下代码查询Window
w
的窗口监听器:
WindowListener[] wls = (WindowListener[])(w.getListeners(WindowListener.class));
如果没有这样的侦听器存在,这个方法返回一个空数组。
getListeners
在
Container
listenerType
- 所请求的听众的类型;
此参数应指定从java.util.EventListener
下降的java.util.EventListener
FooListener
的所有对象的数组,如果没有添加此类侦听器,则为空数组
ClassCastException
- 如果
listenerType
没有指定实现java.util.EventListener的类或
java.util.EventListener
NullPointerException
- 如果
listenerType
是
null
getWindowListeners()
protected void processEvent(AWTEvent e)
WindowEvent
,它调用processWindowEvent
方法,否则它调用其超类的processEvent
。
请注意,如果事件参数为null
则行为未指定,可能会导致异常。
processEvent
在
Container
e
- 事件
Component.processComponentEvent(java.awt.event.ComponentEvent)
,
Component.processFocusEvent(java.awt.event.FocusEvent)
,
Component.processKeyEvent(java.awt.event.KeyEvent)
,
Component.processMouseEvent(java.awt.event.MouseEvent)
,
Component.processMouseMotionEvent(java.awt.event.MouseEvent)
,
Component.processInputMethodEvent(java.awt.event.InputMethodEvent)
,
Component.processHierarchyEvent(java.awt.event.HierarchyEvent)
,
Component.processMouseWheelEvent(java.awt.event.MouseWheelEvent)
protected void processWindowEvent(WindowEvent e)
addWindowListener
enableEvents
启用 请注意,如果事件参数为null
则行为未指定,并可能导致异常。
e
- 窗口事件
Component.enableEvents(long)
protected void processWindowFocusEvent(WindowEvent e)
addWindowFocusListener
enableEvents
启用 请注意,如果事件参数为null
则行为未指定,并可能导致异常。
e
- 窗口焦点事件
Component.enableEvents(long)
protected void processWindowStateEvent(WindowEvent e)
WindowStateListener
对象来处理窗口状态事件。
注意:除非为此窗口启用窗口状态事件,否则不会调用此方法。
发生以下情况之一时:
WindowStateListener
经由注册addWindowStateListener
enableEvents
启用 请注意,如果事件参数为null
该行为是未指定的,可能会导致异常。
e
- 窗口状态事件
Component.enableEvents(long)
public final void setAlwaysOnTop(boolean alwaysOnTop) throws SecurityException
如果某些其他窗口已经始终在顶部,则这些窗口之间的相对顺序是未指定的(取决于平台)。 除了可能是另一个永远在上的窗口之外,没有窗户可以被覆盖在始终在上的窗口。
始终在上的窗口拥有的所有窗口都会继承此状态,并自动变为始终处于顶端状态。 如果一个窗口不再是顶级的,那么它所拥有的窗口将不再一直处于顶端。 toBack
发送一个始终在上的窗口时,它始终在顶端状态设置为false
。
当在一个值为true
的窗口上调用此方法时,该窗口是可见的,并且该平台在该窗口上始终支持该窗口,该窗口将立即提起来,将其“保持在最高位置”。 如果窗口当前不可见,则此方法将始终处于顶部状态设置为true
但不会将窗口向前。 当窗口稍后显示时,它将始终在顶部。
当在一个值为false
的窗口上调用此方法时,始终处于顶端状态被设置为正常。 它也可能导致顶级窗口的z顺序的未指定的平台依赖性变化,但其他始终在上的窗口将保持在最高位置。 在具有正常状态的窗口上调用此值为false
方法不起作用。
注意 :某些平台可能不支持永远在线的窗口。 要检测当前平台是否支持始终在线的窗口,请使用Toolkit.isAlwaysOnTopSupported()
和isAlwaysOnTopSupported()
。 如果此窗口不支持永远在线模式,或者此窗口的工具包不支持永远在线窗口,则调用此方法不起作用。
如果安装了SecurityManager,则调用线程必须被授予AWTPermission“setWindowAlwaysOnTop”才能设置此属性的值。 如果未授予此权限,则此方法将抛出SecurityException异常,该属性的当前值将保持不变。
alwaysOnTop
- 如果窗口应该始终高于其他窗口,则为true
SecurityException
- 如果调用线程没有权限设置always-on-top属性的值
isAlwaysOnTop()
, toFront()
, toBack()
, AWTPermission
, isAlwaysOnTopSupported()
, getToolkit()
, Toolkit.isAlwaysOnTopSupported()
public boolean isAlwaysOnTopSupported()
true
,如果此窗口支持永远在线模式,并且此窗口的工具包支持永远在线窗口,
false
false
setAlwaysOnTop(boolean)
,
getToolkit()
,
Toolkit.isAlwaysOnTopSupported()
public final boolean isAlwaysOnTop()
true
,如果窗口处于始终处于顶部状态,
false
false
setAlwaysOnTop(boolean)
public Component getFocusOwner()
getMostRecentFocusOwner()
,
isFocused()
public Component getMostRecentFocusOwner()
getFocusOwner()
。
如果此窗口未被聚焦,则将返回最近请求焦点的子组件。
如果没有子组件已经请求了焦点,并且这是一个可调焦窗口,则返回此窗口的初始可聚焦组件。
如果没有子组件已经请求了焦点,并且这是一个不可对焦窗口,则返回null。
getFocusOwner()
,
isFocused()
,
isFocusableWindow()
public boolean isActive()
isFocused()
public boolean isFocused()
如果对焦窗口是Frame或Dialog,它也是活动窗口。 否则,活动窗口是第一个框架或对话框,它是聚焦窗口的所有者。
isActive()
public Set<AWTKeyStroke> getFocusTraversalKeys(int id)
setFocusTraversalKeys
)
如果没有为此窗口显式设置遍历键,则返回此窗口的父进程的遍历键。 如果没有为任何此窗口的祖先显式设置遍历键,则返回当前的KeyboardFocusManager的默认遍历键。
getFocusTraversalKeys
在
Container
id
- 一个KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS或KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS
IllegalArgumentException
- 如果id不是KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS或KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS中的一个
Container.setFocusTraversalKeys(int, java.util.Set<? extends java.awt.AWTKeyStroke>)
,
KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS
,
KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS
,
KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS
,
KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS
public final void setFocusCycleRoot(boolean focusCycleRoot)
setFocusCycleRoot
在
Container
focusCycleRoot
- 忽略此值
isFocusCycleRoot()
,
Container.setFocusTraversalPolicy(java.awt.FocusTraversalPolicy)
,
Container.getFocusTraversalPolicy()
public final boolean isFocusCycleRoot()
true
,因为所有Windows都必须是焦点遍历循环的根。
isFocusCycleRoot
在类别
Container
true
setFocusCycleRoot(boolean)
,
Container.setFocusTraversalPolicy(java.awt.FocusTraversalPolicy)
,
Container.getFocusTraversalPolicy()
public final Container getFocusCycleRootAncestor()
null
,因为Windows没有祖先;
它们代表组件层次结构的顶部。
getFocusCycleRootAncestor
在
Component
null
Container.isFocusCycleRoot()
public final boolean isFocusableWindow()
true
。
对于不是可对焦的框架或对话框的窗口,其可调整的窗口状态必须设置为true
,其最近拥有的框架或对话框必须在屏幕上显示,并且必须在其焦点遍历周期中至少包含一个组件。
如果没有满足任何这些条件,那么这个Window和它的任何子组件都不能成为焦点所有者。
true
如果这个窗口可以是关注的窗口;
false
否则
getFocusableWindowState()
,
setFocusableWindowState(boolean)
,
isShowing()
,
Component.isFocusable()
public boolean getFocusableWindowState()
isFocusableWindow
。
如果此方法返回false
,那么isFocusableWindow
也将返回false
。
如果此方法返回true
,则isFocusableWindow
可能会返回true
或false
这取决于窗口可对焦而必须满足的其他要求。
默认情况下,所有Windows都具有可聚焦的窗口状态true
。
isFocusableWindow()
,
setFocusableWindowState(boolean)
,
isShowing()
,
Component.setFocusable(boolean)
public void setFocusableWindowState(boolean focusableWindowState)
isFocusableWindow
。
如果此窗口的可调焦窗口状态设置为false
,则isFocusableWindow
将返回false
。
如果此窗口的可调焦窗口状态设置为true
,则isFocusableWindow
可能会返回true
或false
这取决于窗口可对焦而必须满足的其他要求。
将窗口的对焦状态设置为false
是应用程序向AWT标识将用作浮动调色板或工具栏的窗口的标准机制,因此应该是不可对焦的窗口。 在可见的Window
上设置可聚焦状态可能会在某些平台上产生延迟效应? 实际的变化可能只有当Window
变得隐藏,然后再次可见时Window
发生。 为了确保跨平台的一致行为,当Window
不可见时,设置Window
的可重定位状态,然后显示。
focusableWindowState
- 此窗口是否可以是聚焦窗口
isFocusableWindow()
,
getFocusableWindowState()
,
isShowing()
,
Component.setFocusable(boolean)
public void setAutoRequestFocus(boolean autoRequestFocus)
setVisible(true)
)或被移动到前面(调用toFront()
)。
请注意,可以间接调用setVisible(true)
(例如,当显示窗口的所有者使窗口显示时)。 toFront()
也可以间接调用(例如,当setVisible(true)
被称为上已经可见窗口)。 在所有这种情况下,此属性也将生效。
属性的值不是由拥有的窗口继承。
autoRequestFocus
- 这个窗口是否应该集中在随后被显示或被移动到前面
isAutoRequestFocus()
,
isFocusableWindow()
,
setVisible(boolean)
,
toFront()
public boolean isAutoRequestFocus()
setVisible(true)
)或被移动到前面(调用toFront()
)。
默认情况下,窗口autoRequestFocus
值为true
。
autoRequestFocus
价值
setAutoRequestFocus(boolean)
public void addPropertyChangeListener(PropertyChangeListener listener)
如果侦听器为空,则不会抛出异常,也不会执行任何操作。
addPropertyChangeListener
在
Container
listener
- 要添加的PropertyChangeListener
Component.removePropertyChangeListener(java.beans.PropertyChangeListener)
,
addPropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)
public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
如果侦听器为空,则不会抛出异常,也不会执行任何操作。
addPropertyChangeListener
在
Container
propertyName
- 上面列出的属性名称之一
listener
- 要添加的PropertyChangeListener
addPropertyChangeListener(java.beans.PropertyChangeListener)
,
Component.removePropertyChangeListener(java.beans.PropertyChangeListener)
public boolean isValidateRoot()
Window
对象是验证根,因此,它们覆盖此方法以返回true
。
isValidateRoot
在
Container
true
Container.isValidateRoot()
@Deprecated public boolean postEvent(Event e)
dispatchEvent(AWTEvent)
。
postEvent
在界面
MenuContainer
postEvent
在
Component
public boolean isShowing()
isShowing
在
Component
true
如果组件显示,
false
false
Component.setVisible(boolean)
@Deprecated public void applyResourceBundle(ResourceBundle rb)
Component.applyComponentOrientation
替代 。
@Deprecated public void applyResourceBundle(String rbName)
Component.applyComponentOrientation
替代 。
public void setType(Window.Type type)
IllegalComponentStateException
- 如果窗口可显示。
IllegalArgumentException
- 如果类型是
null
Component.isDisplayable()
,
getType()
public Window.Type getType()
setType(java.awt.Window.Type)
public AccessibleContext getAccessibleContext()
getAccessibleContext
在界面
Accessible
getAccessibleContext
在
Component
public void setLocationRelativeTo(Component c)
下面提到的目标屏幕是在调用setLocationRelativeTo方法之后应该放置窗口的屏幕。
null
,或GraphicsConfiguration
与此组件关联是null
时,窗口被放置在屏幕的中心。 中心点可以使用GraphicsEnvironment.getCenterPoint
方法获得。 null
,但它当前没有显示,则该窗口将放置在与此组件GraphicsConfiguration
GraphicsConfiguration定义的目标屏幕的中心。 null
并显示在屏幕上,则窗口的位置使得窗口的中心与组件的中心重合。 如果屏幕配置不允许窗口从一个屏幕移动到另一个屏幕,则窗口仅被放置在根据上述条件确定的位置,并且其GraphicsConfiguration
未更改。
注意 :如果窗口的下边缘超出屏幕,则窗口放置在离屏幕中心最近的Component
侧。 因此,如果组件位于屏幕的右侧,窗口将放置在左侧,反之亦然。
如果在计算了窗口位置之后,窗口的上,左或右边缘超出了屏幕,则窗口位于窗口的上,左或右边缘与屏幕的相应边缘。 如果窗口的左边缘和右边缘都不在屏幕之外,窗口将放置在屏幕的左侧。 如果顶部和底部边缘都超出屏幕,则会发生类似的放置。 在这种情况下,窗口被放置在屏幕的顶部。
该方法更改几何相关数据。 因此,本地窗口系统可以忽略这样的请求,或者它可以修改所请求的数据,使得Window
对象被放置并且以与桌面设置密切对应的方式被放大。
c
- 确定窗口位置的组件
GraphicsEnvironment.getCenterPoint()
public void createBufferStrategy(int numBuffers)
BufferStrategy
。
首先尝试翻页策略,然后尝试使用加速缓冲区的策略策略。
最后,使用非加速的制动策略。
每次调用此方法时,将丢弃此组件的现有缓冲区策略。
numBuffers
- 要创建的缓冲区数
IllegalArgumentException
- 如果numBuffers小于1。
IllegalStateException
- 如果组件不可显示
Component.isDisplayable()
,
getBufferStrategy()
public void createBufferStrategy(int numBuffers, BufferCapabilities caps) throws AWTException
每次调用此方法时,将丢弃此组件的现有缓冲区策略。
numBuffers
- 要创建的缓冲区数,包括前缓冲区
caps
- 创建缓冲策略所需的功能;
不能null
AWTException
- 如果提供的功能不能被支持或满足;
这可能会发生,例如,如果当前没有足够的加速内存可用,或者如果指定了页面翻转,但不可能。
IllegalArgumentException
- 如果numBuffers小于1,或者如果cap是
null
getBufferStrategy()
public BufferStrategy getBufferStrategy()
BufferStrategy
使用的BufferStrategy。
如果BufferStrategy
尚未创建或已被处理,则此方法将返回null。
createBufferStrategy(int)
public void setLocationByPlatform(boolean locationByPlatform)
getLocation
返回)下一次窗口可见时。
此行为类似于显示的本机窗口,无需以编程方式设置其位置。
大多数窗口系统如果它们的位置未被明确设置,则级联窗口。
一旦窗口显示在屏幕上,确定实际位置。
通过将系统属性“java.awt.Window.locationByPlatform”设置为“true”,也可以启用此行为,尽管此方法的调用优先。
拨打setVisible
, setLocation
和setBounds
调用后setLocationByPlatform
窗口中清除此属性。
例如,执行以下代码之后:
setLocationByPlatform(true);
setVisible(true);
boolean flag = isLocationByPlatform();
窗口将显示在平台的默认位置, flag
将被显示为false
。
在以下示例中:
setLocationByPlatform(true);
setLocation(10, 10);
boolean flag = isLocationByPlatform();
setVisible(true);
窗口将显示在(10,10), flag
将被显示为false
。
locationByPlatform
-
true
如果此窗口应该出现在默认位置,
false
如果在当前位置
IllegalComponentStateException
- 如果窗口显示在屏幕上,而locationByPlatform是
true
。
setLocation(int, int)
,
isShowing()
,
setVisible(boolean)
,
isLocationByPlatform()
,
System.getProperty(String)
public boolean isLocationByPlatform()
true
如果此窗口将显示在本窗口系统的默认位置,下次此窗口可见时。
如果窗口显示在屏幕上,此方法总是返回false
。
setLocationByPlatform(boolean)
,
isShowing()
public void setBounds(int x, int y, int width, int height)
x
和y
,新尺寸由width
和height
。
该方法更改布局相关信息,因此使组件层次结构无效。
如果这些值小于先前致电setMinimumSize
所指定的最小尺寸,则width
或height
值将自动放大。
该方法更改几何相关数据。 因此,本地窗口系统可以忽略这样的请求,或者它可以修改所请求的数据,使得Window
对象以与桌面设置紧密对应的方式被放置和调整大小。
setBounds
在
Component
x
- 这个组件的新
x坐标
y
- 这个组件的新
y-坐标
width
-新
width
这个组件的
height
-新
height
这个组件的
Component.getBounds()
,
setLocation(int, int)
,
setLocation(Point)
,
setSize(int, int)
,
setSize(Dimension)
,
setMinimumSize(java.awt.Dimension)
,
setLocationByPlatform(boolean)
,
isLocationByPlatform()
public void setBounds(Rectangle r)
r
。
该组件的新职位由r.x
和r.y
,其新尺寸由r.width
和r.height
该方法更改布局相关信息,因此使组件层次结构无效。
r.width
或r.height
值将自动放大,如果小于前一次呼叫setMinimumSize
的最小大小。
该方法更改几何相关数据。 因此,本地窗口系统可以忽略这样的请求,或者它可以修改所请求的数据,使得Window
对象被放置并且以与桌面设置紧密相对应的方式进行调整。
setBounds
在类别
Component
r
- 此组件的新的边界矩形
Component.getBounds()
,
setLocation(int, int)
,
setLocation(Point)
,
setSize(int, int)
,
setSize(Dimension)
,
setMinimumSize(java.awt.Dimension)
,
setLocationByPlatform(boolean)
,
isLocationByPlatform()
public float getOpacity()
setOpacity(float)
, GraphicsDevice.WindowTranslucency
public void setOpacity(float opacity)
不透明度值在[0..1]的范围内。 请注意,设置不透明度级别为0可能会禁用此窗口上的鼠标事件处理。 这是依赖于平台的行为。
必须满足以下条件才能设置不透明度值小于1.0f
:
TRANSLUCENT
半透明度必须由底层系统支持 Frame.setUndecorated(boolean)
和Dialog.setUndecorated(boolean)
) GraphicsDevice.setFullScreenWindow(Window)
) 如果请求的不透明度值小于1.0f
,并且不符合上述任何条件,窗口不透明度将不会更改,并且IllegalComponentStateException
将被抛出。
单个像素的半透明度也可以通过其颜色的α分量(参见setBackground(Color)
)和该窗口的当前形状(参见setShape(Shape)
)来实现。
opacity
- 设置为窗口的不透明度级别
IllegalArgumentException
- 如果不透明度超出范围[0..1]
IllegalComponentStateException
- 如果窗口被装饰,并且不透明度小于
1.0f
IllegalComponentStateException
- 如果窗口处于全屏模式,并且不透明度小于
1.0f
UnsupportedOperationException
-如果
GraphicsDevice.WindowTranslucency#TRANSLUCENT TRANSLUCENT
不支持和半透明的不透明度小于
1.0f
getOpacity()
, setBackground(Color)
, setShape(Shape)
, Frame.isUndecorated()
, Dialog.isUndecorated()
, GraphicsDevice.WindowTranslucency
, GraphicsDevice.isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
public Shape getShape()
setShape(shape)
,但保证其表示相同的形状。
null
如果没有为窗口指定形状
setShape(Shape)
, GraphicsDevice.WindowTranslucency
public void setShape(Shape shape)
设置形状会切断窗口的某些部分。 只有属于给定Shape
的部件保持可见和可点击。 如果shape参数为null
,则此方法将恢复默认形状,使窗口在大多数平台上呈矩形。
必须满足以下条件才能设置非空形状:
PERPIXEL_TRANSPARENT
半透明度必须由底层系统支持 Frame.setUndecorated(boolean)
和Dialog.setUndecorated(boolean)
) GraphicsDevice.setFullScreenWindow(Window)
) 如果请求的形状不是null
,并且不符合上述任何条件,则此窗口的形状将不会更改,并且将抛出UnsupportedOperationException
或IllegalComponentStateException
。
单个像素的半透明度也可以通过其颜色的α分量(参见setBackground(Color)
)和不透明度值(参见setOpacity(float)
)来实现。 详见GraphicsDevice.WindowTranslucency
。
shape
- 要设置窗口的形状
IllegalComponentStateException
- 如果形状不是
null
并且窗口被装饰
IllegalComponentStateException
- 如果形状不是
null
,并且窗口处于全屏模式
UnsupportedOperationException
- 如果形状不是
null
和
PERPIXEL_TRANSPARENT
半透明不被支持
getShape()
, setBackground(Color)
, setOpacity(float)
, Frame.isUndecorated()
, Dialog.isUndecorated()
, GraphicsDevice.WindowTranslucency
, GraphicsDevice.isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
public Color getBackground()
请注意,返回颜色的alpha分量表示窗口是否处于非不透明(每像素半透明)模式。
getBackground
在类别
Component
setBackground(Color)
, isOpaque()
, GraphicsDevice.WindowTranslucency
public void setBackground(Color bgColor)
如果窗口系统支持PERPIXEL_TRANSLUCENT
半透明度,给定背景颜色的alpha分量可能会影响此窗口的操作模式:它指示此窗口是否必须是不透明的(alpha等于1.0f
)或每像素半透明(alpha小于1.0f
)。 如果给定的背景颜色是null
,则该窗口被认为是完全不透明的。
必须满足以下条件以启用此窗口的每像素透明度模式:
PERPIXEL_TRANSLUCENT
半透明度必须由此窗口所在的图形设备支持 Frame.setUndecorated(boolean)
和Dialog.setUndecorated(boolean)
) GraphicsDevice.setFullScreenWindow(Window)
) 如果所请求的背景颜色的alpha分量小于1.0f
,并且不满足上述任何条件,则此窗口的背景颜色不会改变,给定背景颜色的alpha分量将不会影响操作模式这个窗口,和UnsupportedOperationException
或IllegalComponentStateException
将被抛出。
当窗口是每像素半透明时,绘图子系统遵循每个像素的alpha值。 如果使用等于零的alpha颜色成分绘制像素,则它将变得视觉上透明。 如果像素的alpha等于1.0f,则像素完全不透明。 alpha颜色分量的中间值使像素半透明。 在此模式下,窗口的背景绘制为给定背景颜色的alpha值。 如果此方法的参数的alpha值等于0
,则完全不绘制背景。
给定像素的半透明度的实际水平也取决于窗口不透明度(参见setOpacity(float)
)以及该窗口的当前形状(参见setShape(Shape)
)。
请注意,绘制alpha值为0
的像素可能会禁用该像素上的鼠标事件处理。 这是依赖于平台的行为。 为了确保鼠标事件不被分派到特定的像素,像素必须从窗口的形状中排除。
由于本机平台要求,启用每像素半透明模式可能会改变该窗口的图形配置。
setBackground
在
Component
bgColor
- 成为这个窗口的背景颜色的颜色。
IllegalComponentStateException
- 如果给定背景颜色的alpha值小于
1.0f
并且窗口被装饰
IllegalComponentStateException
- 如果给定背景颜色的alpha值小于
1.0f
,并且窗口处于全屏模式
UnsupportedOperationException
- 如果给定背景颜色的alpha值小于
1.0f
和
PERPIXEL_TRANSLUCENT
半透明度不受支持
getBackground()
, isOpaque()
, setOpacity(float)
, setShape(Shape)
, Frame.isUndecorated()
, Dialog.isUndecorated()
, GraphicsDevice.WindowTranslucency
, GraphicsDevice.isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
, GraphicsConfiguration.isTranslucencyCapable()
public boolean isOpaque()
该方法返回false
如果窗口的背景色是不null
和颜色的Alpha分量小于1.0f
。 该方法返回true
其他。
isOpaque
在
Component
true
如果窗口不透明,
false
否则
getBackground()
,
setBackground(Color)
public void paint(Graphics g)
paint
在
Container
g
- 指定的图形窗口
Component.update(Graphics)