|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
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。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
构造方法详细信息 |
---|
public Window(Frame owner)
Frame
作为其所有者。该窗口将不可聚焦,除非其所有者正显示在屏幕上。
如果存在安全管理器,则此方法首先调用安全管理器的 checkTopLevelWindow
方法(this
作为其参数),以确定是否必须使用警告标志显示该窗口。
owner
- 要充当所有者的 Frame
;如果此窗口没有所有者,则该参数为 null
IllegalArgumentException
- 如果 owner
的 GraphicsConfiguration
不是来自屏幕设备
HeadlessException
- 当 GraphicsEnvironment.isHeadless
返回 true
时GraphicsEnvironment.isHeadless()
,
SecurityManager.checkTopLevelWindow(java.lang.Object)
,
isShowing()
public Window(Window owner)
Window
作为其所有者。此窗口将不可聚焦,除非其最近拥有的 Frame
或 Dialog
正显示在屏幕上。
如果存在安全管理器,则此方法首先调用安全管理器的 checkTopLevelWindow
方法(this
作为其参数),以确定是否必须使用警告标志显示该窗口。
owner
- 要充当所有者的 Window
;如果此窗口没有所有者,则该参数为 null
IllegalArgumentException
- 如果 owner
的 GraphicsConfiguration
不是来自屏幕设备
HeadlessException
- 当 GraphicsEnvironment.isHeadless
返回 true
时GraphicsEnvironment.isHeadless()
,
SecurityManager.checkTopLevelWindow(java.lang.Object)
,
isShowing()
public Window(Window owner, GraphicsConfiguration gc)
Window
和屏幕设备的 GraphicsConfiguration
。该窗口将不可聚焦,除非其最近拥有的 Frame
或 Dialog
正显示在屏幕上。
如果存在安全管理器,则此方法首先调用安全管理器的 checkTopLevelWindow
方法(this
作为其参数),以确定是否必须使用警告标志显示该窗口。
owner
- 要作为所有者的窗口;如果此窗口没有所有者,则该参数为 null
gc
- 目标屏幕设备的 GraphicsConfiguration
;如果 gc
为 null
,则使用系统默认的 GraphicsConfiguration
IllegalArgumentException
- 如果 gc
不是来自屏幕设备
HeadlessException
- 当 GraphicsEnvironment.isHeadless()
返回 true
时GraphicsEnvironment.isHeadless()
,
SecurityManager.checkTopLevelWindow(java.lang.Object)
,
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
列表,寻找最佳尺寸的图像。如果列表包含几个大小相同的图像,则使用第一个图像。
未指定图标的、没有所有者的窗口将使用平台默认的图标。如果没有显示重写,被拥有的窗口的图标可以从其所有者继承。将图标设置为 null
或空列表将恢复默认行为。
注:根据上下文的不同(例如,窗口装饰、窗口列表、任务栏等),本机窗口系统可以使用不同尺寸的不同图像表示一个窗口。也可以对所有上下文使用一个图像,或者根本不用图像。
icons
- 要显示的图标图像列表。getIconImages()
,
setIconImage(Image)
public void setIconImage(Image image)
将单个图像指定为窗口的图标时,可以使用此方法代替 setIconImages()
。
以下语句:
setIconImage(image);等价于:
ArrayListimageList = new ArrayList (); imageList.add(image); setIconImages(imageList);
注:根据上下文的不同(例如,窗口装饰、窗口列表、任务栏等),本机窗口系统可以使用不同尺寸的不同图像表示一个窗口。也可以对所有上下文使用一个图像,或者根本不用图像。
image
- 要显示的图标图像。setIconImages(java.util.List extends java.awt.Image>)
,
getIconImages()
public void addNotify()
Container
中的 addNotify
Component.isDisplayable()
,
Container.removeNotify()
public void removeNotify()
Container
中的 removeNotify
Component.isDisplayable()
,
Container.addNotify()
public void pack()
Component.isDisplayable()
public void setMinimumSize(Dimension minimumSize)
getMinimumSize
将总是返回此值。如果当前窗口的大小小于 minimumSize
,则窗口的大小将自动增大到最小大小。
如果随后调用 setSize
或 setBounds
方法,且调用时使用的宽度或高度小于 setMinimumSize
指定的宽度或高度,则窗口将自动增大到 minimumSize
值。将最小大小设置为 null
将还原默认行为。
如果用户试图将窗口大小调整到 minimumSize
值以下,则该调整操作将受到限制。
此行为与平台有关。
Component
中的 setMinimumSize
minimumSize
- 此窗口新的最小大小Component.setMinimumSize(java.awt.Dimension)
,
Container.getMinimumSize()
,
Component.isMinimumSizeSet()
,
setSize(Dimension)
public void setSize(Dimension d)
d.width
,高度为 d.height
。
如果 d.width
值或 d.height
值小于之前调用 setMinimumSize
指定的最小大小,则它将自动增大。
Component
中的 setSize
d
- 指定组件新大小的尺寸Component.getSize()
,
setBounds(int, int, int, int)
,
setMinimumSize(java.awt.Dimension)
public void setSize(int width, int height)
width
,高度为 height
。
如果 width
值或 height
值小于之前调用 setMinimumSize
指定的最小大小,则它将自动增大。
Component
中的 setSize
width
- 组件的新宽度,单位是像素height
- 组件的新高度,单位是像素Component.getSize()
,
setBounds(int, int, int, int)
,
setMinimumSize(java.awt.Dimension)
@Deprecated public void reshape(int x, int y, int width, int height)
setBounds(int, int, int, int)
取代。
Component
中的 reshape
public void setVisible(boolean b)
b
的值显示或隐藏此 Window
。
Component
中的 setVisible
b
- 如为 true
,则使 Window
可见,否则隐藏 Window
。
如果 Window
和/或其所有者还不能显示,则都不显示。在使 Window
可见之前将验证它。
如果 Window
已经可见,则此方法将 Window
带到最前面。
如为 false
,则隐藏此 Window
、此 Window
的子组件,以及它拥有的所有子级。
调用 #setVisible(true)
可以重新使 Window
及其子组件可见。
Component.isDisplayable()
,
Component.setVisible(boolean)
,
toFront()
,
dispose()
@Deprecated public void show()
Component.setVisible(boolean)
取代。
Component
中的 show
Component.isDisplayable()
,
toFront()
@Deprecated public void hide()
Component.setVisible(boolean)
取代。
show
可以重新使窗口及其子组件可见。
Component
中的 hide
show()
,
dispose()
public void dispose()
Window
、其子组件及其拥有的所有子组件所使用的所有本机屏幕资源。即这些 Component
的资源将被破坏,它们使用的所有内存都将返回到操作系统,并将它们标记为不可显示。
通过随后调用 pack
或 show
重新构造本机资源,可以再次显示 Window
及其子组件。重新创建的 Window
及其子组件的状态与释放 Window
时这些对象的状态一致(不考虑这些操作之间的其他更改)。
注:当 Java 虚拟机 (VM) 中最后的可显示窗口被释放后,虚拟机可能会终止。有关更多信息,请参阅 AWT Threading Issues。
Component.isDisplayable()
,
pack()
,
show()
public void toFront()
将此窗口放在堆栈顺序的顶层,并在此虚拟机中显示在所有其他窗口的上面。如果此窗口不可见,则不会发生任何操作。有些平台不允许拥有其他窗口的窗口显示在它所拥有的窗口之上。有些平台可能不允许此虚拟机将其窗口放在本机应用程序窗口或其他虚拟机窗口之上。此权限可能取决于此虚拟机中的窗口是否已被设为焦点窗口。将进行所有尝试来移动此窗口,使其位于堆栈顺序中尽可能靠前的位置;但是,开发人员不应假定此方法在所有情况下都可以将此窗口移到所有其他窗口之上。
由于本机窗口系统多种多样,因此无法保证对焦点窗口和活动窗口的更改能够实现。在此窗口接收 WINDOW_GAINED_FOCUS 或 WINDOW_ACTIVATED 事件之前,开发人员不得假定此窗口是焦点窗口或活动窗口。在顶层窗口是焦点窗口的平台上,此方法可能使此窗口成为焦点窗口(如果它还不是焦点窗口)。在堆栈顺序通常不影响焦点窗口的平台上,此方法可能维持焦点窗口和活动窗口不变。
如果此方法导致此窗口成为焦点窗口,而且此窗口是一个 Frame 或 Dialog,则它也将被激活。如果此窗口是焦点窗口,但它不是一个 Frame 或 Dialog,则拥有此窗口的第一个 Frame 或 Dialog 将被激活。
如果此窗口被模式对话框 (modal dialog) 阻塞,则阻塞对话框将置于最前端,仍然处于被阻塞窗口的前方。
toBack()
public void toBack()
在此虚拟机中,将此窗口放在堆栈顺序的底部,并在其他所有窗口之后显示此窗口。如果此窗口不可见,则不发生任何操作。有些平台不允许其他窗口拥有的窗口出现在其所有者下方。将进行所有尝试来移动此窗口,使其位于堆栈顺序中尽可能靠后的位置;不过,开发人员不应假定此方法在所有情况下都可以将此窗口移到所有其他窗口之下。
由于本机窗口系统多种多样,因此无法保证对焦点窗口和活动窗口的更改能够实现。在此窗口接收 WINDOW_LOST_FOCUS 或 WINDOW_DEACTIVATED 事件之前,开发人员不得假定此窗口不再是焦点窗口或活动窗口。在顶层窗口为焦点窗口的平台上,此方法可能导致此窗口不再是焦点状态。在此情况下,此虚拟机中紧跟其后的可作为焦点的窗口将成为焦点窗口。在堆栈顺序通常不影响焦点窗口的平台上,此方法可能维持焦点窗口和活动窗口不变。
toFront()
public Toolkit getToolkit()
Component
中的 getToolkit
Toolkit
,
Toolkit.getDefaultToolkit()
,
Component.getToolkit()
public final String getWarningString()
checkTopLevelWindow
方法时,该方法返回 false
,那么窗口是不安全的。
如果此窗口是安全的,则 getWarningString
返回 null
。如果此窗口是不安全的,则此方法检查系统属性 awt.appletWarning
,并返回此属性的字符串值。
SecurityManager.checkTopLevelWindow(java.lang.Object)
public Locale getLocale()
Locale
对象。如果未设置区域,则返回默认的区域。
Component
中的 getLocale
Locale
public InputContext getInputContext()
Component
中的 getInputContext
null
Component.getInputContext()
public void setCursor(Cursor cursor)
如果 Java 平台实现和/或本机系统不支持更改鼠标光标形状,那么此方法将没有任何视觉效果。
Component
中的 setCursor
cursor
- 由 Cursor
类定义的常量之一。如果此参数为 null,则此窗口的光标将被设置为类型 Cursor.DEFAULT_CURSOR。Component.getCursor()
,
Cursor
public Window getOwner()
public Window[] getOwnedWindows()
public static Window[] getWindows()
Window
(包括被拥有的和不被拥有的)组成。
如果从 applet 调用此方法,则返回数组只包括该 applet 可访问的 Window
。
警告: 此方法可以返回系统创建的窗口,如打印对话框。应用程序不应该假定这些对话框存在,也不应该假定任何与这些对话框有关的内容(如组件位置、LayoutManager
或序列化)存在。
Frame.getFrames()
,
getOwnerlessWindows()
public static Window[] getOwnerlessWindows()
Window
组成。它们包括 Frame
以及没有所有者的 Dialog
和 Window
。
如果从 applet 调用此方法,则返回数组只包括该 applet 可访问的 Window
。
警告: 此方法可以返回系统创建的窗口,如打印对话框。应用程序不应该假定这些对话框存在,也不应该假定任何与这些对话框有关的内容(如组件位置、LayoutManager
或序列化)存在。
Frame.getFrames()
,
getWindows(sun.awt.AppContext)
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)
有关 AWT 线程模式的详细信息,请参考 AWT Threading Issues。
l
- 窗口侦听器removeWindowListener(java.awt.event.WindowListener)
,
getWindowListeners()
public void addWindowStateListener(WindowStateListener l)
l
为 null
,则不抛出任何异常,且不执行任何操作。
有关 AWT 线程模式的详细信息,请参考 AWT Threading Issues。
l
- 窗口状态侦听器removeWindowStateListener(java.awt.event.WindowStateListener)
,
getWindowStateListeners()
public void addWindowFocusListener(WindowFocusListener l)
有关 AWT 线程模式的详细信息,请参考 AWT Threading Issues。
l
- 窗口焦点侦听器removeWindowFocusListener(java.awt.event.WindowFocusListener)
,
getWindowFocusListeners()
public void removeWindowListener(WindowListener l)
有关 AWT 线程模式的详细信息,请参考 AWT Threading Issues。
l
- 窗口侦听器addWindowListener(java.awt.event.WindowListener)
,
getWindowListeners()
public void removeWindowStateListener(WindowStateListener l)
l
为 null
,则不抛出任何异常,且不执行任何操作。
有关 AWT 线程模式的详细信息,请参考 AWT Threading Issues。
l
- 窗口状态侦听器addWindowStateListener(java.awt.event.WindowStateListener)
,
getWindowStateListeners()
public void removeWindowFocusListener(WindowFocusListener l)
有关 AWT 线程模式的详细信息,请参考 AWT Threading Issues。
l
- 窗口焦点侦听器addWindowFocusListener(java.awt.event.WindowFocusListener)
,
getWindowFocusListeners()
public WindowListener[] getWindowListeners()
WindowListener
;如果当前未注册窗口侦听器,则返回一个空数组addWindowListener(java.awt.event.WindowListener)
,
removeWindowListener(java.awt.event.WindowListener)
public WindowFocusListener[] getWindowFocusListeners()
WindowFocusListener
;如果当前未注册窗口焦点侦听器,则返回一个空数组addWindowFocusListener(java.awt.event.WindowFocusListener)
,
removeWindowFocusListener(java.awt.event.WindowFocusListener)
public WindowStateListener[] getWindowStateListeners()
WindowStateListener
;如果当前未注册窗口状态侦听器,则返回一个空数组addWindowStateListener(java.awt.event.WindowStateListener)
,
removeWindowStateListener(java.awt.event.WindowStateListener)
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
的类或接口getWindowListeners()
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)
protected void processWindowEvent(WindowEvent e)
addWindowListener
注册 WindowListener 对象
enableEvents
启用窗口事件
注意,如果此事件参数为 null
,则此行为是不明确的,可能导致异常。
e
- 窗口事件Component.enableEvents(long)
protected void processWindowFocusEvent(WindowEvent e)
addWindowFocusListener
注册 WindowFocusListener
enableEvents
启用窗口焦点事件
注意,如果此事件参数为 null
,则此行为是不明确的,可能导致异常。
e
- 窗口焦点事件Component.enableEvents(long)
protected void processWindowStateEvent(WindowEvent e)
WindowStateListener
对象。注:只有为此组件启用了窗口事件时,此方法才有可能被调用。这在存在以下条件之一时发生:
addWindowStateListener
注册 WindowStateListener
enableEvents
启用窗口状态事件
注意,如果此事件参数为 null
,则此行为是不明确的,可能导致异常。
e
- 窗口状态事件Component.enableEvents(long)
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 窗口。当 always-on-top 窗口调用 toBack
时,其 always-on-top 状态将设置为 false
。
如果对某个窗口调用此方法且参数值为 true
,并且该窗口可见,平台也支持此窗口为 always-on-top,那么该窗口将立即向前,“锁定”在最顶层位置。如果窗口当前不可见,那么此方法将 always-on-top 状态设置为 true
,但窗口不会向前。如果以后显示该窗口,那么它将 always-on-top。
如果 alwaysOnTop
为 true
,则此方法可使窗口 always-on-top。如果窗口是可见的(这包括将窗口前置,即 toFront
),则将其“锁定”在最顶层的位置。如果窗口不可见,则除了设置 always-on-top 的属性之外,不执行任何操作。如果以后窗口显示出来,则该窗口将 always-on-top。如果窗口已经位于顶层,则此调用不执行任何操作。
如果对某个窗口调用此方法且参数值为 false
,则 always-on-top 状态被设置为常规。该窗口保持在最顶层,但对于任何其他窗口来说,其 z-order 可以更改。对已经是常规状态的窗口调用此方法且参数值为 false
将无效。如果没有其他 always-on-top 窗口,将 always-on-top 状态设置为 false 对窗口的相对 z-order 没有影响。
注:有些平台可能不支持 always-on-top 窗口。要检测当前平台是否支持 always-on-top 窗口,请使用 Toolkit.isAlwaysOnTopSupported()
和 isAlwaysOnTopSupported()
。如果工具包或此窗口不支持 always-on-top 模式,则调用此方法无效。
如果安装了 SecurityManager,则必须授予调用线程 AWTPermission "setWindowAlwaysOnTop" 权限,才能设置此属性值。如果未授予此权限,则此方法将抛出 SecurityException,并且属性的当前值保持不变。
alwaysOnTop
- 如果窗口应该始终位于其他窗口上方,则该参数为 true
SecurityException
- 如果调用线程无权设置 always-on-top 属性值。isAlwaysOnTop()
,
toFront()
,
toBack()
,
AWTPermission
,
isAlwaysOnTopSupported()
,
Toolkit.isAlwaysOnTopSupported()
public boolean isAlwaysOnTopSupported()
true
;如果此窗口不支持 always-on-top 模式,或者工具包不支持 always-on-top 窗口,则返回 false
。setAlwaysOnTop(boolean)
,
Toolkit.isAlwaysOnTopSupported()
public final boolean isAlwaysOnTop()
true
,否则,返回 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,那么它同时也是一个活动窗口。否则,活动窗口将是拥有焦点窗口的第一个 Frame 或 Dialog。
isActive()
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 之一
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)
Container
中的 setFocusCycleRoot
focusCycleRoot
- 忽略此值isFocusCycleRoot()
,
Container.setFocusTraversalPolicy(java.awt.FocusTraversalPolicy)
,
Container.getFocusTraversalPolicy()
public final boolean isFocusCycleRoot()
true
,因为所有窗口必须是焦点遍历循环的根。
Container
中的 isFocusCycleRoot
true
setFocusCycleRoot(boolean)
,
Container.setFocusTraversalPolicy(java.awt.FocusTraversalPolicy)
,
Container.getFocusTraversalPolicy()
public final Container getFocusCycleRootAncestor()
null
,因为窗口没有祖先;它们表示组件层次结构的顶层。
Component
中的 getFocusCycleRootAncestor
null
Container.isFocusCycleRoot()
public final boolean isFocusableWindow()
true
。对于不可成为焦点的 Frame 或 Dialog 的窗口,其可成为焦点的窗口状态必须设置为 true
,其最近拥有的 Frame 或 Dialog 必须显示在屏幕上,而且它必须至少包含其焦点遍历循环中的一个组件。如果未满足这些条件中的任何一个条件,则此窗口及其任何子组件都不能成为焦点所有者。
true
;否则返回 false
getFocusableWindowState()
,
setFocusableWindowState(boolean)
,
isShowing()
,
Component.isFocusable()
public boolean getFocusableWindowState()
isFocusableWindow
中列出的其他要求,其是否可以成为焦点窗口。如果此方法返回 false
,则 isFocusableWindow
也将返回 false
。如果此方法返回 true
,则 isFocusableWindow
可能返回 true
,也可能返回 false
,具体取决于窗口要成为焦点窗口所必须满足的其他要求。
默认情况下,所有窗口都具有 focusable 的窗口状态 true
。
isFocusableWindow()
,
setFocusableWindowState(boolean)
,
isShowing()
,
Component.setFocusable(boolean)
public void setFocusableWindowState(boolean focusableWindowState)
isFocusableWindow
中列出的其他要求,其是否可以成为焦点窗口。如果此窗口可成为焦点窗口状态设置为 false
,则 isFocusableWindow
将返回 false
。如果此窗口的可成为焦点的窗口状态设置为 true
,则 isFocusableWindow
可能返回 true
,也可能返回 false
,具体取决于要成为焦点的窗口所必须满足的其他要求。
将窗口的焦点状态设置为 false
是 AWT 标识应用程序的标准机制,AWT 是可用作浮动调色板或工具栏的窗口,因此应为是不可为焦点的窗口。在可见的 Window
上设置焦点状态,可能在某些平台上产生延迟的结果 — 只有在 Window
成为隐藏窗口,然后再可见后才发生实际的更改。为确保行为跨平台的一致性,当 Window
不可见时设置 Window
的焦点状态,然后再显示它。
focusableWindowState
- 此窗口是否可以成为焦点窗口isFocusableWindow()
,
getFocusableWindowState()
,
isShowing()
,
Component.setFocusable(boolean)
public void addPropertyChangeListener(PropertyChangeListener listener)
如果侦听器为 null,则不抛出任何异常,且不执行任何操作。
Container
中的 addPropertyChangeListener
listener
- 要添加的 PropertyChangeListenerComponent.removePropertyChangeListener(java.beans.PropertyChangeListener)
,
addPropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)
public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener)
如果侦听器为 null,则不抛出任何异常,且不执行任何操作。
Container
中的 addPropertyChangeListener
propertyName
- 上文列出的属性名之一listener
- 要添加的 PropertyChangeListeneraddPropertyChangeListener(java.beans.PropertyChangeListener)
,
Component.removePropertyChangeListener(java.beans.PropertyChangeListener)
@Deprecated public boolean postEvent(Event e)
dispatchEvent(AWTEvent)
取代。
MenuContainer
中的 postEvent
Component
中的 postEvent
public boolean isShowing()
Component
中的 isShowing
true
;否则返回 false
Component.setVisible(boolean)
@Deprecated public void applyResourceBundle(ResourceBundle rb)
Component.applyComponentOrientation
取代。
@Deprecated public void applyResourceBundle(String rbName)
Component.applyComponentOrientation
取代。
public AccessibleContext getAccessibleContext()
Accessible
中的 getAccessibleContext
Component
中的 getAccessibleContext
public GraphicsConfiguration getGraphicsConfiguration()
Component
中的 getGraphicsConfiguration
Component
使用的 GraphicsConfiguration
,或者返回 null
public void setLocationRelativeTo(Component c)
如果组件当前未显示,或者 c
为 null
,则此窗口将置于屏幕的中央。中点可以使用 GraphicsEnvironment.getCenterPoint
确定。
如果该组件的底部在屏幕外,则将该窗口放置在 Component
最接近窗口中心的一侧。因此,如果 Component
在屏幕的右部,则 Window
将被放置在左部,反之亦然。
c
- 确定窗口位置涉及的组件GraphicsEnvironment.getCenterPoint()
public void createBufferStrategy(int numBuffers)
BufferStrategy
。首先尝试 page-flipping 策略,然后使用加速缓冲区尝试 blitting 策略。最后使用不加速的 blitting 策略。
每次调用此方法时,将丢弃此组件的现有缓冲策略。
numBuffers
- 要创建的缓冲区数
IllegalArgumentException
- 如果 numBuffers 小于 1。
IllegalStateException
- 如果组件不可显示Component.isDisplayable()
,
getBufferStrategy()
public void createBufferStrategy(int numBuffers, BufferCapabilities caps) throws AWTException
每次调用此方法时,将丢弃此组件的现有缓冲策略。
numBuffers
- 要创建的缓冲区数,包括前缓冲区caps
- 创建缓冲策略所需的能力;不能为 null
AWTException
- 如果提供的能力不受支持或未得到满足;这是有可能发生的,例如,如果当前无足够的可用加速内存,或者指定了页翻转,但不可能实现。
IllegalArgumentException
- 如果 numBuffers 小于 1,或者 caps 为 null
getBufferStrategy()
public BufferStrategy getBufferStrategy()
BufferStrategy
。如果尚未创建或已经释放了 BufferStrategy
,那么此方法将返回 null。
createBufferStrategy(int)
public void setLocationByPlatform(boolean locationByPlatform)
getLocation
返回)。此行为模拟显示的本机窗口,而不是以编程方式设置其位置。如果未显式设置窗口的位置,那么大多数窗口操作系统将重叠显示窗口。一旦窗口显示在屏幕上,其实际位置就被确定。
还可以通过将系统属性 "java.awt.Window.locationByPlatform" 设置为 "true" 来启用此行为,但应优先考虑调用此方法。
在调用 setLocationByPlatform
清除窗口的此属性之后,调用 setVisible
、setLocation
和 setBounds
。
例如,在执行以下代码后:
窗口将显示在平台的默认位置,setLocationByPlatform(true); setVisible(true); boolean flag = isLocationByPlatform();
flag
将为 false
。
在以下示例中:
窗口将显示在 (10, 10) 的位置,setLocationByPlatform(true); setLocation(10, 10); boolean flag = isLocationByPlatform(); setVisible(true);
flag
将为 false
。
locationByPlatform
- 如果此窗口应出现在默认位置,则为 true
,如果应出现在当前位置,则为 false
IllegalComponentStateException
- 如果此窗口显示在屏幕上,且 locationByPlatform 为 true
。Component.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
指定新的大小。
如果 width
值或 height
值小于之前调用 setMinimumSize
指定的最小大小,则它的值将自动增加。
Component
中的 setBounds
x
- 组件的新 x 坐标y
- 组件的新 y 坐标width
- 组件的新 width
height
- 组件的新 height
Component.getBounds()
,
Component.setLocation(int, int)
,
Component.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
指定的最小大小,则它的值将自动增加。
Component
中的 setBounds
r
- 此组件的新的有界矩形Component.getBounds()
,
Component.setLocation(int, int)
,
Component.setLocation(Point)
,
setSize(int, int)
,
setSize(Dimension)
,
setMinimumSize(java.awt.Dimension)
,
setLocationByPlatform(boolean)
,
isLocationByPlatform()
|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。