- 所有已实现的接口:
-
ImageObserver
,MenuContainer
,Serializable
,Accessible
- 直接已知的子类:
-
BasicToolBarUI.DragWindow
,Dialog
,Frame
,JWindow
Window
对象是一个没有边框和菜单栏的顶层窗口。窗口的默认布局是BorderLayout
。
窗口在构造时必须有框架、对话框或另一个窗口作为其所有者。
在多屏幕环境中,您可以通过使用Window(Window, GraphicsConfiguration)
构造函数在不同的屏幕设备上创建一个Window
。 GraphicsConfiguration
对象是目标屏幕设备的GraphicsConfiguration
对象之一。
在虚拟设备多屏幕环境中,桌面区域可能跨越多个物理屏幕设备,所有配置的边界都是相对于虚拟设备坐标系统的。虚拟坐标系统的原点位于主物理屏幕的左上角。根据主屏幕在虚拟设备中的位置,负坐标是可能的,如下图所示。
在这样的环境中,调用setLocation
时,必须向该方法传递虚拟坐标。类似地,对Window
调用getLocationOnScreen
将返回虚拟设备坐标。调用GraphicsConfiguration
的getBounds
方法可找到其在虚拟坐标系统中的原点。
以下代码将Window
的位置设置为相对于相应GraphicsConfiguration
的物理屏幕原点(10, 10)。如果不考虑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
放置和调整大小,使其更符合桌面设置。
桌面窗口管理系统可能会对窗口应用视觉效果,如光环、阴影、动态效果和动画。这些效果超出了AWT的知识和控制范围,因此根据本规范的目的,它们不被视为顶层窗口的一部分。
由于本地事件处理的异步性质,getBounds
、getLocation
、getLocationOnScreen
和getSize
返回的结果在屏幕上可能不反映窗口的实际几何形状,直到最后一个请求被处理。在处理后续请求的过程中,这些值可能会相应地更改,而窗口管理系统则会满足这些请求。
应用程序可以任意设置不可见Window
的大小和位置,但是当Window
变为可见时,窗口管理系统可能会随后更改其大小和/或位置。将生成一个或多个ComponentEvent
来指示新的几何形状。
窗口能够生成以下WindowEvents: WindowOpened, WindowClosed, WindowGainedFocus, WindowLostFocus。
- 自从:
- 1.0
- 参见:
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected class
此类为Window
类实现了辅助功能支持。static enum
可用窗口类型的枚举。Nested classes/interfaces declared in class java.awt.Container
Container.AccessibleAWTContainer
Nested classes/interfaces declared in class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
Field Summary
Fields declared in class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Fields declared in interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
通过创建与其本机屏幕资源的连接,使此窗口可显示。void
向监听器列表添加一个PropertyChangeListener。void
addPropertyChangeListener
(String propertyName, PropertyChangeListener listener) 向特定属性的监听器列表添加一个PropertyChangeListener。void
添加指定的窗口焦点监听器以接收来自此窗口的窗口事件。void
添加指定的窗口监听器以接收来自此窗口的窗口事件。void
添加指定的窗口状态监听器以接收来自此窗口的窗口事件。void
applyResourceBundle
(String rbName) 已弃用。void
已弃用。自J2SE 1.4起,已被Component.applyComponentOrientation
取代。void
createBufferStrategy
(int numBuffers) 在此组件上创建多缓冲的新策略。void
createBufferStrategy
(int numBuffers, BufferCapabilities caps) 在此组件上使用所需的缓冲区功能创建多缓冲的新策略。void
dispose()
释放此Window
、其子组件和所有拥有的子级使用的所有本机屏幕资源。获取与此窗口关联的AccessibleContext。获取此窗口的背景颜色。返回此组件使用的BufferStrategy
。boolean
返回此窗口是否可以成为焦点窗口,如果满足isFocusableWindow
中概述的其他要求。final Container
始终返回null
,因为窗口没有祖先;它们代表组件层次结构的顶部。如果此窗口具有焦点,则返回此窗口的焦点子组件;否则返回null。getFocusTraversalKeys
(int id) 获取此窗口的焦点遍历键。返回要显示为此窗口图标的图像序列。获取此窗口的输入上下文。<T extends EventListener>
T[]getListeners
(Class<T> listenerType) 返回当前在此Window
上注册为FooListener
的所有对象的数组。获取与此窗口关联的Locale
对象,如果已设置区域设置。返回此窗口的模态排除类型。返回此窗口在获得焦点时将接收焦点的子组件。float
返回窗口的不透明度。Window[]
返回此窗口当前拥有的所有窗口的数组。getOwner()
返回此窗口的所有者。static Window[]
返回此应用程序创建的所有没有所有者的Window
的数组。getShape()
返回窗口的形状。返回此框架的工具包。getType()
返回窗口的类型。final String
获取与此窗口显示的警告字符串。返回在此窗口上注册的所有窗口焦点监听器的数组。返回在此窗口上注册的所有窗口监听器的数组。static Window[]
返回此应用程序创建的所有Window
的数组,包括有所有者和无所有者的窗口。返回在此窗口上注册的所有窗口状态监听器的数组。void
hide()
已弃用。自JDK版本1.5起,已被setVisible(boolean)
取代。boolean
isActive()
返回此窗口是否活动。final boolean
返回此窗口是否始终位于顶部。boolean
返回此窗口是否支持始终位于顶部模式。boolean
返回此窗口在随后显示(通过调用setVisible(true)
)或移动到前台(通过调用toFront()
)时是否应接收焦点。final boolean
返回此窗口是否可以成为焦点窗口,即此窗口或其任何子组件是否可以成为焦点所有者。final boolean
始终返回true
,因为所有窗口必须是焦点遍历循环的根。boolean
返回此窗口是否具有焦点。boolean
如果此窗口下次显示时将出现在本机窗口系统的默认位置,则返回true
。boolean
isOpaque()
表示窗口当前是否不透明。boolean
检查此窗口当前是否显示在屏幕上。boolean
表示此容器是否为验证根。void
pack()
使此窗口大小适应其子组件的首选大小和布局。void
绘制容器。boolean
已弃用。JDK 1.1版本后由dispatchEvent(AWTEvent)
替代。protected void
处理此窗口上的事件。protected void
通过将窗口事件分派给任何已注册的WindowListener对象,处理在此窗口上发生的窗口事件。protected void
通过将窗口焦点事件分派给任何已注册的WindowFocusListener对象,处理在此窗口上发生的窗口焦点事件。protected void
通过将窗口状态事件分派给任何已注册的WindowStateListener
对象,处理在此窗口上发生的窗口状态事件。void
移除指定的窗口焦点侦听器,使其不再从此窗口接收窗口事件。void
移除指定的窗口侦听器,使其不再从此窗口接收窗口事件。void
移除指定的窗口状态侦听器,使其不再从此窗口接收窗口事件。void
reshape
(int x, int y, int width, int height) 已弃用。JDK 1.1版本后由setBounds(int, int, int, int)
替代。final 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
将此组件移动和调整大小以符合新的边界矩形r
。void
将光标图像设置为指定的光标。void
setFocusableWindowState
(boolean focusableWindowState) 设置此窗口是否可以成为焦点窗口,如果满足isFocusableWindow
中概述的其他要求。final void
setFocusCycleRoot
(boolean focusCycleRoot) 不执行任何操作,因为窗口必须始终是焦点遍历循环的根。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
根据以下情况设置窗口相对于指定组件的位置。void
setMinimumSize
(Dimension minimumSize) 将此窗口的最小大小设置为一个常量值。void
setModalExclusionType
(Dialog.ModalExclusionType exclusionType) 为此窗口指定模态排除类型。void
setOpacity
(float opacity) 设置窗口的不透明度。void
设置窗口的形状。void
setSize
(int width, int height) 调整此组件的大小,使其具有宽度width
和高度height
。void
调整此组件的大小,使其具有宽度d.width
和高度d.height
。void
setType
(Window.Type type) 设置窗口的类型。void
setVisible
(boolean b) 根据参数b
的值显示或隐藏此Window
。void
show()
已弃用。JDK 1.5版本后由setVisible(boolean)
替代。void
toBack()
如果此窗口可见,则将此窗口发送到后面,并且如果它是焦点或活动窗口,则可能导致其失去焦点或激活。void
toFront()
如果此窗口可见,则将此窗口置于前面,并且可能使其成为焦点窗口。Methods declared in class 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, paintComponents, paramString, preferredSize, print, printComponents, processContainerEvent, remove, remove, removeAll, removeContainerListener, removeNotify, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, setLayout, transferFocusDownCycle, update, validate, validateTree
Methods declared in class 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, 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, 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, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, resize, resize, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setMixingCutoutShape, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Constructor Details
-
Window
使用指定的Frame
作为所有者构造一个新的、最初不可见的窗口。除非其所有者显示在屏幕上,否则窗口将无法获得焦点。如果设置了安全管理器,则会调用
AWTPermission("showWindowWithoutWarningBanner")
进行检查。如果此检查失败并出现SecurityException
,则会创建警告横幅。- 参数:
-
owner
- 作为所有者的Frame
,如果此窗口没有所有者,则为null
- 抛出:
-
IllegalArgumentException
- 如果owner
的GraphicsConfiguration
不是来自屏幕设备 -
HeadlessException
- 当GraphicsEnvironment.isHeadless
返回true
时 - 参见:
-
Window
使用指定的Window
作为所有者构造一个新的、最初不可见的窗口。除非其最近的拥有Frame
或Dialog
显示在屏幕上,否则窗口将无法获得焦点。如果设置了安全管理器,则会调用
AWTPermission("showWindowWithoutWarningBanner")
进行检查。如果此检查失败并出现SecurityException
,则会创建警告横幅。- 参数:
-
owner
- 作为所有者的Window
,如果此窗口没有所有者,则为null
- 抛出:
-
IllegalArgumentException
- 如果owner
的GraphicsConfiguration
不是来自屏幕设备 -
HeadlessException
- 当GraphicsEnvironment.isHeadless()
返回true
时 - 自版本:
- 1.2
- 参见:
-
Window
使用指定的所有者Window
和屏幕设备的GraphicsConfiguration
构造一个新的、最初不可见的窗口。除非其最近的拥有Frame
或Dialog
显示在屏幕上,否则窗口将无法获得焦点。如果设置了安全管理器,则会调用
AWTPermission("showWindowWithoutWarningBanner")
进行检查。如果此检查失败并出现SecurityException
,则会创建警告横幅。- 参数:
-
owner
- 作为所有者的窗口,如果此窗口没有所有者,则为null
-
gc
- 目标屏幕设备的GraphicsConfiguration
;如果gc
为null
,则假定系统默认的GraphicsConfiguration
- 抛出:
-
IllegalArgumentException
- 如果gc
不是来自屏幕设备 -
HeadlessException
- 当GraphicsEnvironment.isHeadless()
返回true
时 - 自版本:
- 1.3
- 参见:
-
-
Method Details
-
getIconImages
返回要显示为此窗口图标的图像序列。此方法返回内部存储的列表的副本,因此对返回的对象的所有操作不会影响窗口的行为。
- 返回:
- 此窗口的图标图像列表的副本,如果此窗口没有图标图像,则为空列表。
- 自版本:
- 1.6
- 参见:
-
setIconImages
设置要显示为此窗口图标的图像序列。随后对getIconImages
的调用将始终返回icons
列表的副本。根据平台功能,将使用一个或多个不同尺寸的图像作为窗口的图标。
icons
列表也可以包含MultiResolutionImage
图像。从基本MultiResolutionImage
图像中提取适合屏幕分辨率的图像,并将其添加到图标列表中,同时从列表中删除基本分辨率图像。从开始扫描icons
列表以找到最合适尺寸的图像。如果列表包含多个相同尺寸的图像,则将使用第一个。未指定图标的无所有者窗口使用平台默认图标。拥有者窗口的图标可能会从所有者继承,除非明确覆盖。将图标设置为
null
或空列表将恢复默认行为。注意:本机窗口系统可能使用不同尺寸的不同图像来表示窗口,具体取决于上下文(例如窗口装饰、窗口列表、任务栏等)。它们也可以只使用单个图像来表示所有上下文,或者根本不使用图像。
- 参数:
-
icons
- 要显示的图标图像列表。 - 自版本:
- 1.6
- 参见:
-
setIconImage
设置要显示为此窗口图标的图像。可以使用此方法代替
setIconImages()
来指定窗口的图标为单个图像。以下语句:
setIconImage(image);
等同于:ArrayList<Image> imageList = new ArrayList<Image>(); imageList.add(image); setIconImages(imageList);
注意:本地窗口系统可能使用不同尺寸的不同图像来表示窗口,具体取决于上下文(例如窗口装饰、窗口列表、任务栏等)。它们也可能只使用单个图像来表示所有上下文,或者根本不使用图像。
- 参数:
-
image
- 要显示的图标图像。 - 自从:
- 1.6
- 另请参阅:
-
addNotify
public void addNotify()通过创建与其本机屏幕资源的连接,使此窗口可显示。此方法由工具包内部调用,不应由程序直接调用。 -
pack
public void pack()使此窗口的大小适合其子组件的首选大小和布局。如果窗口的任一维度小于先前调用setMinimumSize
方法指定的最小大小,则窗口的宽度和高度将自动放大。如果窗口和/或其所有者尚未显示,则在计算首选大小之前,它们都将被显示。在计算大小后,将验证窗口。
- 另请参阅:
-
setMinimumSize
将此窗口的最小大小设置为一个固定值。随后调用getMinimumSize
将始终返回此值。如果当前窗口的大小小于minimumSize
,则窗口的大小将自动放大以符合最小大小。如果之后调用
setSize
或setBounds
方法,并且宽度或高度小于setMinimumSize
方法指定的宽度,则窗口将自动放大以满足minimumSize
值。minimumSize
值还会影响pack
方法的行为。通过将最小大小参数设置为
null
值,可以恢复默认行为。如果用户尝试将窗口调整大小至
minimumSize
值以下,可能会限制调整大小操作。此行为取决于平台。- 覆盖:
-
setMinimumSize
在类Component
- 参数:
-
minimumSize
- 此窗口的新最小大小 - 自从:
- 1.6
- 另请参阅:
-
setSize
调整此组件的大小,使其具有宽度d.width
和高度d.height
。此方法更改与布局相关的信息,因此会使组件层次结构无效。
如果
d.width
和d.height
中的任一值小于先前调用setMinimumSize
指定的最小大小,则这些值将自动放大。该方法更改与几何相关的数据。因此,本机窗口系统可能会忽略此类请求,或者可能会修改请求的数据,以便
Window
对象被放置和调整大小,以便与桌面设置紧密对应。 -
setSize
public void setSize(int width, int height) 调整此组件的大小,使其具有宽度width
和高度height
。此方法更改与布局相关的信息,因此会使组件层次结构无效。
如果
width
和height
中的任一值小于先前调用setMinimumSize
指定的最小大小,则这些值将自动放大。该方法更改与几何相关的数据。因此,本机窗口系统可能会忽略此类请求,或者可能会修改请求的数据,以便
Window
对象被放置和调整大小,以便与桌面设置紧密对应。 -
setLocation
public void setLocation(int x, int y) 将此组件移动到新位置。新位置的左上角由x
和y
参数在此组件父级的坐标空间中指定。此方法更改与布局相关的信息,因此会使组件层次结构无效。
该方法更改与几何相关的数据。因此,本机窗口系统可能会忽略此类请求,或者可能会修改请求的数据,以便
Window
对象被放置和调整大小,以便与桌面设置紧密对应。- 覆盖:
-
setLocation
在类Component
- 参数:
-
x
- 新位置左上角的x坐标,以父级的坐标空间为准 -
y
- 新位置左上角的y坐标,以父级的坐标空间为准 - 另请参阅:
-
setLocation
将此组件移动到新位置。新位置的左上角由点p
指定。点p
以父级的坐标空间给出。此方法更改与布局相关的信息,因此会使组件层次结构无效。
该方法更改与几何相关的数据。因此,本机窗口系统可能会忽略此类请求,或者可能会修改请求的数据,以便
Window
对象被放置和调整大小,以便与桌面设置紧密对应。- 覆盖:
-
setLocation
在类Component
- 参数:
-
p
- 定义新位置左上角的点,以此组件父级的坐标空间为准 - 另请参阅:
-
reshape
Deprecated.As of JDK version 1.1, replaced bysetBounds(int, int, int, int)
.从类中复制的描述:Component
重新调整此组件的边界矩形。 -
setVisible
public void setVisible(boolean b) 显示或隐藏此Window
取决于参数b
的值。如果该方法显示窗口,则在以下条件下还会使窗口获得焦点:
Window
符合isFocusableWindow()
方法中概述的要求。Window
的autoRequestFocus
属性为true
值。- 本地窗口系统允许
Window
获得焦点。
autoRequestFocus
属性的值),有一个例外。如果窗口是一个阻止当前焦点窗口的模态对话框,则不考虑该属性的值。开发人员绝不能假设窗口是焦点或活动窗口,直到它接收到WINDOW_GAINED_FOCUS或WINDOW_ACTIVATED事件。
- 覆盖:
-
setVisible
在类中Component
- 参数:
-
b
- 如果为true
,则使Window
可见,否则隐藏Window
。如果Window
和/或其所有者尚未可显示,则两者都将变为可显示。在使窗口可见之前,将验证Window
。如果Window
已经可见,则将该Window
置于前端。如果为
false
,隐藏此Window
、其子组件和所有拥有的子级。可以通过调用#setVisible(true)
再次使Window
及其子组件可见。 - 参见:
-
show
Deprecated.As of JDK version 1.5, replaced bysetVisible(boolean)
.使窗口可见。如果窗口和/或其所有者尚未可显示,则两者都将变为可显示。在使窗口可见之前,将验证窗口。如果窗口已经可见,则将该窗口置于前端。 -
hide
Deprecated.As of JDK version 1.5, replaced bysetVisible(boolean)
.隐藏此窗口、其子组件和所有拥有的子级。可以通过调用show
再次使窗口及其子组件可见。 -
dispose
public void dispose()释放此Window
、其子组件和所有拥有的子级使用的所有本机屏幕资源。也就是说,这些Component
的资源将被销毁,它们消耗的任何内存将被返回给操作系统,并将被标记为不可显示。可以通过随后调用
pack
或show
重新构建本机资源来使Window
及其子组件再次可显示。重新创建的Window
及其子组件的状态将与Window
被处置时这些对象的状态相同(不考虑这些操作之间的额外修改)。注意:当Java虚拟机(VM)中的最后一个可显示窗口被处置时,VM可能会终止。有关更多信息,请参见AWT线程问题。
- 参见:
-
toFront
public void toFront()如果此窗口可见,则将此窗口置于前端,并可能使其成为焦点窗口。将此窗口置于堆叠顺序的顶部,并在此VM中的任何其他窗口前显示它。如果此窗口不可见,则不会执行任何操作。某些平台不允许拥有其他窗口的窗口出现在拥有的窗口上方。某些平台可能不允许此VM将其窗口放置在本机应用程序的窗口或其他VM的窗口上方。此权限可能取决于此VM中的窗口是否已经获得焦点。将尽一切努力将此窗口移动到堆叠顺序中的最高位置;但是,开发人员不应假设此方法将在所有情况下将此窗口移动到所有其他窗口上方。
开发人员绝不能假设此窗口是焦点或活动窗口,直到此窗口接收到WINDOW_GAINED_FOCUS或WINDOW_ACTIVATED事件。在顶部窗口是焦点窗口的平台上,此方法将可能在以下条件下使此窗口获得焦点(如果尚未获得焦点):
- 窗口符合
isFocusableWindow()
方法中概述的要求。 - 窗口的属性
autoRequestFocus
为true
值。 - 本地窗口系统允许窗口获得焦点。
如果此方法导致此窗口获得焦点,并且此窗口是一个Frame或Dialog,则它也将被激活。如果此窗口获得焦点,但它不是Frame或Dialog,则拥有此窗口的第一个Frame或Dialog将被激活。
如果此窗口被模态对话框阻止,则阻止对话框将被置于前端并保持在被阻止窗口上方。
- 参见:
- 窗口符合
-
toBack
public void toBack()如果此窗口可见,则将此窗口发送到后端,并可能导致其失去焦点或激活状态(如果它是焦点或活动窗口)。将此窗口置于堆叠顺序的底部,并在此VM中的任何其他窗口后显示它。如果此窗口不可见,则不会执行任何操作。某些平台不允许由其他窗口拥有的窗口出现在其所有者下方。将尽一切努力将此窗口移动到堆叠顺序中的最低位置;但是,开发人员不应假设此方法将在所有情况下将此窗口移动到所有其他窗口下方。
由于本机窗口系统的变化,无法保证对焦点和活动窗口的更改。开发人员绝不能假设此窗口不再是焦点或活动窗口,直到此窗口接收到WINDOW_LOST_FOCUS或WINDOW_DEACTIVATED事件。在顶部窗口是焦点窗口的平台上,此方法将可能导致此窗口失去焦点。在这种情况下,此VM中下一个最高的可获得焦点的窗口将接收焦点。在不会影响焦点窗口的平台上,此方法将可能保持焦点和活动窗口不变。
- 参见:
-
getToolkit
返回此窗口的工具包。- 覆盖:
-
getToolkit
在类中Component
- 返回:
- 此窗口的工具包。
- 参见:
-
getWarningString
获取与此窗口一起显示的警告字符串。如果此窗口不安全,则警告字符串将显示在窗口的可见区域的某个位置。如果存在安全管理器并且安全管理器拒绝AWTPermission("showWindowWithoutWarningBanner")
,则窗口是不安全的。如果窗口是安全的,则
getWarningString
返回null
。如果窗口不安全,则此方法将检查系统属性awt.appletWarning
并返回该属性的字符串值。- 返回:
- 此窗口的警告字符串。
-
getLocale
获取与此窗口关联的Locale
对象,如果已设置区域设置。如果未设置区域设置,则返回默认区域设置。 -
getInputContext
获取此窗口的输入上下文。窗口始终具有一个输入上下文,除非子组件创建并设置自己的输入上下文。- 覆盖:
-
getInputContext
在类中Component
- 返回:
-
此组件使用的输入上下文;如果无法确定上下文,则返回
null
- 自:
- 1.2
- 参见:
-
setCursor
设置鼠标指针图像为指定的鼠标指针。如果Java平台实现和/或本地系统不支持更改鼠标指针形状,则该方法可能没有视觉效果。
-
getOwner
返回此窗口的所有者。- 返回:
- 此窗口的所有者
- 自:
- 1.2
-
getOwnedWindows
返回包含此窗口当前拥有的所有窗口的数组。- 返回:
- 所有拥有窗口的数组
- 自:
- 1.2
-
getWindows
返回此应用程序创建的所有Window
数组,包括已拥有和无所有者的窗口。如果从小程序中调用,则数组仅包括该小程序可访问的Window
。警告:此方法可能返回系统创建的窗口,例如打印对话框。应用程序不应假定这些对话框的存在,也不应假定这些对话框的任何内容,如组件位置、
LayoutManager
或序列化。- 返回:
-
应用程序创建的所有
Window
数组 - 自:
- 1.6
- 参见:
-
getOwnerlessWindows
返回此应用程序创建的所有没有所有者的Window
数组。它包括Frame
和无所有者的Dialog
和Window
。如果从小程序中调用,则数组仅包括该小程序可访问的Window
。警告:此方法可能返回系统创建的窗口,例如打印对话框。应用程序不应假定这些对话框的存在,也不应假定这些对话框的任何内容,如组件位置、
LayoutManager
或序列化。- 返回:
-
此应用程序创建的所有没有所有者的
Window
数组 - 自:
- 1.6
- 参见:
-
setModalExclusionType
指定此窗口的模态排除类型。如果窗口被模态排除,则不会被某些模态对话框阻止。请参阅Dialog.ModalExclusionType
以获取可能的模态排除类型。如果给定的类型不受支持,则使用
NO_EXCLUDE
。注意:更改可见窗口的模态排除类型可能不会产生效果,直到隐藏然后再次显示它。
- 参数:
-
exclusionType
- 此窗口的模态排除类型;null
值等效于NO_EXCLUDE
- 抛出:
-
SecurityException
- 如果调用线程没有权限将模态排除属性设置为具有给定exclusionType
的窗口 - 自:
- 1.6
- 参见:
-
getModalExclusionType
返回此窗口的模态排除类型。- 返回:
- 此窗口的模态排除类型
- 自:
- 1.6
- 参见:
-
addWindowListener
将指定的窗口监听器添加到此窗口以接收窗口事件。如果l为null,则不会抛出异常且不执行任何操作。有关AWT线程模型的详细信息,请参阅AWT线程问题。
- 参数:
-
l
- 窗口监听器 - 参见:
-
addWindowStateListener
- 参数:
-
l
- 窗口状态监听器 - 自:
- 1.4
- 参见:
-
addWindowFocusListener
将指定的窗口焦点监听器添加到此窗口以接收窗口事件。如果l为null,则不会抛出异常且不执行任何操作。有关AWT线程模型的详细信息,请参阅AWT线程问题。
- 参数:
-
l
- 窗口焦点监听器 - 自:
- 1.4
- 参见:
-
removeWindowListener
删除指定的窗口监听器,使其不再从此窗口接收窗口事件。如果l为null,则不会抛出异常且不执行任何操作。有关AWT线程模型的详细信息,请参阅AWT线程问题。
- 参数:
-
l
- 窗口监听器 - 参见:
-
removeWindowStateListener
- 参数:
-
l
- 窗口状态监听器 - 自:
- 1.4
- 参见:
-
removeWindowFocusListener
删除指定的窗口焦点监听器,使其不再从此窗口接收窗口事件。如果l为null,则不会抛出异常且不执行任何操作。有关AWT线程模型的详细信息,请参阅AWT线程问题。
- 参数:
-
l
- 窗口焦点监听器 - 自:
- 1.4
- 参见:
-
getWindowListeners
返回在此窗口上注册的所有窗口监听器的数组。- 返回:
-
所有此窗口的
WindowListener
或如果当前未注册窗口监听器,则返回空数组 - 自:
- 1.4
- 参见:
-
getWindowFocusListeners
返回在此窗口上注册的所有窗口焦点监听器的数组。- 返回:
-
所有此窗口的
WindowFocusListener
或如果当前未注册窗口焦点监听器,则返回空数组 - 自:
- 1.4
- 参见:
-
getWindowStateListeners
返回在此窗口上注册的所有窗口状态监听器的数组。- 返回:
-
返回此窗口的所有
WindowStateListener
,如果当前未注册任何窗口状态侦听器,则返回空数组 - 自从:
- 1.4
- 另请参阅:
-
getListeners
返回当前在此Window
上注册为FooListener
的所有对象的数组。使用addFooListener
方法注册FooListener
。您可以使用类文字指定
listenerType
参数,例如FooListener.class
。例如,您可以使用以下代码查询Window w
的窗口侦听器:WindowListener[] wls = (WindowListener[])(w.getListeners(WindowListener.class));
如果不存在此类侦听器,则此方法返回空数组。- 覆盖:
-
getListeners
在类Container
- 类型参数:
-
T
- 侦听器的类型 - 参数:
-
listenerType
- 请求的侦听器类型;此参数应指定从java.util.EventListener
继承的接口 - 返回:
-
返回在此窗口上注册为
FooListener
的所有对象的数组,如果尚未添加此类侦听器,则返回空数组 - 抛出:
-
ClassCastException
- 如果listenerType
未指定实现java.util.EventListener
的类或接口 -
NullPointerException
- 如果listenerType
为null
- 自从:
- 1.3
- 另请参阅:
-
processEvent
处理此窗口上的事件。如果事件是WindowEvent
,则调用processWindowEvent
方法,否则调用其超类的processEvent
。请注意,如果事件参数为
null
,则行为是未指定的,可能会导致异常。- 覆盖:
-
processEvent
在类Container
- 参数:
-
e
- 事件 - 另请参阅:
-
processWindowEvent
通过将窗口事件分派给任何注册的WindowListener对象来处理在此窗口上发生的窗口事件。注意:除非为此组件启用了窗口事件,否则不会调用此方法;当发生以下情况之一时会发生这种情况:- 通过
addWindowListener
注册了WindowListener对象 - 通过
enableEvents
启用了窗口事件
请注意,如果事件参数为
null
,则行为是未指定的,可能会导致异常。- 参数:
-
e
- 窗口事件 - 另请参阅:
- 通过
-
processWindowFocusEvent
通过将在此窗口上发生的窗口焦点事件分派给任何注册的WindowFocusListener对象来处理。注意:除非为此窗口启用了窗口焦点事件,否则不会调用此方法。发生以下情况之一时会发生这种情况:- 通过
addWindowFocusListener
注册了WindowFocusListener - 通过
enableEvents
启用了窗口焦点事件
请注意,如果事件参数为
null
,则行为是未指定的,可能会导致异常。- 参数:
-
e
- 窗口焦点事件 - 自从:
- 1.4
- 另请参阅:
- 通过
-
processWindowStateEvent
通过将在此窗口上发生的窗口状态事件分派给任何注册的WindowStateListener
对象来处理。注意:除非为此窗口启用了窗口状态事件,否则不会调用此方法。发生以下情况之一时会发生这种情况:- 通过
addWindowStateListener
注册了WindowStateListener
- 通过
enableEvents
启用了窗口状态事件
请注意,如果事件参数为
null
,则行为是未指定的,可能会导致异常。- 参数:
-
e
- 窗口状态事件 - 自从:
- 1.4
- 另请参阅:
- 通过
-
setAlwaysOnTop
设置此窗口是否始终位于其他窗口之上。如果存在多个始终置顶窗口,则它们之间的相对顺序是未指定的且依赖于平台。如果其他窗口已经始终置顶,则这些窗口之间的相对顺序是未指定的(取决于平台)。除了可能是另一个始终置顶窗口之外,没有窗口可以置于始终置顶窗口之上。
由始终置顶窗口拥有的所有窗口都继承此状态并自动变为始终置顶。如果窗口不再始终置顶,则它拥有的窗口将不再始终置顶。当始终置顶窗口被发送
toBack
时,其始终置顶状态将设置为false
。当在具有
true
值的窗口上调用此方法时,如果窗口可见且平台支持此窗口的始终置顶,则窗口将立即前置,“粘”在最顶部位置。如果窗口当前不可见,则此方法将始终置顶状态设置为true
,但不会将窗口前置。当稍后显示窗口时,它将始终置顶。当在具有
false
值的窗口上调用此方法时,始终置顶状态将设置为正常。它还可能导致顶级窗口的z顺序发生未指定的、依赖于平台的更改,但其他始终置顶窗口将保持在最顶部位置。在具有正常状态的窗口上调用具有false
值的此方法不会产生任何效果。注意:某些平台可能不支持始终置顶窗口。要检测当前平台是否支持始终置顶窗口,请使用
Toolkit.isAlwaysOnTopSupported()
和isAlwaysOnTopSupported()
。如果当前平台不支持此窗口或此窗口的工具包不支持始终置顶窗口,则调用此方法不会产生任何效果。如果安装了SecurityManager,则调用线程必须被授予AWTPermission "setWindowAlwaysOnTop"权限才能设置此属性的值。如果未授予此权限,此方法将抛出SecurityException,并且属性的当前值将保持不变。
- 参数:
-
alwaysOnTop
- 如果窗口应始终位于其他窗口之上,则为true - 抛出:
-
SecurityException
- 如果调用线程没有权限设置始终置顶属性的值 - 自从:
- 1.5
- 另请参阅:
-
isAlwaysOnTopSupported
public boolean isAlwaysOnTopSupported()返回此窗口是否支持始终置顶模式。某些平台可能不支持始终置顶窗口,有些可能仅支持某些类型的顶级窗口;例如,某个平台可能不支持始终置顶模态对话框。- 返回:
-
如果此窗口支持始终置顶模式且此窗口的工具包支持始终置顶窗口,则返回
true
,否则返回false
- 自从:
- 1.6
- 另请参阅:
-
isAlwaysOnTop
public final boolean isAlwaysOnTop()返回此窗口是否为始终置顶窗口。- 返回:
-
true
,如果窗口处于始终置顶状态,则返回false
- 自版本:
- 1.5
- 参见:
-
getFocusOwner
返回此窗口的具有焦点的子组件(如果此窗口具有焦点);否则返回null。- 返回:
- 具有焦点的子组件,如果此窗口没有焦点则返回null
- 参见:
-
getMostRecentFocusOwner
返回此窗口的具有焦点的子组件,当此窗口具有焦点时将接收焦点。如果此窗口当前具有焦点,则此方法返回与getFocusOwner()
相同的组件。如果此窗口没有焦点,则将返回最近请求焦点的子组件。如果没有子组件请求过焦点,并且这是一个可聚焦的窗口,则返回此窗口的初始可聚焦组件。如果没有子组件请求过焦点,并且这是一个不可聚焦的窗口,则返回null。- 返回:
- 当此窗口具有焦点时将接收焦点的子组件
- 自版本:
- 1.4
- 参见:
-
isActive
public boolean isActive()返回此窗口是否处于活动状态。只有Frame或Dialog可以处于活动状态。本地窗口系统可能使用特殊装饰来表示活动窗口或其子组件,例如突出显示的标题栏。活动窗口始终是具有焦点的窗口,或者是具有焦点的窗口的第一个Frame或Dialog的所有者。- 返回:
- 是否为活动窗口。
- 自版本:
- 1.4
- 参见:
-
isFocused
public boolean isFocused()返回此窗口是否具有焦点。如果存在焦点所有者,则具有焦点的窗口是该焦点所有者所在的窗口。如果没有焦点所有者,则没有窗口具有焦点。如果具有焦点的窗口是Frame或Dialog,则它也是活动窗口。否则,活动窗口是具有焦点的窗口的第一个Frame或Dialog的所有者。
- 返回:
- 是否为具有焦点的窗口。
- 自版本:
- 1.4
- 参见:
-
getFocusTraversalKeys
获取此窗口的焦点遍历键。(有关每个键的完整描述,请参见setFocusTraversalKeys
。)如果未为此窗口明确设置遍历键,则返回此窗口父级的遍历键。如果未为此窗口的任何祖先明确设置遍历键,则返回当前KeyboardFocusManager的默认遍历键。
- 覆盖:
-
getFocusTraversalKeys
在类Container
- 参数:
-
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
- 参见:
-
setFocusCycleRoot
public final void setFocusCycleRoot(boolean focusCycleRoot) 不执行任何操作,因为窗口必须始终是焦点遍历循环的根。传入的值将被忽略。- 覆盖:
-
setFocusCycleRoot
在类Container
- 参数:
-
focusCycleRoot
- 此值将被忽略 - 自版本:
- 1.4
- 参见:
-
isFocusCycleRoot
public final boolean isFocusCycleRoot()始终返回true
,因为所有窗口必须是焦点遍历循环的根。- 覆盖:
-
isFocusCycleRoot
在类Container
- 返回:
-
true
- 自版本:
- 1.4
- 参见:
-
getFocusCycleRootAncestor
始终返回null
,因为窗口没有祖先;它们代表组件层次结构的顶部。- 覆盖:
-
getFocusCycleRootAncestor
在类Component
- 返回:
-
null
- 自版本:
- 1.4
- 参见:
-
isFocusableWindow
public final boolean isFocusableWindow()返回此窗口是否可以成为具有焦点的窗口,即此窗口或其任何子组件是否可以成为焦点所有者。要使Frame或Dialog具有焦点,必须将其可聚焦窗口状态设置为true
。要使不是Frame或Dialog的窗口具有焦点,必须将其可聚焦窗口状态设置为true
,其最近的所有者Frame或Dialog必须在屏幕上显示,并且它必须包含至少一个在其焦点遍历循环中的组件。如果不满足这些条件中的任何一个,则此窗口或其任何子组件都无法成为焦点所有者。- 返回:
-
如果此窗口可以成为具有焦点的窗口则返回
true
;否则返回false
- 自版本:
- 1.4
- 参见:
-
getFocusableWindowState
public boolean getFocusableWindowState()返回此窗口是否可以成为具有焦点的窗口,如果满足isFocusableWindow
中概述的其他要求。如果此方法返回false
,则isFocusableWindow
也将返回false
。如果此方法返回true
,则isFocusableWindow
可能返回true
或false
,具体取决于必须满足的其他要求,以使窗口具有焦点。默认情况下,所有窗口的可聚焦窗口状态为
true
。- 返回:
- 此窗口是否可以成为具有焦点的窗口
- 自版本:
- 1.4
- 参见:
-
setFocusableWindowState
public void setFocusableWindowState(boolean focusableWindowState) 设置此窗口是否可以成为具有焦点的窗口,如果满足isFocusableWindow
中概述的其他要求。如果此窗口的可聚焦窗口状态设置为false
,则isFocusableWindow
将返回false
。如果此窗口的可聚焦窗口状态设置为true
,则isFocusableWindow
可能返回true
或false
,具体取决于必须满足的其他要求,以使窗口具有焦点。将窗口的焦点状态设置为
false
是应用程序向AWT标识将用作浮动面板或工具栏的窗口的标准机制,因此应将其设置为非可聚焦窗口。在某些平台上,为可见的Window
设置焦点状态可能会有延迟的效果 - 实际更改可能仅在Window
变为隐藏然后再次显示时发生。为确保跨平台的一致行为,请在Window
不可见时设置Window
的可聚焦状态,然后再显示它。- 参数:
-
focusableWindowState
- 此窗口是否可以成为焦点窗口 - 自 JDK 版本:
- 1.4
- 另请参阅:
-
setAutoRequestFocus
public void setAutoRequestFocus(boolean autoRequestFocus) 设置此窗口在随后显示(通过调用setVisible(true)
)或移动到前台(通过调用toFront()
)时是否应该接收焦点。请注意,可能会间接调用
setVisible(true)
(例如,当显示窗口的所有者使窗口显示时)。也可能会间接调用toFront()
(例如,当已经可见的窗口调用setVisible(true)
时)。在所有这些情况下,此属性也会生效。此属性的值不会被所拥有的窗口继承。
- 参数:
-
autoRequestFocus
- 此窗口在随后显示或移动到前台时是否应该接收焦点 - 自 JDK 版本:
- 1.7
- 另请参阅:
-
isAutoRequestFocus
public boolean isAutoRequestFocus()- 返回:
-
autoRequestFocus
的值 - 自 JDK 版本:
- 1.7
- 另请参阅:
-
addPropertyChangeListener
向监听器列表中添加一个PropertyChangeListener。该监听器为此类的所有绑定属性注册,包括以下内容:- 此窗口的字体("font")
- 此窗口的背景颜色("background")
- 此窗口的前景颜色("foreground")
- 此窗口的可聚焦性("focusable")
- 此窗口的焦点遍历键启用状态("focusTraversalKeysEnabled")
- 此窗口的前向遍历键集合("forwardFocusTraversalKeys")
- 此窗口的后向遍历键集合("backwardFocusTraversalKeys")
- 此窗口的上循环遍历键集合("upCycleFocusTraversalKeys")
- 此窗口的下循环遍历键集合("downCycleFocusTraversalKeys")
- 此窗口的焦点遍历策略("focusTraversalPolicy")
- 此窗口的可聚焦窗口状态("focusableWindowState")
- 此窗口的总在最前状态("alwaysOnTop")
如果监听器为null,则不会抛出异常,也不会执行任何操作。
- 覆盖:
-
addPropertyChangeListener
在类Container
中 - 参数:
-
listener
- 要添加的PropertyChangeListener - 另请参阅:
-
addPropertyChangeListener
向特定属性的监听器列表中添加一个PropertyChangeListener。指定的属性可以是用户定义的,也可以是以下之一:- 此窗口的字体("font")
- 此窗口的背景颜色("background")
- 此窗口的前景颜色("foreground")
- 此窗口的可聚焦性("focusable")
- 此窗口的焦点遍历键启用状态("focusTraversalKeysEnabled")
- 此窗口的前向遍历键集合("forwardFocusTraversalKeys")
- 此窗口的后向遍历键集合("backwardFocusTraversalKeys")
- 此窗口的上循环遍历键集合("upCycleFocusTraversalKeys")
- 此窗口的下循环遍历键集合("downCycleFocusTraversalKeys")
- 此窗口的焦点遍历策略("focusTraversalPolicy")
- 此窗口的可聚焦窗口状态("focusableWindowState")
- 此窗口的总在最前状态("alwaysOnTop")
如果监听器为null,则不会抛出异常,也不会执行任何操作。
- 覆盖:
-
addPropertyChangeListener
在类Container
中 - 参数:
-
propertyName
- 上述属性名称之一 -
listener
- 要添加的PropertyChangeListener - 另请参阅:
-
isValidateRoot
public boolean isValidateRoot()指示此容器是否为验证根。Window
对象是验证根,因此它们覆盖此方法以返回true
。- 覆盖:
-
isValidateRoot
在类Container
中 - 返回:
-
true
- 自 JDK 版本:
- 1.7
- 另请参阅:
-
postEvent
Deprecated.As of JDK version 1.1 replaced bydispatchEvent(AWTEvent)
.从接口复制的描述:MenuContainer
向监听器发布事件。- 指定者:
-
postEvent
在接口MenuContainer
中 - 覆盖:
-
postEvent
在类Component
中 - 参数:
-
e
- 要分派的事件 - 返回:
- 发布事件的结果
-
isShowing
public boolean isShowing()检查此窗口是否显示在屏幕上。 -
applyResourceBundle
Deprecated.As of J2SE 1.4, replaced byComponent.applyComponentOrientation
.- 参数:
-
rb
- 资源包
-
applyResourceBundle
Deprecated.As of J2SE 1.4, replaced byComponent.applyComponentOrientation
.- 参数:
-
rbName
- 资源名称
-
setType
设置窗口的类型。此方法只能在窗口不可显示时调用。- 参数:
-
type
- 窗口类型 - 抛出:
-
IllegalComponentStateException
- 如果窗口可显示。 -
IllegalArgumentException
- 如果类型为null
- 自 JDK 版本:
- 1.7
- 另请参阅:
-
getType
返回窗口的类型。- 返回:
- 窗口的类型
- 自 JDK 版本:
- 1.7
- 另请参阅:
-
getAccessibleContext
获取与此窗口关联的AccessibleContext。对于窗口,AccessibleContext采用AccessibleAWTWindow的形式。如果需要,将创建一个新的AccessibleAWTWindow实例。- 指定者:
-
getAccessibleContext
在接口Accessible
中 - 覆盖:
-
getAccessibleContext
在类Component
中 - 返回:
- 作为此窗口的AccessibleContext的AccessibleAWTWindow
- 自 JDK 版本:
- 1.3
-
setLocationRelativeTo
设置窗口相对于指定组件的位置,根据以下情况进行设置。下面提到的目标屏幕是调用 setLocationRelativeTo 方法后应将窗口放置在其中的屏幕。
- 如果组件为
null
,或者与该组件关联的GraphicsConfiguration
为null
,则窗口将放置在屏幕的中心。可以使用GraphicsEnvironment.getCenterPoint
方法获取中心点。 - 如果组件不为
null
,但当前未显示,则窗口将放置在由与该组件关联的GraphicsConfiguration
定义的目标屏幕的中心。 - 如果组件不为
null
并且显示在屏幕上,则窗口将定位在使窗口的中心与组件的中心重合的位置。
如果屏幕配置不允许将窗口从一个屏幕移动到另一个屏幕,则窗口仅根据上述条件确定的位置放置,并且其
GraphicsConfiguration
不会更改。注意:如果窗口的下边缘超出屏幕,则窗口将放置在距离屏幕中心最近的
Component
一侧。因此,如果组件位于屏幕的右侧,则窗口将放置在其左侧,反之亦然。如果计算窗口位置后,窗口的上边缘、左边缘或右边缘超出屏幕,则窗口将定位在使窗口的上边缘、左边缘或右边缘与屏幕的相应边缘重合的位置。如果窗口的左右边缘都超出屏幕,则窗口将放置在屏幕的左侧。如果窗口的上下边缘都超出屏幕,则窗口将放置在屏幕的顶部。
该方法更改与几何相关的数据。因此,本机窗口系统可能会忽略此类请求,或者可能会修改请求的数据,以便
Window
对象以与桌面设置密切对应的方式放置和调整大小。- 参数:
-
c
- 确定窗口位置的组件 - 自版本:
- 1.4
- 参见:
- 如果组件为
-
createBufferStrategy
public void createBufferStrategy(int numBuffers) 为此组件创建一个新的多缓冲策略。多缓冲对于渲染性能很有用。此方法尝试使用提供的缓冲区数量创建最佳可用策略。它将始终创建具有该数量缓冲区的BufferStrategy
。首先尝试页面翻转策略,然后尝试使用加速缓冲区的位块传输策略。最后,使用未加速的位块传输策略。每次调用此方法时,都会丢弃此组件的现有缓冲策略。
- 参数:
-
numBuffers
- 要创建的缓冲区数量 - 抛出:
-
IllegalArgumentException
- 如果 numBuffers 小于 1。 -
IllegalStateException
- 如果组件不可显示 - 自版本:
- 1.4
- 参见:
-
createBufferStrategy
使用所需的缓冲区功能为此组件创建一个新的多缓冲策略。例如,如果只希望使用加速内存或页面翻转(由缓冲区功能指定),则此方法很有用。每次调用此方法时,都会丢弃此组件的现有缓冲策略。
- 参数:
-
numBuffers
- 要创建的缓冲区数量,包括前缓冲区 -
caps
- 创建缓冲策略所需的功能;不能为null
- 抛出:
-
AWTException
- 如果无法支持或满足提供的功能;例如,如果当前可用的加速内存不足,或者指定了页面翻转但不可能实现。 -
IllegalArgumentException
- 如果 numBuffers 小于 1,或者 caps 为null
- 自版本:
- 1.4
- 参见:
-
getBufferStrategy
返回此组件使用的BufferStrategy
。如果尚未创建BufferStrategy
或已被丢弃,则此方法将返回 null。- 返回:
- 此组件使用的缓冲策略
- 自版本:
- 1.4
- 参见:
-
setLocationByPlatform
public void setLocationByPlatform(boolean locationByPlatform) 设置此窗口是否应出现在本机窗口系统的默认位置或当前位置(由getLocation
返回)下一次窗口可见时。此行为类似于原生窗口显示而未通过编程设置其位置。如果未明确设置它们的位置,大多数窗口系统会级联窗口。一旦窗口显示在屏幕上,实际位置将确定。也可以通过将系统属性 "java.awt.Window.locationByPlatform" 设置为 "true" 来启用此行为,尽管对此方法的调用优先级更高。
在调用
setLocationByPlatform
后调用setVisible
、setLocation
和setBounds
,会清除窗口的此属性。例如,在执行以下代码后:
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
- 参见:
-
isLocationByPlatform
public boolean isLocationByPlatform()如果此窗口下一次可见时将出现在本机窗口系统的默认位置,则返回true
。如果窗口正在屏幕上显示,则此方法始终返回false
。- 返回:
- 此窗口是否将出现在默认位置
- 自版本:
- 1.5
- 参见:
-
setBounds
public void setBounds(int x, int y, int width, int height) 移动并调整此组件的大小。左上角的新位置由x
和y
指定,新大小由width
和height
指定。此方法更改与布局相关的信息,因此会使组件层次结构无效。
如果
width
或height
的值小于先前调用setMinimumSize
指定的最小大小,则这两个值会自动增大。该方法更改与几何相关的数据。因此,本机窗口系统可能会忽略此类请求,或者可能会修改请求的数据,以便
Window
对象以与桌面设置密切对应的方式放置和调整大小。 -
setBounds
将此组件移动和调整大小以符合新的边界矩形r
。此组件的新位置由r.x
和r.y
指定,其新大小由r.width
和r.height
指定。此方法更改与布局相关的信息,因此会使组件层次结构无效。
如果
r.width
或r.height
的值小于之前调用setMinimumSize
指定的最小大小,则这些值将自动扩大。该方法更改与几何相关的数据。因此,本地窗口系统可能会忽略此类请求,或者可能会修改请求的数据,以使
Window
对象的放置和大小与桌面设置紧密对应。 -
getOpacity
public float getOpacity()返回窗口的不透明度。- 返回:
- 窗口的不透明度
- 自:
- 1.7
- 另请参见:
-
setOpacity
public void setOpacity(float opacity) 设置窗口的不透明度。不透明度值在范围[0..1]内。请注意,将不透明度级别设置为0可能会或可能不会禁用此窗口上的鼠标事件处理。这是平台相关的行为。
为了将不透明度值设置为小于
1.0f
,必须满足以下条件:- 底层系统必须支持
TRANSLUCENT
半透明 - 窗口必须是无装饰的(参见
Frame.setUndecorated(boolean)
和Dialog.setUndecorated(boolean)
) - 窗口不能处于全屏模式(参见
GraphicsDevice.setFullScreenWindow(Window)
)
如果请求的不透明度值小于
1.0f
,并且上述任何条件不满足,则窗口不透明度不会更改,并且将抛出IllegalComponentStateException
。个别像素的半透明级别也可能受其颜色的alpha分量(请参见
setBackground(Color)
)和此窗口的当前形状(请参见setShape(Shape)
)的影响。- 参数:
-
opacity
- 要设置给窗口的不透明度级别 - 抛出:
-
IllegalArgumentException
- 如果不透明度超出范围[0..1] -
IllegalComponentStateException
- 如果窗口有装饰并且不透明度小于1.0f
-
IllegalComponentStateException
- 如果窗口处于全屏模式且不透明度小于1.0f
-
UnsupportedOperationException
- 如果不支持GraphicsDevice.WindowTranslucency#TRANSLUCENT TRANSLUCENT
半透明且不透明度小于1.0f
- 自:
- 1.7
- 另请参见:
- 底层系统必须支持
-
getShape
返回窗口的形状。此方法返回的值可能与先前使用setShape(shape)
设置的值不同,但保证表示相同的形状。- 返回:
-
窗口的形状或
null
(如果未为窗口指定形状) - 自:
- 1.7
- 另请参见:
-
setShape
设置窗口的形状。设置形状会切断窗口的某些部分。仅保留属于给定
Shape
的部分可见且可点击。如果形状参数为null
,此方法会恢复默认形状,在大多数平台上使窗口呈矩形。要设置非空形状,必须满足以下条件:
- 底层系统必须支持
PERPIXEL_TRANSPARENT
半透明 - 窗口必须是无装饰的(参见
Frame.setUndecorated(boolean)
和Dialog.setUndecorated(boolean)
) - 窗口不能处于全屏模式(参见
GraphicsDevice.setFullScreenWindow(Window)
)
如果请求的形状不是
null
,并且上述任何条件不满足,则此窗口的形状不会更改,并且将抛出UnsupportedOperationException
或IllegalComponentStateException
。个别像素的半透明级别也可能受其颜色的alpha分量(请参见
setBackground(Color)
)和不透明度值(请参见setOpacity(float)
)的影响。有关更多详细信息,请参见GraphicsDevice.WindowTranslucency
。- 参数:
-
shape
- 要设置给窗口的形状 - 抛出:
-
IllegalComponentStateException
- 如果形状不是null
且窗口有装饰 -
IllegalComponentStateException
- 如果形状不是null
且窗口处于全屏模式 -
UnsupportedOperationException
- 如果形状不是null
且不支持PERPIXEL_TRANSPARENT
半透明 - 自:
- 1.7
- 另请参见:
- 底层系统必须支持
-
getBackground
获取此窗口的背景颜色。请注意,返回的颜色的alpha分量指示窗口是否处于非不透明(逐像素半透明)模式。
- 覆盖:
-
getBackground
在类中Component
- 返回:
- 此组件的背景颜色
- 另请参见:
-
setBackground
设置此窗口的背景颜色。如果窗口系统支持
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
半透明性 - 参见:
- 图形设备支持此窗口所在位置的
-
isOpaque
public boolean isOpaque()指示窗口当前是否不透明。如果窗口的背景颜色不是
null
且颜色的alpha分量小于1.0f
,则该方法返回false
。否则,该方法返回true
。 -
paint
绘制容器。将此操作转发给此容器的子组件中的任何轻量级组件。如果重新实现此方法,则应调用super.paint(g),以便正确呈现轻量级组件。如果子组件完全被g中当前剪切设置剪切,则不会将paint()转发给该子组件。
-
Component.applyComponentOrientation
取代。