java.lang.Object java.awt.Component java.awt.Container java.awt.Window
public class Window
Window
对象是一个没有边界和菜单栏的顶层窗口。窗口的默认布局是 BorderLayout
。
构造窗口时,它必须拥有窗体、对话框或其他作为其所有者定义的窗口。
在多屏幕环境中,通过使用 Window(Window, GraphicsConfiguration)
构造 Window
,可以在不同的屏幕设备上创建 Window
。GraphicsConfiguration
对象是目标屏幕设备的 GraphicsConfiguration
对象之一。
在虚拟设备多屏幕环境中(其中桌面区域可以跨越多物理屏幕设备),所有配置的边界都是相对于虚拟设备坐标系的。虚拟坐标系的原点位于主物理屏幕的左上角。是否使用负坐标取决于主物理屏幕在虚拟设备中的位置,如下图所示。
在此环境中,调用 setLocation
时,必须传递一个虚拟坐标到此方法中。类似地,对 Frame
调用 getLocationOnScreen
将返回虚拟设备坐标。调用 GraphicsConfiguration
的 getBounds
方法,以查找它在虚拟坐标系中的原点。
以下代码将 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
、Frame
和 Dialog
)的位置和大小受桌面窗口管理系统的控制。对 setLocation
、setSize
和 setBounds
的调用是转发到窗口管理系统的请求(不是指令)。将尽所有努力响应这样的请求。但是,在某些情况下,窗口管理系统可以忽略这样的请求,或修改请求的几何结构,以放置和调整 Window
的大小,使之更好地与桌面设置匹配。
由于本机事件处理的异步特性,在处理完最后一个请求前,getBounds
、getLocation
、getLocationOnScreen
和 getSize
返回的结果可能不反映屏幕上窗口的实际几何结构。在处理后续请求的过程中,窗口管理系统满足这些请求时,这些值可能会相应地改变。
应用程序可以随意设置不可见 Window
的大小和位置,但是当 Window
可见时,窗口管理系统可以随后更改它的大小和/或位置。将生成一个或多个 ComponentEvent
来表示新的几何结构。
窗口能够生成以下 WindowEvents:WindowOpened、WindowClosed、indowGainedFocus、indowLostFocus。
WindowEvent
,
addWindowListener(java.awt.event.WindowListener)
,
BorderLayout
,
序列化表格
嵌套类摘要 | |
---|---|
protected class |
Window.AccessibleAWTWindow 此类实现对 Window 类的可访问性支持。 |
从类 java.awt.Container 继承的嵌套类/接口 |
---|
Container.AccessibleAWTContainer |
从类 java.awt.Component 继承的嵌套类/接口 |
---|
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy |
字段摘要 |
---|
从类 java.awt.Component 继承的字段 |
---|
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT |
从接口 java.awt.image.ImageObserver 继承的字段 |
---|
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH |
构造方法摘要 | |
---|---|
Window(Frame owner) 构造一个新的、最初不可见的窗口,使用指定的 Frame 作为其所有者。 |
|
Window(Window owner) 构造一个新的、最初不可见的窗口,使用指定 Window 作为其所有者。 |
|
Window(Window owner, GraphicsConfiguration gc) 构造一个新的、最初不可见的窗口,使用指定的所有者 Window 和屏幕设备的 GraphicsConfiguration 。 |
方法摘要 | ||
---|---|---|
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。 |
|
BufferStrategy |
getBufferStrategy() 返回此组件使用的 BufferStrategy 。 |
|
boolean |
getFocusableWindowState() 返回如果此窗口满足 isFocusableWindow 中列出的其他要求,其是否可以成为焦点窗口。 |
|
Container |
getFocusCycleRootAncestor() 始终返回 null ,因为窗口没有祖先;它们表示组件层次结构的顶层。 |
|
Component |
getFocusOwner() 如果此窗口为焦点窗口,则返回是焦点窗口的子组件;否则返回 null。 |
|
Set<AWTKeyStroke> |
getFocusTraversalKeys(int id) 获取此窗口的焦点遍历键。 |
|
GraphicsConfiguration |
getGraphicsConfiguration() 此方法返回由此窗口使用的 GraphicsConfiguration。 |
|
List<Image> |
getIconImages() 返回要作为此窗口的图标显示的图像序列。 |
|
InputContext |
getInputContext() 获取此窗口的输入上下文。 |
|
|
getListeners(Class<T> listenerType) 返回当前在此 Window 上注册为 FooListener 的所有对象所组成的数组。 |
|
Locale |
getLocale() 如果设置了区域,则获取与此窗口关联的 Locale 对象。 |
|
Dialog.ModalExclusionType |
getModalExclusionType() 返回此窗口的模式排斥类型。 |
|
Component |
getMostRecentFocusOwner() 返回此窗口的子组件,该子组件在此窗口为焦点窗口时将接收焦点。 |
|
Window[] |
getOwnedWindows() 返回包含此窗口当前拥有的所有窗口的数组。 |
|
Window |
getOwner() 返回此窗口的所有者。 |
|
static Window[] |
getOwnerlessWindows() 返回一个数组,该数组由此应用程序创建的所有没有所有者的 Window 组成。 |
|
Toolkit |
getToolkit() 返回此窗体的工具包。 |
|
String |
getWarningString() 获取此窗口中显示的警告字符串。 |
|
WindowFocusListener[] |
getWindowFocusListeners() 返回在此窗口注册的所有窗口焦点侦听器所组成的数组。 |
|
WindowListener[] |
getWindowListeners() 返回在此窗口注册的所有窗口侦听器所组成的数组。 |
|
static Window[] |
getWindows() 返回一个数组,该数组由此应用程序创建的所有 Window (包括被拥有的和不被拥有的)组成。 |
|
WindowStateListener[] |
getWindowStateListeners() 返回在此窗口注册的所有窗口状态侦听器所组成的数组。 |
|
void |
hide() 已过时。 从 JDK 1.5 版开始,由 Component.setVisible(boolean) 取代。 |
|
boolean |
isActive() 返回此窗口是否为活动窗口。 |
|
boolean |
isAlwaysOnTop() 返回此窗口是否为 always-on-top 窗口。 |
|
boolean |
isAlwaysOnTopSupported() 返回此窗口是否支持 always-on-top 模式。 |
|
boolean |
isFocusableWindow() 返回此窗口是否可以成为焦点窗口,也就是说,此窗口或其任何子组件是否可以成为焦点所有者。 |
|
boolean |
isFocusCycleRoot() 始终返回 true ,因为所有窗口必须是焦点遍历循环的根。 |
|
boolean |
isFocused() 返回此窗口是否为焦点窗口。 |
|
boolean |
isLocationByPlatform() 如果此窗口下次可见时,出现在本机窗口操作系统的默认位置,则返回 true 。 |
|
boolean |
isShowing() 检查此窗口是否显示在屏幕上。 |
|
void |
pack() 调整此窗口的大小,以适合其子组件的首选大小和布局。 |
|
boolean |
postEvent(Event e) 已过时。 从 JDK version 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() 通过移除此 Container 到其本机屏幕资源的连接,使其不可显示。 |
|
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 |
setBounds(int x, int y, int width, int height) 移动组件并调整其大小。 |
|
void |
setBounds(Rectangle r) 移动组件并调整其大小,使其符合新的有界矩形 r 。 |
|
void |
setCursor(Cursor cursor) 设置指定光标的光标图像。 |
|
void |
setFocusableWindowState(boolean focusableWindowState) 设置如果此窗口满足 isFocusableWindow 中列出的其他要求,其是否可以成为焦点窗口。 |
|
void |
setFocusCycleRoot(boolean focusCycleRoot) 不执行任何操作,因为窗口必须始终是焦点遍历循环的根。 |
|
void |
setIconImage(Image image) 设置要作为此窗口图标显示的图像。 |
|
void |
setIconImages(List<? extends Image> icons) 设置要作为此窗口的图标显示的图像序列。 |
|
void |
setLocationByPlatform(boolean locationByPlatform) 设置窗口下次可见时应该出现的位置:本机窗口系统的默认位置,还是当前位置(由 getLocation 返回)。 |
|
void |
setLocationRelativeTo(Component c) 设置窗口相对于指定组件的位置。 |
|
void |
setMinimumSize(Dimension minimumSize) 将此窗口的最小大小设置为一个常量值。 |
|
void |
setModalExclusionType(Dialog.ModalExclusionType exclusionType) 指定此窗口的模式排斥类型。 |
|
void |
setSize(Dimension d) 调整组件的大小,使其宽度为 d.width ,高度为 d.height 。 |
|
void |
setSize(int width, int height) 调整组件的大小,使其宽度为 width ,高度为 height 。 |
|
void |
setVisible(boolean b) 根据参数 b 的值显示或隐藏此 Window 。 |
|
void |
show() 已过时。 从 JDK 1.5 版开始,由 Component.setVisible(boolean) 取代。 |
|
void |
toBack() 如果此窗口是可视的,则将此窗口置于后方,如果它是焦点窗口或活动窗口,则会导致丢失焦点或活动状态。 |
|
void |
toFront() 如果此窗口是可见的,则将此窗口置于前端,并可以将其设为焦点 Window。 |