JavaTM 2 Platform
Standard Ed. 5.0

java.awt
类 Window

java.lang.Object
  继承者 java.awt.Component
      继承者 java.awt.Container
          继承者 java.awt.Window
所有已实现的接口:
ImageObserver, MenuContainer, Serializable, Accessible
直接已知子类:
BasicToolBarUI.DragWindow, Dialog, Frame, JWindow

public class Window
extends Container
implements Accessible

Window 对象是一个没有边界和菜单栏的顶层窗口。窗口的默认布局是 BorderLayout

构造窗口时,窗口必须拥有框架、对话框或作为其所有者定义的其他窗口。

在多屏幕环境中,通过使用 Window(Window, GraphicsConfiguration) 构造 Window,可以在不同的屏幕设备上创建 WindowGraphicsConfiguration 对象是目标屏幕设备的 GraphicsConfiguration 对象之一。

在虚拟设备多屏幕环境中(其中桌面区域可以跨越多物理屏幕设备),所有配置的边界都是相对于虚拟设备坐标系统的。虚拟坐标系的原点位于主物理屏幕的左上角。是否使用负坐标,取决于主物理屏幕在虚拟设备中的位置,如下图所示。

图表显示的虚拟设备包含 4 个物理屏幕。主物理屏幕显示坐标 (0,0),其他屏幕显示 (-80,-100)。

在此环境中,调用 setLocation 时,必须传递一个虚拟坐标到此方法中。类似地,对 Frame 调用 getLocationOnScreen 将返回虚拟设备坐标。调用 GraphicsConfigurationgetBounds 方法,以查找它在虚拟坐标系统中的原点。

以下代码将 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);
 

注:顶层窗口(包括 WindowFrameDialog)的位置和大小受桌面的窗口管理系统的控制。对 setLocationsetSizesetBounds 的调用是转发到窗口管理系统的请求(不是指令)。将尽所有努力响应这样的请求。但是,在某些情况下,窗口管理系统可以忽略这样的请求,或修改请求的几何结构,以放置和调整 Window 的大小,使之更好地与桌面设置匹配。由于本地事件处理的异步特性,由 getBoundsgetLocationgetLocationOnScreengetSize 返回的结果可能不反映屏幕上 Window 的实际几何结构,直到处理完最后一个请求。在处理后续的请求的过程中,窗口管理系统满足该请求时,这些值可能会相应地改变。

窗口能够生成以下 WindowEvents:WindowOpened、WindowClosed、indowGainedFocus、indowLostFocus。

从以下版本开始:
JDK1.0
另请参见:
WindowEvent, addWindowListener(java.awt.event.WindowListener), BorderLayout, 序列化表格

嵌套类摘要
protected  class Window.AccessibleAWTWindow
          此类实现对 Window 类的可访问性支持。
 
从类 java.awt.Container 继承的嵌套类/接口
Container.AccessibleAWTContainer
 
从类 java.awt.Component 继承的嵌套类/接口
Component.AccessibleAWTComponent, 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)
          使用指定窗口的作为其所有者和屏幕设备的一个 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、其子组件及其拥有的所有子组件所使用的所有本机屏幕资源。
protected  void finalize()
          释放输入方法和上下文,并从 GUI 层次结构中移除此 Window。
 AccessibleContext getAccessibleContext()
          获取与此窗口关联的 AccessibleContext。
 BufferStrategy getBufferStrategy()
           
 boolean getFocusableWindowState()
          返回如果此窗口满足 isFocusableWindow 中列出的其他要求,其是否可以成为焦点窗口。
 Container getFocusCycleRootAncestor()
          始终返回 null,原因是窗口没有祖先;它们表示组件层次结构的顶层。
 Component getFocusOwner()
          如果此窗口为焦点窗口,则返回其具有焦点窗口的子组件;否则返回 null。
 Set<AWTKeyStroke> getFocusTraversalKeys(int id)
          获取此窗口的焦点遍历键。
 GraphicsConfiguration getGraphicsConfiguration()
          此方法返回由此窗口使用的 GraphicsConfiguration。
 InputContext getInputContext()
          获取此窗口的输入上下文。
<T extends EventListener>
T[]
getListeners(Class<T> listenerType)
          返回当前在此 Window 上注册为 FooListener 的所有对象的数组。
 Locale getLocale()
          如果设置了区域,则获取与此窗口关联的 Locale 对象。
 Component getMostRecentFocusOwner()
          返回此窗口的子组件,该子组件在此窗口为焦点窗口时将接收焦点。
 Window[] getOwnedWindows()
          返回包含此窗口当前拥有的所有窗口的数组。
 Window getOwner()
          返回此窗口的所有者。
 Toolkit getToolkit()
          返回此框架的工具包。
 String getWarningString()
          获取此窗口中显示的警告字符串。
 WindowFocusListener[] getWindowFocusListeners()
          返回在此窗口注册的所有窗口焦点侦听器的数组。
 WindowListener[] getWindowListeners()
          返回在此窗口注册的所有窗口侦听器的数组。
 WindowStateListener[] getWindowStateListeners()
          返回在此窗口注册的所有窗口状态侦听器的数组。
 void hide()
          已过时。 从 JDK 5 开始,由 Component.setVisible(boolean) 取代。
 boolean isActive()
          返回此窗口是否为活动窗口。
 boolean isAlwaysOnTop()
          返回此窗口是否为 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 removeWindowFocusListener(WindowFocusListener l)
          移除指定的窗口焦点侦听器,以便不再从此窗口接收窗口事件。
 void removeWindowListener(WindowListener l)
          移除指定的窗口侦听器,以便不再从此窗口接收窗口事件。
 void removeWindowStateListener(WindowStateListener l)
          移除指定的窗口状态侦听器,以便不再从此窗口接收窗口事件。
 void setAlwaysOnTop(boolean alwaysOnTop)
          更改始终位于顶层的窗口状态。
 void setBounds(int x, int y, int width, int height)
          重绘组件的指定矩形区域。
 void setCursor(Cursor cursor)
          设置指定光标的光标图像。
 void setFocusableWindowState(boolean focusableWindowState)
          设置如果此窗口满足 isFocusableWindow 中列出的其他要求,其是否可以成为焦点窗口。
 void setFocusCycleRoot(boolean focusCycleRoot)
          不执行任何操作,原因是窗口必须始终为焦点遍历循环的根。
 void setLocationByPlatform(boolean locationByPlatform)
          设置在下次窗口可见时,此窗口是应显示在本机窗口系统的默认位置,还是应显示在当前位置(由 getLocation 返回)。
 void setLocationRelativeTo(Component c)
          设置此窗口相对于指定组件的位置。
 void show()
          已过时。 从 JDK 5 开始,由 Component.setVisible(boolean) 取代。
 void toBack()
          如果此窗口是可视的,则将此窗口发送到后台,如果它是焦点窗口或活动窗口,则会导致丢失焦点或激活状态。
 void toFront()
          如果此窗口是可见的,则将此窗口置于前端,并可以将其设为焦点窗口。
 
从类 java.awt.Container 继承的方法
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, paint, paintComponents, paramString, preferredSize, print, printComponents, processContainerEvent, remove, remove, removeAll, removeContainerListener, removeNotify, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, setLayout, transferFocusBackward, transferFocusDownCycle, update, validate, validateTree
 
从类 java.awt.Component 继承的方法
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, getBackground, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, 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, isOpaque, 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, reshape, resize, resize, setBackground, setBounds, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, setSize, setSize, setVisible, show, size, toString, transferFocus, transferFocusUpCycle
 
从类 java.lang.Object 继承的方法
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

Window

public Window(Frame owner)
使用指定的 Frame 作为其所有者,构造一个新的不可见窗口。该窗口将不是可聚焦的,除非其所有者正显示在屏幕上。

如果有安全管理程序,那么此方法首先调用安全管理程序的 checkTopLevelWindow 方法(this 作为其参数),以确定是否必须使用警告横幅显示该窗口。

参数:
owner - 要充当所有者的 Frame
抛出:
IllegalArgumentException - 如果 ownerGraphicsConfiguration 不是来自屏幕设备
IllegalArgumentException - 如果 ownernullGraphicsEnvironment.isHeadless 返回 true 时,将始终抛出该异常
另请参见:
GraphicsEnvironment.isHeadless(), SecurityManager.checkTopLevelWindow(java.lang.Object), isShowing()

Window

public Window(Window owner)
使用指定 Window 作为其所有者,构造一个新的不可见窗口。该 Window 将不是可聚焦的,除非其最近拥有的 Frame 和 Dialog 正在该屏幕上显示。

如果有安全管理程序,那么此方法首先调用安全管理程序的 checkTopLevelWindow 方法(this 作为其参数),以确定是否必须使用警告横幅显示该窗口。

参数:
owner - 要充当所有者的 Window
抛出:
IllegalArgumentException - 如果 ownerGraphicsConfiguration 不是来自屏幕设备
IllegalArgumentException - 如果 ownernull。GraphicsEnvironment.isHeadless() 返回 true 时,始终抛出此异常。
从以下版本开始:
1.2
另请参见:
GraphicsEnvironment.isHeadless(), SecurityManager.checkTopLevelWindow(java.lang.Object), isShowing()

Window

public Window(Window owner,
              GraphicsConfiguration gc)
使用指定窗口的作为其所有者和屏幕设备的一个 GraphicsConfiguration,构造一个新的不可见窗口 。该 Window 将不是可聚焦的,除非其最近拥有的 Frame 和 Dialog 正在该屏幕上显示。

如果有安全管理程序,那么此方法首先调用安全管理程序的 checkTopLevelWindow 方法(this 作为其参数),以确定是否必须使用警告横幅显示该窗口。

参数:
owner - 要充当所有者的窗口
gc - 目标屏幕设备的 GraphicsConfiguration;如果 gcnull,则使用系统默认的 GraphicsConfiguration
抛出:
IllegalArgumentException - 如果 ownernull
IllegalArgumentException - 如果 gc 不是来自屏幕设备;GraphicsEnvironment.isHeadless 返回 true 时,将始终抛出此异常
从以下版本开始:
1.3
另请参见:
GraphicsEnvironment.isHeadless(), SecurityManager.checkTopLevelWindow(java.lang.Object), GraphicsConfiguration.getBounds(), isShowing()
方法详细信息

finalize

protected void finalize()
                 throws Throwable
释放输入方法和上下文,并从 GUI 层次结构中移除此 Window。重写此方法的子类应调用 super.finalize()。

覆盖:
Object 中的 finalize
抛出:
Throwable - 此方法抛出的 Exception

addNotify

public void addNotify()
通过创建到其本机屏幕资源的连接,使此窗口变得可显示。此方法由工具包在内部进行调用,并且不应由程序直接调用。

覆盖:
Container 中的 addNotify
从以下版本开始:
JDK1.0
另请参见:
Component.isDisplayable(), Container.removeNotify()

pack

public void pack()
调整此窗口的大小,以适合其子组件的首选大小和布局。如果该窗口和/或其所有者仍不可显示,则两者在计算首选大小之前变得可显示。在计算首选大小之后,将会验证该 Window。

另请参见:
Component.isDisplayable()

show

@Deprecated
public void show()
已过时。 从 JDK 5 开始,由 Component.setVisible(boolean) 取代。

覆盖:
Component 中的 show

hide

@Deprecated
public void hide()
已过时。 从 JDK 5 开始,由 Component.setVisible(boolean) 取代。

覆盖:
Component 中的 hide

dispose

public void dispose()
释放由此 Window、其子组件及其拥有的所有子组件所使用的所有本机屏幕资源。即这些 Component 的资源将被破坏,它们使用的所有内存都将返回到操作系统,并将它们标记为不可显示。

通过随后对 packshow 的调用重新构造本机资源,可以再次显示 Window 及其子组件。重新创建的 Window 及其子组件的状态在移除 Window 的点上与这些对象的状态将是一样的(不考虑这些操作之间的其他更改)。

:当 Java 虚拟机 (VM) 中最后的可显示窗口被移除后,虚拟机可能会终止。有关更多信息,请参阅 AWT Threading Issues

另请参见:
Component.isDisplayable(), pack(), show()

toFront

public void toFront()
如果此窗口是可见的,则将此窗口置于前端,并可以将其设为焦点窗口。

将此窗口放在堆栈顺序的顶层,并在此虚拟机中显示在所有其他窗口的上面。如果此窗口不可见,则不会发生任何操作。有些平台不允许被其他窗口拥有的窗口显示在它所拥有的窗口之上。有些平台可能不允许此虚拟机将其窗口放在本机应用程序窗口或其他虚拟机窗口之上。此权限可能取决于此虚拟机中的窗口是否已被设为焦点窗口。将进行所有尝试来移动此窗口,使其位于堆栈顺序中尽可能靠前的位置;不过,开发人员不应假定此方法在所有情形中都可以将此窗口移到所有其他窗口之上。

由于本机窗口系统多种多样,因此无法保证对焦点窗口和活动窗口的更改。在此窗口接收 WINDOW_GAINED_FOCUS 或 WINDOW_ACTIVATED 事件之前,开发人员决不能假定此窗口是焦点窗口或者活动窗口。在顶层窗口是焦点窗口的平台上,此方法可能将此窗口当作焦点窗口(如果它尚未作为焦点窗口)。在堆栈顺序通常不影响焦点窗口的平台上,此方法可能保持不更改焦点窗口和活动窗口。

如果此方法导致此窗口被作为焦点窗口,而且此窗口是一个 Frame 或者 Dialog,则它也将被激活。如果此窗口是焦点窗口,但它不是一个框架或对话框,则拥有此窗口的第一个框架或对话框将被激活。

另请参见:
toBack()

toBack

public void toBack()
如果此窗口是可视的,则将此窗口发送到后台,如果它是焦点窗口或活动窗口,则会导致丢失焦点或激活状态。

在此虚拟机中,将此窗口放在堆栈顺序的底部,并将其显示在所有其他窗口之后。如果此窗口不可见,则不发生任何操作。有些平台不允许被其他窗口拥有的窗口出现在其所有者的下面。将进行所有尝试来移动此窗口,使其位于堆栈顺序中尽可能靠后的位置;不过,开发人员不应假定此方法在所有情形中都可以将此窗口移到所有其他窗口之下。

由于本机窗口系统多种多样,因此无法保证对焦点窗口和活动窗口的更改。在此窗口接收 WINDOW_LOST_FOCUS 或 WINDOW_DEACTIVATED 事件之前,开发人员决不能假定此窗口不再是焦点窗口或活动窗口。在顶层窗口为焦点窗口的平台上,此方法可能导致此窗口丢失焦点。在此情况下,此虚拟机中紧跟其后的可作为焦点的窗口将接收焦点。在堆栈顺序通常不影响焦点窗口的平台上,此方法可能保持不更改焦点窗口和活动窗口。

另请参见:
toFront()

getToolkit

public Toolkit getToolkit()
返回此框架的工具包。

覆盖:
Component 中的 getToolkit
返回:
此窗口的工具包。
另请参见:
Toolkit, Toolkit.getDefaultToolkit(), Component.getToolkit()

getWarningString

public final String getWarningString()
获取此窗口中显示的警告字符串。如果此窗口不安全,则警告字符串将在此窗口的可视区域内显示。如果存在安全管理程序,而且在窗口作为一个参数传递到安全管理程序的 checkTopLevelWindow 方法时,该方法返回 false,则该窗口是不安全的。

如果此窗口是安全的,则 getWarningString 返回 null。如果此窗口是不安全的,则此方法检查系统属性 awt.appletWarning,并返回此属性的字符串值。

返回:
此窗口的警告字符串。
另请参见:
SecurityManager.checkTopLevelWindow(java.lang.Object)

getLocale

public Locale getLocale()
如果设置了区域,则获取与此窗口关联的 Locale 对象。如果未设置区域,则返回默认的区域。

覆盖:
Component 中的 getLocale
返回:
为此窗口设置的区域。
从以下版本开始:
JDK1.1
另请参见:
Locale

getInputContext

public InputContext getInputContext()
获取此窗口的输入上下文。窗口始终具有一个输入上下文,子组件共享该输入上下文,除非这些子组件创建并设置了自己的输入上下文。

覆盖:
Component 中的 getInputContext
返回:
组件使用的输入上下文,如果可以确定没有上下文,则返回 null
从以下版本开始:
1.2
另请参见:
Component.getInputContext()

setCursor

public void setCursor(Cursor cursor)
设置指定光标的光标图像。

覆盖:
Component 中的 setCursor
参数:
cursor - 由 Cursor 类定义的常量之一。如果此参数为 null,则此窗口的光标将被设置为类型 Cursor.DEFAULT_CURSOR。
从以下版本开始:
JDK1.1
另请参见:
Component.getCursor(), Cursor

getOwner

public Window getOwner()
返回此窗口的所有者。

从以下版本开始:
1.2

getOwnedWindows

public Window[] getOwnedWindows()
返回包含此窗口当前拥有的所有窗口的数组。

从以下版本开始:
1.2

addWindowListener

public void addWindowListener(WindowListener l)
添加指定的窗口侦听器,以从此窗口接收窗口事件。如果 l 为 null,则不抛出异常,而且不执行任何操作。

参数:
l - 窗口侦听器
另请参见:
removeWindowListener(java.awt.event.WindowListener), getWindowListeners()

addWindowStateListener

public void addWindowStateListener(WindowStateListener l)
添加指定的窗口状态侦听器,以从此窗口接收窗口事件。如果 l 为 null,则不抛出异常,而且不执行任何操作。

参数:
l - 窗口状态侦听器
从以下版本开始:
1.4
另请参见:
removeWindowStateListener(java.awt.event.WindowStateListener), getWindowStateListeners()

addWindowFocusListener

public void addWindowFocusListener(WindowFocusListener l)
添加指定的窗口焦点侦听器,以从此窗口接收窗口事件。如果 l 为 null,则不抛出异常,而且不执行任何操作。

参数:
l - 窗口焦点侦听器
另请参见:
removeWindowFocusListener(java.awt.event.WindowFocusListener), getWindowFocusListeners()

removeWindowListener

public void removeWindowListener(WindowListener l)
移除指定的窗口侦听器,以便不再从此窗口接收窗口事件。如果 l 为 null,则不抛出异常,而且不执行任何操作。

参数:
l - 窗口侦听器
另请参见:
addWindowListener(java.awt.event.WindowListener), getWindowListeners()

removeWindowStateListener

public void removeWindowStateListener(WindowStateListener l)
移除指定的窗口状态侦听器,以便不再从此窗口接收窗口事件。如果 lnull,则不抛出异常,而且不执行任何操作。

参数:
l - 窗口状态侦听器
从以下版本开始:
1.4
另请参见:
addWindowStateListener(java.awt.event.WindowStateListener), getWindowStateListeners()

removeWindowFocusListener

public void removeWindowFocusListener(WindowFocusListener l)
移除指定的窗口焦点侦听器,以便不再从此窗口接收窗口事件。如果 l 为 null,则不抛出异常,而且不执行任何操作。

参数:
l - 窗口焦点侦听器
另请参见:
addWindowFocusListener(java.awt.event.WindowFocusListener), getWindowFocusListeners()

getWindowListeners

public WindowListener[] getWindowListeners()
返回在此窗口注册的所有窗口侦听器的数组。

返回:
此窗口的所有 WindowListener,如果当前未注册窗口侦听器,则返回一个空数组
从以下版本开始:
1.4
另请参见:
addWindowListener(java.awt.event.WindowListener), removeWindowListener(java.awt.event.WindowListener)

getWindowFocusListeners

public WindowFocusListener[] getWindowFocusListeners()
返回在此窗口注册的所有窗口焦点侦听器的数组。

返回:
此窗口的所有 WindowFocusListener,如果当前未注册窗口焦点侦听器,则返回一个空数组
从以下版本开始:
1.4
另请参见:
addWindowFocusListener(java.awt.event.WindowFocusListener), removeWindowFocusListener(java.awt.event.WindowFocusListener)

getWindowStateListeners

public WindowStateListener[] getWindowStateListeners()
返回在此窗口注册的所有窗口状态侦听器的数组。

返回:
此窗口的所有 WindowStateListener,如果当前未注册窗口状态侦听器,则返回一个空数组
从以下版本开始:
1.4
另请参见:
addWindowStateListener(java.awt.event.WindowStateListener), removeWindowStateListener(java.awt.event.WindowStateListener)

getListeners

public <T extends EventListener> T[] getListeners(Class<T> listenerType)
返回当前在此 Window 上注册为 FooListener 的所有对象的数组。FooListener 是使用 addFooListener 方法注册的。

可以使用类文本指定 listenerType 参数,如 FooListener.class。例如,可以使用以下代码查询 Window w,获取其窗口侦听器:

WindowListener[] wls = (WindowListener[])(w.getListeners(WindowListener.class));
如果不存在此类侦听器,则此方法将返回一个空数组。

覆盖:
Container 中的 getListeners
参数:
listenerType - 请求的侦听器的类型;此参数应指定一个从 java.util.EventListener 继承的接口
返回:
在此窗口注册为 FooListener 的所有对象的数组,如果未添加此类侦听器,则返回一个空数组
抛出:
ClassCastException - 如果 listenerType 未指定一个实现 java.util.EventListener 的类或接口
从以下版本开始:
1.3
另请参见:
getWindowListeners()

processEvent

protected void processEvent(AWTEvent e)
处理此窗口上的事件。如果此事件为一个 WindowEvent,它将调用 processWindowEvent 方法,否则将调用其超类的 processEvent

注意,如果此事件参数为 null,则此行为不确定,而且可能导致异常。

覆盖:
Container 中的 processEvent
参数:
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)

processWindowEvent

protected void processWindowEvent(WindowEvent e)
处理此窗口上发生的窗口事件,方法是将它们调度到任何注册的 WindowListener 对象。注:只有为此组件启用了窗口事件时,此方法才有可能被调用;如果存在以下条件之一,则发生此情况:

注意,如果此事件参数为 null,则此行为不确定,而且可能导致异常。

参数:
e - 窗口事件
另请参见:
Component.enableEvents(long)

processWindowFocusEvent

protected void processWindowFocusEvent(WindowEvent e)
处理此窗口上发生的窗口焦点事件,方法是将它们调度到任何注册的 WindowFocusListener 对象。注:不会调用此方法,除非为此窗口启用了窗口焦点事件。如果存在以下条件之一,则发生此情况:

注意,如果此事件参数为 null,则此行为不确定,而且可能导致异常。

参数:
e - 窗口焦点事件
另请参见:
Component.enableEvents(long)

processWindowStateEvent

protected void processWindowStateEvent(WindowEvent e)
处理此窗口上发生的窗口状态事件,方法是将它们调度到任何注册的 WindowStateListener 对象。注:不会调用此方法,除非对此窗口启用了窗口状态事件。如果存在以下条件之一,则发生此情况:

注意,如果此事件参数为 null,则此行为不确定,而且可能导致异常。

参数:
e - 窗口状态事件
从以下版本开始:
1.4
另请参见:
Component.enableEvents(long)

setAlwaysOnTop

public final void setAlwaysOnTop(boolean alwaysOnTop)
                          throws SecurityException
更改始终位于顶层的窗口状态。始终位于顶层的窗口是位于所有其他窗口之上的窗口,除了其他也是始终位于顶层的窗口。如果存在多个始终位于顶层的窗口,则不指定它们相互的叠放顺序,而且顺序与平台有关。

如果某个其他窗口已经是 always-on-top,则不指定这些窗口之间的相互顺序(与平台有关)。任何窗口都不会置于 always-on-top 的窗口之上,除了该窗口也是一个 always-on-top 的窗口。

始终位于顶层的窗口拥有的所有窗口将自动成为 always-on-top 的窗口。如果某个窗口不再是 always-on-top 窗口,则其所拥有的窗口也不再是 always-on-top 的窗口。

在对 always-on-top 窗口发出 toBack 后,其始终 always-on-top 状态将被设置为 false

如果 alwaysOnToptrue,则此方法可使窗口 always-on-top。如果窗口是可见的(这包括将窗口前置,即 toFront),则将其“锁定”在最顶层的位置。如果窗口不可见,则除了设置 always-on-top 的属性之外,不执行任何操作。如果以后窗口显示出来,则该窗口将 always-on-top。如果窗口已经位于顶层,则此调用不执行任何操作。

如果 alwaysOnTopfalse,则此方法会将窗口从 always-on-top 更改为常规状态。该窗口保持在最顶层,但对于任何其他窗口来说,其叠放顺序可以以常规方式更改。如果此窗口不是 always-on-top,则不执行任何操作。如果不存在其他 always-on-top 窗口,则对窗口的相对顺序没有影响。

:有些平台可能不支持 always-on-top 窗口。如果平台在运行时支持 always-on-top 功能,则不存在要检测的公共 API。

如果安装了 SecurityManager,则必须授予调用线程 AWTPermission "setWindowAlwaysOnTop" 权限,才能设置此属性值。如果未授予此权限,则此方法将抛出 SecurityException,并且属性的当前值保持不变。

参数:
alwaysOnTop - 窗口始终位于顶层状态的新值
抛出:
SecurityException - 如果调用线程无权设置 always-on-top 属性值。
从以下版本开始:
1.5
另请参见:
isAlwaysOnTop(), toFront(), toBack(), AWTPermission

isAlwaysOnTop

public final boolean isAlwaysOnTop()
返回此窗口是否为 always-on-top 窗口。

返回:
如果此窗口处于 always-on-top 状态,则返回 true,否则,返回 false
从以下版本开始:
1.5
另请参见:
setAlwaysOnTop(boolean)

getFocusOwner

public Component getFocusOwner()
如果此窗口为焦点窗口,则返回其具有焦点窗口的子组件;否则返回 null。

返回:
具有焦点的子组件,如果此窗口不是焦点窗口,则返回 null
另请参见:
getMostRecentFocusOwner(), isFocused()

getMostRecentFocusOwner

public Component getMostRecentFocusOwner()
返回此窗口的子组件,该子组件在此窗口为焦点窗口时将接收焦点。如果此窗口当前为焦点窗口,则此方法将返回与 getFocusOwner() 相同的组件。如果此窗口不是焦点窗口,则返回最近请求焦点的子组件。如果没有子组件请求过焦点,而且这是一个 focusable 窗口,则返回此窗口最初可成为焦点的组件。如果没有子组件请求过焦点,而且这是一个非 focusable 的窗口,则返回 null。

返回:
在此窗口成为焦点窗口时,将接收焦点的子组件
从以下版本开始:
1.4
另请参见:
getFocusOwner(), isFocused(), isFocusableWindow()

isActive

public boolean isActive()
返回此窗口是否为活动窗口。仅有一个框架或对话框可以处于激活状态。本机窗口系统表示具有特殊修饰的活动窗口或其子窗口,如突出的标题栏。活动窗口始终为焦点窗口,或者为拥有该焦点窗口的第一个框架或对话框。

返回:
此窗口是否为活动窗口。
从以下版本开始:
1.4
另请参见:
isFocused()

isFocused

public boolean isFocused()
返回此窗口是否为焦点窗口。如果存在焦点所有者,则焦点窗口就是(或者包含)焦点所有者的窗口。如果不存在焦点所有者,则没有作为焦点的窗口。

如果焦点窗口为一个框架或者一个对话框,则该窗口也是一个活动窗口。否则,活动窗口为拥有焦点窗口的第一个框架或对话框。

返回:
此窗口是否为焦点窗口。
从以下版本开始:
1.4
另请参见:
isActive()

getFocusTraversalKeys

public Set<AWTKeyStroke> getFocusTraversalKeys(int id)
获取此窗口的焦点遍历键。(有关每个键的完整描述,请参阅 setFocusTraversalKeys。)

如果未为此窗口显式设置遍历键,则返回此窗口的父窗口的遍历键。如果未为此窗口的任何祖先显式设置遍历键,则返回当前 KeyboardFocusManager 的默认遍历键。

覆盖:
Container 中的 getFocusTraversalKeys
参数:
id - KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS、KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS、KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS 或 KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS 之一
返回:
指定键的 AWTKeyStroke
抛出:
IllegalArgumentException - 如果 id 不是 KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS、KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS、KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS 或 KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS 之一
从以下版本开始:
1.4
另请参见:
Container.setFocusTraversalKeys(int, java.util.Set), KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS, KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS

setFocusCycleRoot

public final void setFocusCycleRoot(boolean focusCycleRoot)
不执行任何操作,原因是窗口必须始终为焦点遍历循环的根。忽略传入的值。

覆盖:
Container 中的 setFocusCycleRoot
参数:
focusCycleRoot - 忽略此值
从以下版本开始:
1.4
另请参见:
isFocusCycleRoot(), Container.setFocusTraversalPolicy(java.awt.FocusTraversalPolicy), Container.getFocusTraversalPolicy()

isFocusCycleRoot

public final boolean isFocusCycleRoot()
始终返回 true,原因是所有窗口必须为焦点遍历循环的根。

覆盖:
Container 中的 isFocusCycleRoot
返回:
true
从以下版本开始:
1.4
另请参见:
setFocusCycleRoot(boolean), Container.setFocusTraversalPolicy(java.awt.FocusTraversalPolicy), Container.getFocusTraversalPolicy()

getFocusCycleRootAncestor

public final Container getFocusCycleRootAncestor()
始终返回 null,原因是窗口没有祖先;它们表示组件层次结构的顶层。

覆盖:
Component 中的 getFocusCycleRootAncestor
返回:
null
从以下版本开始:
1.4
另请参见:
Container.isFocusCycleRoot()

isFocusableWindow

public final boolean isFocusableWindow()
返回此窗口是否可以成为焦点窗口,也就是说,此窗口或其任何子组件是否可以成为焦点所有者。对于要成为焦点的框架或对话框,其 focusable 的窗口状态必须设置为 true。对于非 focusable 的框架或对话框的窗口,其 focusable 的窗口状态必须设置为 true,其最近拥有的框架或对话框必须显示在屏幕上,而且它必须至少包含其焦点遍历循环中的一个组件。如果未满足这些条件中的任何一个条件,则此窗口及其任何子组件都不能成为焦点所有者。

返回:
如果此窗口可以成为焦点窗口,则返回 true;否则返回 false
从以下版本开始:
1.4
另请参见:
getFocusableWindowState(), setFocusableWindowState(boolean), isShowing(), Component.isFocusable()

getFocusableWindowState

public boolean getFocusableWindowState()
返回如果此窗口满足 isFocusableWindow 中列出的其他要求,其是否可以成为焦点窗口。如果此方法返回 false,则 isFocusableWindow 也将返回 false。如果此方法返回 true,则 isFocusableWindow 可能返回 true,也可能返回 false,具体取决于窗口要成为焦点窗口所必须满足的其他要求。

默认情况下,所有窗口都具有 focusable 的窗口状态 true

返回:
此窗口是否可成为焦点窗口
从以下版本开始:
1.4
另请参见:
isFocusableWindow(), setFocusableWindowState(boolean), isShowing(), Component.setFocusable(boolean)

setFocusableWindowState

public void setFocusableWindowState(boolean focusableWindowState)
设置如果此窗口满足 isFocusableWindow 中列出的其他要求,其是否可以成为焦点窗口。如果此窗口的 focusable 窗口状态设置为 false,则 isFocusableWindow 将返回 false。如果此窗口的 focusable 窗口状态设置为 true,则 isFocusableWindow 可能返回 true,也可能返回 false,具体取决于窗口要成为焦点窗口所必须满足的其他要求。

将窗口的 focusable 状态设置为 false 是 AWT 识别应用程序的标准机制,AWT 是可用作浮动调色板或工具栏的窗口,因此应为非 focusable 窗口。在可见的 Window 上设置焦点状态,可能在某些平台上产生延迟的结果 — 仅当 Window 成为隐藏窗口,然后再可见后才发生实际的更改。为确保行为跨平台的一致性,当 WIndow 不可见时设置 Window 的 focusable 状态,然后再显示它。

参数:
focusableWindowState - 此窗口是否可以成为焦点窗口
从以下版本开始:
1.4
另请参见:
isFocusableWindow(), getFocusableWindowState(), isShowing(), Component.setFocusable(boolean)

addPropertyChangeListener

public void addPropertyChangeListener(PropertyChangeListener listener)
将 PropertyChangeListener 添加到侦听器列表。为此类的所有边界属性注册侦听器,其中包括以下属性: 注意,如果此窗口在继承一个边界属性,则不引发任何事件来响应继承属性中的更改。

如果侦听器为 null,则不抛出异常,而且不执行任何操作。

覆盖:
Container 中的 addPropertyChangeListener
参数:
listener - 要添加的 PropertyChangeListener
另请参见:
Component.removePropertyChangeListener(java.beans.PropertyChangeListener), addPropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)

addPropertyChangeListener

public void addPropertyChangeListener(String propertyName,
                                      PropertyChangeListener listener)
将 PropertyChangeListener 添加到某个特定属性的侦听器列表。指定的属性可以是用户定义的,也可以是下列属性之一: 注意,如果此窗口在继承一个边界属性,则不引发任何事件来响应继承属性中的更改。

如果侦听器为 null,则不抛出异常,而且不执行任何操作。

覆盖:
Container 中的 addPropertyChangeListener
参数:
propertyName - 上面列出的属性名之一
listener - 要添加的 PropertyChangeListener
另请参见:
addPropertyChangeListener(java.beans.PropertyChangeListener), Component.removePropertyChangeListener(java.beans.PropertyChangeListener)

postEvent

@Deprecated
public boolean postEvent(Event e)
已过时。 从 JDK version 1.1 开始,由 dispatchEvent(AWTEvent) 取代。

指定者:
接口 MenuContainer 中的 postEvent
覆盖:
Component 中的 postEvent

isShowing

public boolean isShowing()
检查此窗口是否显示在屏幕上。

覆盖:
Component 中的 isShowing
返回:
如果正在显示组件,则返回 true;否则返回 false
另请参见:
Component.setVisible(boolean)

applyResourceBundle

@Deprecated
public void applyResourceBundle(ResourceBundle rb)
已过时。 从 J2SE 1.4 开始,由 Component.applyComponentOrientation 取代。


applyResourceBundle

@Deprecated
public void applyResourceBundle(String rbName)
已过时。 从 J2SE 1.4 开始,由 Component.applyComponentOrientation 取代。


getAccessibleContext

public AccessibleContext getAccessibleContext()
获取与此窗口关联的 AccessibleContext。对于窗口,AccessibleContext 采取 AccessibleAWTWindow 的形式。必要时创建新的 AccessibleAWTWindow 实例。

指定者:
接口 Accessible 中的 getAccessibleContext
覆盖:
Component 中的 getAccessibleContext
返回:
用作此窗口的 AccessibleContext 的 AccessibleAWTWindow

getGraphicsConfiguration

public GraphicsConfiguration getGraphicsConfiguration()
此方法返回由此窗口使用的 GraphicsConfiguration。

覆盖:
Component 中的 getGraphicsConfiguration
返回:
Component 使用的 GraphicsConfiguration,或者返回 null

setLocationRelativeTo

public void setLocationRelativeTo(Component c)
设置此窗口相对于指定组件的位置。如果此组件当前未显示,或者 cnull,则此窗口位于屏幕的中央。如果该组件的底部在视线以外,则将该窗口放置在 Component 最接近窗口中心的一侧。因此,如果 Component 在屏幕的右部,则 Window 将被放置在左部,反之亦然。

参数:
c - 确定窗口位置涉及的组件
从以下版本开始:
1.4

createBufferStrategy

public void createBufferStrategy(int numBuffers)
为此组件上的多缓冲创建一个新策略。多缓冲对于呈现性能非常有用。此方法试图根据提供的缓冲数创建可用的最佳策略。它将始终根据该缓冲数创建 BufferStrategy。首先尝试 page-flipping 策略,然后使用加速缓冲尝试 blitting 策略。最后使用不加速的 blitting 策略。

每次调用此方法时,就丢弃此组件的现有缓冲策略。

参数:
numBuffers - 要创建的缓冲数
抛出:
IllegalArgumentException - 如果 numBuffers 小于 1。
IllegalStateException - 如果组件不可显示
从以下版本开始:
1.4
另请参见:
Component.isDisplayable(), getBufferStrategy()

createBufferStrategy

public void createBufferStrategy(int numBuffers,
                                 BufferCapabilities caps)
                          throws AWTException
根据所需缓冲功能为此组件上的多缓冲创建新策略。这将很有用,例如,可能仅需要加速的内存或页面翻转(由缓冲功能指定)。

每当调用此方法时,就丢弃此组件的现有缓冲策略。

参数:
numBuffers - 要创建的缓冲数,包括前缓冲
caps - 创建缓冲策略所需的功能;不能为 null
抛出:
AWTException - 如果提供的功能不受支持或未得到满足,则会发生此情况,例如,如果当前无足够的可用加速内存,或者指定了页翻转,但不可能实现。
IllegalArgumentException - 如果 numBuffers 小于 1,或者 caps 为 null
从以下版本开始:
1.4
另请参见:
getBufferStrategy()

getBufferStrategy

public BufferStrategy getBufferStrategy()
返回:
此组件使用的缓冲策略
从以下版本开始:
1.4
另请参见:
createBufferStrategy(int)

setLocationByPlatform

public void setLocationByPlatform(boolean locationByPlatform)
设置在下次窗口可见时,此窗口是应显示在本机窗口系统的默认位置,还是应显示在当前位置(由 getLocation 返回)。此行为模拟显示的本机窗口,而不以编程方式设置其位置。如果未显式设置窗口的位置,大多数窗口操作系统将层叠显示窗口。一旦窗口显示在屏幕上,其实际位置就被确定。

还可以通过将系统属性 "java.awt.Window.locationByPlatform" 设置为 "true" 来启用此行为,但应优先调用此方法。

在调用 setLocationByPlatform 清除该窗口的此属性之后,调用 setVisiblesetLocationsetBounds

例如,在执行下面的代码之后:

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
从以下版本开始:
1.5
另请参见:
Component.setLocation(int, int), isShowing(), Component.setVisible(boolean), isLocationByPlatform(), System.getProperty(String)

isLocationByPlatform

public boolean isLocationByPlatform()
如果在此窗口下次可见时,显示在本机窗口操作系统的默认位置,则返回 true。如果窗口显示在屏幕上,则此方法始终返回 false

返回:
此窗口是否将显示在默认位置
从以下版本开始:
1.5
另请参见:
setLocationByPlatform(boolean), isShowing()

setBounds

public void setBounds(int x,
                      int y,
                      int width,
                      int height)
重绘组件的指定矩形区域。

覆盖:
Component 中的 setBounds
参数:
x - 组件的新 x 坐标
y - 组件的新 y 坐标
width - 组件的新 width
height - 组件的新 height
另请参见:
Component.getBounds(), Component.setLocation(int, int), Component.setLocation(Point), Component.setSize(int, int), Component.setSize(Dimension)

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策