模块  java.desktop
软件包  java.awt

Class Window

  • 实现的所有接口
    ImageObserverMenuContainerSerializableAccessible
    已知直接子类:
    BasicToolBarUI.DragWindowDialogFrameJWindow

    public class Window
    extends Container
    implements Accessible
    Window对象是顶级窗口,没有边框且没有菜单栏。 窗口的默认布局是BorderLayout

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

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

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

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

    在这样的环境中,调用setLocation ,必须将虚拟坐标传递给此方法。 同样,在getLocationOnScreen上调用getLocationOnScreen Window返回虚拟设备坐标。 拨打getBounds一个方法GraphicsConfiguration找到它的起源在虚拟坐标系统相同。

    以下代码将Window的位置设置为(10,10)相对于相应GraphicsConfiguration的物理屏幕的GraphicsConfiguration 如果不考虑GraphicsConfiguration的边界,则Window位置将相对于虚拟坐标系设置为(10,10),并且将显示在主物理屏幕上,这可能与物理屏幕的物理屏幕不同。指定GraphicsConfiguration

      Window w = new Window(Window owner, GraphicsConfiguration gc);
          Rectangle bounds = gc.getBounds();
          w.setLocation(10 + bounds.x, 10 + bounds.y); 

    注意:顶级窗口(包括Window s, Frame s和Dialog s)的位置和大小受桌面窗口管理系统的控制。 拨打setLocationsetSizesetBounds是转发到窗口管理系统的请求(不是指令)。 将尽一切努力履行此类要求。 但是,在某些情况下,窗口管理系统可能会忽略此类请求,或修改所请求的几何图形,以便以更接近桌面设置的方式放置和调整Window大小。

    由于本地事件处理的异步特性,结果被返回getBoundsgetLocationgetLocationOnScreengetSize ,直到最后一个请求已被处理可能不反映屏幕上Window的实际几何结构。 在后续请求的处理期间,当窗口管理系统满足请求时,这些值可能相应地改变。

    应用程序可以任意设置不可见Window的大小和位置,但是当Window可见时,窗口管理系统可以随后改变其大小和/或位置。 将生成一个或多个ComponentEvent以指示新几何体。

    Windows能够生成以下WindowEvent:WindowOpened,WindowClosed,WindowGainedFocus,WindowLostFocus。

    从以下版本开始:
    1.0
    另请参见:
    WindowEventaddWindowListener(java.awt.event.WindowListener)BorderLayoutSerialized Form
    • 构造方法详细信息

      • Window

        public Window​(Frame owner)
        构造一个新的,最初不可见的窗口,其中指定的是Frame作为其所有者。 除非其所有者在屏幕上显示,否则窗口将无法聚焦。

        如果存在安全管理器集,则调用它以检查AWTPermission("showWindowWithoutWarningBanner") 如果该检查失败并显示SecurityException则会创建警告横幅。

        参数
        owner - Frame作为所有者或 null如果此窗口没有所有者
        异常
        IllegalArgumentException - 如果 ownerGraphicsConfiguration不是来自屏幕设备
        HeadlessException - 当 GraphicsEnvironment.isHeadless返回 true
        另请参见:
        GraphicsEnvironment.isHeadless()isShowing()
      • Window

        public Window​(Window owner)
        构造一个新的,最初不可见的窗口,其中指定的是Window作为其所有者。 除非最近的拥有FrameDialog显示在屏幕上,否则此窗口将无法聚焦。

        如果存在安全管理器集,则调用它以检查AWTPermission("showWindowWithoutWarningBanner") 如果该检查失败并显示SecurityException则会创建警告横幅。

        参数
        owner - Window作为所有者或 null如果此窗口没有所有者
        异常
        IllegalArgumentException - 如果 ownerGraphicsConfiguration不是来自屏幕设备
        HeadlessException - 当 GraphicsEnvironment.isHeadless()返回 true
        从以下版本开始:
        1.2
        另请参见:
        GraphicsEnvironment.isHeadless()isShowing()
      • Window

        public Window​(Window owner,
                      GraphicsConfiguration gc)
        使用指定的所有者Window和屏幕设备的GraphicsConfiguration构造一个新的,最初不可见的窗口。 除非最近的拥有FrameDialog显示在屏幕上,否则窗口将无法聚焦。

        如果存在安全管理器集,则调用它以检查AWTPermission("showWindowWithoutWarningBanner") 如果该检查失败并显示SecurityException则会创建警告横幅。

        参数
        owner - 作为所有者的窗口或 null如果此窗口没有所有者
        gc - 目标屏幕设备的GraphicsConfiguration ; 如果gcnull ,则假定系统默认为GraphicsConfiguration
        异常
        IllegalArgumentException - 如果 gc不是来自屏幕设备
        HeadlessException - 当 GraphicsEnvironment.isHeadless()返回 true
        从以下版本开始:
        1.3
        另请参见:
        GraphicsEnvironment.isHeadless()GraphicsConfiguration.getBounds()isShowing()
    • 方法详细信息

      • getIconImages

        public List<Image> getIconImages()
        返回要显示为此窗口图标的图像序列。

        此方法返回内部存储列表的副本,因此返回对象上的所有操作都不会影响窗口的行为。

        结果
        此窗口的图标图像列表的副本,如果此窗口没有图标图像,则为空列表。
        从以下版本开始:
        1.6
        另请参见:
        setIconImages(java.util.List<? extends java.awt.Image>)setIconImage(Image)
      • setIconImages

        public void setIconImages​(List<? extends Image> icons)
        设置要显示的图像序列作为此窗口的图标。 getIconImages后续调用将始终返回icons列表的副本。

        根据平台功能,将使用一个或多个不同尺寸的图像作为窗口的图标。

        icons列表还可以包含MultiResolutionImage图像。 取决于屏幕分辨率的合适图像从基础MultiResolutionImage图像中提取并添加到图标列表,同时从列表中移除基本分辨率图像。 icons扫描icons列表以获取最合适尺寸的图像。 如果列表包含多个相同大小的图像,则将使用第一个图像。

        没有指定图标的无主窗口使用platform-default图标。 除非明确覆盖,否则可以从所有者继承拥有窗口的图标。 将图标设置为null或空列表将恢复默认行为。

        注意:本机窗口系统可以使用不同尺寸的不同图像来表示窗口,具体取决于上下文(例如窗口装饰,窗口列表,任务栏等)。 它们也可以仅针对所有上下文使用单个图像,或者根本不使用任何图像。

        参数
        icons - 要显示的图标图像列表。
        从以下版本开始:
        1.6
        另请参见:
        getIconImages()setIconImage(Image)
      • setIconImage

        public void setIconImage​(Image image)
        设置要显示为此窗口图标的图像。

        可以使用此方法代替setIconImages()将单个图像指定为窗口的图标。

        以下声明:

          setIconImage(image); 
        相当于:
          ArrayList<Image> imageList = new ArrayList<Image>();
             imageList.add(image);
             setIconImages(imageList); 

        注意:本机窗口系统可以使用不同尺寸的不同图像来表示窗口,具体取决于上下文(例如窗口装饰,窗口列表,任务栏等)。 它们也可以仅针对所有上下文使用单个图像,或者根本不使用任何图像。

        参数
        image - 要显示的图标图像。
        从以下版本开始:
        1.6
        另请参见:
        setIconImages(java.util.List<? extends java.awt.Image>)getIconImages()
      • pack

        public void pack()
        使此窗口的大小适合其子组件的首选大小和布局。 如果任一尺寸小于上一次调用setMinimumSize方法所指定的最小尺寸,则窗口的最终宽度和高度将自动放大。

        如果窗口和/或其所有者尚未显示,则在计算首选大小之前,它们都可显示。 窗口在计算其大小后进行验证。

        另请参见:
        Component.isDisplayable()setMinimumSize(java.awt.Dimension)
      • setMinimumSize

        public void setMinimumSize​(Dimension minimumSize)
        将此窗口的最小大小设置为常量值。 getMinimumSize后续调用将始终返回此值。 如果当前窗口的大小小于minimumSize ,则窗口大小会自动放大以符合最小大小。

        如果之后调用setSizesetBounds方法,其宽度或高度小于setMinimumSize方法指定的宽度或高度,则窗口将自动放大以满足minimumSize值。 minimumSize值也会影响pack方法的行为。

        通过将最小大小参数设置为null值来恢复默认行为。

        如果用户尝试在minimumSize值下方调整窗口大小,则可能会限制调整大小操作。 此行为取决于平台。

        重写:
        setMinimumSize在课程 Component
        参数
        minimumSize - 此窗口的新最小大小
        从以下版本开始:
        1.6
        另请参见:
        Component.setMinimumSize(java.awt.Dimension)Container.getMinimumSize()Component.isMinimumSizeSet()setSize(Dimension)pack()
      • setSize

        public void setSize​(Dimension d)
        调整此组件的大小,使其宽度为d.width ,高度为d.height

        此方法更改与布局相关的信息,因此使组件层次结构无效。

        如果其中一个值小于先前调用setMinimumSize所指定的最小值,则会自动放大d.widthd.height值。

        该方法更改与几何相关的数据。 因此,本机窗口系统可以忽略这样的请求,或者它可以修改所请求的数据,以便以与桌面设置紧密对应的方式放置和调整Window对象的大小。

        重写:
        setSize在课程 Component
        参数
        d - 指定此组件的新大小的维度
        从以下版本开始:
        1.6
        另请参见:
        Component.getSize()setBounds(int, int, int, int)setMinimumSize(java.awt.Dimension)
      • setSize

        public void setSize​(int width,
                            int height)
        调整此组件的大小,使其宽度为width ,高度为height

        此方法更改与布局相关的信息,因此使组件层次结构无效。

        如果其中一个值小于先前调用setMinimumSize所指定的最小值,则会自动放大widthheight值。

        该方法更改与几何相关的数据。 因此,本机窗口系统可以忽略这些请求,或者它可以修改所请求的数据,以便以与桌面设置紧密对应的方式放置和调整Window对象的大小。

        重写:
        setSize在课程 Component
        参数
        width - 此组件的新宽度(以像素为单位)
        height - 此组件的新高度(以像素为单位)
        从以下版本开始:
        1.6
        另请参见:
        Component.getSize()setBounds(int, int, int, int)setMinimumSize(java.awt.Dimension)
      • setLocation

        public void setLocation​(int x,
                                int y)
        将此组件移动到新位置。 新位置的左上角由此组件父级坐标空间中的xy参数指定。

        此方法更改与布局相关的信息,因此使组件层次结构无效。

        该方法更改与几何相关的数据。 因此,本机窗口系统可以忽略这样的请求,或者它可以修改所请求的数据,以便以与桌面设置紧密对应的方式放置和调整Window对象的大小。

        重写:
        setLocationComponent
        参数
        x - 父级坐标空间中新位置左上角的 x坐标
        y - 父级坐标空间中新位置左上角的 y坐标
        另请参见:
        Component.getLocation()Component.setBounds(int, int, int, int)Component.invalidate()
      • setLocation

        public void setLocation​(Point p)
        将此组件移动到新位置。 新位置的左上角由点p指定。 p在父坐标空间中给出。

        此方法更改与布局相关的信息,因此使组件层次结构无效。

        该方法更改与几何相关的数据。 因此,本机窗口系统可以忽略这样的请求,或者它可以修改所请求的数据,以便以与桌面设置紧密对应的方式放置和调整Window对象的大小。

        重写:
        setLocation在课程 Component
        参数
        p - 定义新位置左上角的点,在此组件的父级的坐标空间中给出
        另请参见:
        Component.getLocation()Component.setBounds(int, int, int, int)Component.invalidate()
      • reshape

        @Deprecated
        public void reshape​(int x,
                            int y,
                            int width,
                            int height)
        Deprecated.
        As of JDK version 1.1, replaced by setBounds(int, int, int, int).
        从类Component描述: Component
        重塑此组件的边界矩形。
        重写:
        reshape在课程 Component
        参数
        x - 矩形左上角的 x坐标
        y - 矩形左上角的 y坐标
        width - 矩形的宽度
        height - 矩形的高度
      • setVisible

        public void setVisible​(boolean b)
        显示或隐藏此Window具体取决于参数b的值。

        如果方法显示窗口,则窗口也会在以下条件下聚焦:

        • Window符合isFocusableWindow()方法中列出的要求。
        • WindowautoRequestFocus属性是的true值。
        • 原生窗口系统允许Window集中注意力。
        第二个条件( autoRequestFocus属性的值)有一个例外。 如果窗口是模式对话框,则会不考虑该属性,该对话框会阻止当前聚焦的窗口。

        在收到WINDOW_GAINED_FOCUS或WINDOW_ACTIVATED事件之前,开发人员绝不能假定窗口是焦点窗口或活动窗口。

        重写:
        setVisible在课程 Component
        参数
        b - 如果true ,使Window可见,否则隐藏Window 如果Window和/或其所有者尚未显示,则两者都可显示。 Window将在可见之前进行验证。 如果Window已经可见,这将使Window位于前面。

        如果false ,则隐藏此子组件及其所有子组件Window Window及其子组件,可取得明显再次到呼叫#setVisible(true)

        另请参见:
        Component.isDisplayable()Component.setVisible(boolean)toFront()dispose()setAutoRequestFocus(boolean)isFocusableWindow()
      • show

        @Deprecated
        public void show()
        Deprecated.
        As of JDK version 1.5, replaced by setVisible(boolean).
        使窗口可见。 如果窗口和/或其所有者尚未显示,则两者都可显示。 窗口将在可见之前进行验证。 如果窗口已经可见,则会将窗口置于前面。
        重写:
        show在课程 Component
        另请参见:
        Component.isDisplayable()toFront()
      • hide

        @Deprecated
        public void hide()
        Deprecated.
        As of JDK version 1.5, replaced by setVisible(boolean).
        隐藏此窗口,其子组件及其拥有的所有子组件。 通过调用show可以再次显示Window及其子组件。
        重写:
        hide在课程 Component
        另请参见:
        show()dispose()
      • dispose

        public void dispose()
        释放此Window及其子组件及其所有子组件使用的所有本机屏幕资源。 也就是说,这些Component的资源将被销毁,它们消耗的任何内存都将被返回给操作系统,并且它们将被标记为不可显示。

        通过随后调用packshow重建本机资源,可以再次显示Window及其子组件。 重新创建的状态Window及其子组件将等同于这些对象在其中的点的状态Window被布置(不考虑这些操作之间附加的修改)。

        注意 :当Java虚拟机(VM)中的最后一个可显示窗口被丢弃时,VM可能会终止。 有关更多信息,请参见AWT Threading Issues

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

        public void toFront()
        如果此窗口可见,则将此窗口置于前面,并使其成为焦点窗口。

        将此窗口置于堆叠顺序的顶部,并将其显示在此VM中任何其他Windows的前面。 如果此窗口不可见,则不会执行任何操作。 某些平台不允许拥有其他Windows的Windows出现在这些拥有的Windows之上。 某些平台可能不允许此VM将其Windows置于本机应用程序的窗口或其他VM的Windows之上。 此权限可能取决于此VM中的窗口是否已经集中。 将尽一切努力在堆叠顺序中尽可能高地移动此窗口; 但是,开发人员不应该假设此方法会在任何情况下将此窗口移动到所有其他窗口之上。

        在此窗口收到WINDOW_GAINED_FOCUS或WINDOW_ACTIVATED事件之前,开发人员绝不能假定此窗口是焦点窗口或活动窗口。 在最顶层窗口是焦点窗口的平台上,此方法可能会在以下条件下关注此窗口(如果它尚未聚焦):

        • 该窗口符合isFocusableWindow()方法中列出的要求。
        • 窗口的属性autoRequestFocustrue值。
        • 本机窗口系统允许窗口聚焦。
        在堆叠顺序通常不会影响聚焦窗口的平台上,此方法可能会使焦点和活动Windows保持不变。

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

        如果此窗口被模态对话框阻止,则阻止对话框将被置于前面并保持在被阻止的窗口上方。

        另请参见:
        toBack()setAutoRequestFocus(boolean)isFocusableWindow()
      • toBack

        public void toBack()
        如果此窗口可见,则将此窗口发送到后面,如果它是聚焦或活动窗口,则可能导致它失去焦点或激活。

        将此窗口置于堆叠顺序的底部,并将其显示在此VM中的任何其他Windows后面。 如果此窗口不可见,则不会执行任何操作。 某些平台不允许其他Windows拥有的Windows显示在其所有者下方。 将尽一切努力在堆叠顺序中尽可能低地移动此窗口; 但是,开发人员不应该假设此方法会在所有情况下将此窗口移动到所有其他窗口之下。

        由于本机窗口系统的变化,无法保证对焦点和活动Windows的更改。 在此窗口收到WINDOW_LOST_FOCUS或WINDOW_DEACTIVATED事件之前,开发人员绝不能假定此窗口不再是焦点窗口或活动窗口。 在最顶层窗口是焦点窗口的平台上,此方法可能会导致此窗口失去焦点。 在这种情况下,此VM中下一个最高的可聚焦窗口将获得焦点。 在堆叠顺序通常不会影响聚焦窗口的平台上,此方法可能会使焦点和活动Windows保持不变。

        另请参见:
        toFront()
      • getWarningString

        public final String getWarningString()
        获取此窗口显示的警告字符串。 如果此窗口不安全,则警告字符串将显示在窗口可见区域的某处。 如果有安全管理器且安全管理器拒绝AWTPermission("showWindowWithoutWarningBanner") ,则窗口不安全。

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

        结果
        此窗口的警告字符串。
      • getLocale

        public Locale getLocale()
        获取与此窗口关联的Locale对象(如果已设置区域设置)。 如果未设置区域设置,则返回默认区域设置。
        重写:
        getLocale在课程 Component
        结果
        为此窗口设置的区域设置。
        从以下版本开始:
        1.1
        另请参见:
        Locale
      • getInputContext

        public InputContext getInputContext()
        获取此窗口的输入上下文。 窗口总是有一个输入上下文,由子组件共享,除非它们创建和设置自己的子组件。
        重写:
        getInputContextComponent
        结果
        此组件使用的输入上下文; null如果无法确定上下文
        从以下版本开始:
        1.2
        另请参见:
        Component.getInputContext()
      • setCursor

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

        如果Java平台实现和/或本机系统不支持改变鼠标光标形状,则该方法可能没有视觉效果。

        重写:
        setCursor在课程 Component
        参数
        cursor - Cursor类定义的常量Cursor 如果此参数为null,则此窗口的光标将设置为Cursor.DEFAULT_CURSOR类型。
        从以下版本开始:
        1.1
        另请参见:
        Component.getCursor()Cursor
      • getOwner

        public Window getOwner()
        返回此窗口的所有者。
        结果
        这个窗口的拥有者
        从以下版本开始:
        1.2
      • getOwnedWindows

        public Window[] getOwnedWindows()
        返回一个包含此窗口当前拥有的所有窗口的数组。
        结果
        所有拥有的窗口的数组
        从以下版本开始:
        1.2
      • getWindows

        public static Window[] getWindows()
        返回由此应用程序创建的所有Window的数组,包括拥有者和无主者。 如果从applet调用,则该数组仅包含该applet可访问的Window

        警告:此方法可能会返回系统创建的窗口,例如打印对话框。 应用程序不应假设存在这些对话框,应用程序也不应假设有关这些对话框的任何内容,例如组件位置, LayoutManager或序列化。

        结果
        应用程序创建的所有 Window的数组
        从以下版本开始:
        1.6
        另请参见:
        Frame.getFrames()getOwnerlessWindows()
      • getOwnerlessWindows

        public static Window[] getOwnerlessWindows()
        返回此应用程序创建的没有所有者的所有Window的数组。 它们包括Frame和无主Dialog以及Window 如果从applet调用,则该数组仅包含该applet可访问的Window

        警告:此方法可能会返回系统创建的窗口,例如打印对话框。 应用程序不应假设存在这些对话框,应用程序也不应假设有关这些对话框的任何内容,例如组件位置, LayoutManager或序列化。

        结果
        此应用程序创建的所有无主 Window的数组
        从以下版本开始:
        1.6
        另请参见:
        Frame.getFrames()getWindows()
      • getListeners

        public <T extends EventListener> T[] getListeners​(<T> listenerType)
        返回当前注册的所有对象的数组FooListener在这个S Window FooListener s使用addFooListener方法注册。

        您可以使用类文字指定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 - 如果 listenerTypenull
        从以下版本开始:
        1.3
        另请参见:
        getWindowListeners()
      • processWindowEvent

        protected void processWindowEvent​(WindowEvent e)
        通过将窗口事件分派给任何已注册的WindowListener对象来处理此窗口上发生的窗口事件。 注意:除非为此组件启用了窗口事件,否则不会调用此方法; 发生以下任一情况时会发生这种情况:
        • WindowListener对象通过addWindowListener注册
        • 通过enableEvents启用窗口事件

        请注意,如果事件参数为null则行为未指定,可能会导致异常。

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

        protected void processWindowFocusEvent​(WindowEvent e)
        通过将窗口焦点事件分派给任何已注册的WindowFocusListener对象来处理此窗口上发生的窗口焦点事件。 注意:除非为此窗口启用了窗口焦点事件,否则不会调用此方法。 发生以下任一情况时会发生这种情况:
        • WindowFocusListener通过addWindowFocusListener注册
        • 通过enableEvents启用窗口焦点事件

        请注意,如果事件参数为null则行为未指定,可能会导致异常。

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

        protected void processWindowStateEvent​(WindowEvent e)
        处理在此窗口上发生的窗口状态事件,方法是将它们分派给任何已注册的WindowStateListener对象。 注意:除非为此窗口启用了窗口状态事件,否则不会调用此方法。 发生以下任一情况时会发生这种情况:
        • a WindowStateListener的注册WindowStateListeneraddWindowStateListener
        • 窗口状态事件通过enableEvents启用

        请注意,如果事件参数为null则行为未指定,可能会导致异常。

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

        public final void setAlwaysOnTop​(boolean alwaysOnTop)
                                  throws SecurityException
        设置此窗口是否应始终位于其他窗口之上。 如果有多个始终在顶部的窗口,则它们的相对顺序未指定且与平台相关。

        如果某个其他窗口已经始终在顶部,那么这些窗口之间的相对顺序是未指定的(取决于平台)。 除了可能是另一个永远在顶部的窗口之外,没有窗口可以在总是在顶部的窗口上。

        始终在顶部窗口拥有的所有窗口都会继承此状态并自动变为始终在线。 如果一个窗口不再始终在顶部,它拥有的窗口将不再是永远在顶部。 当始终在顶部窗口发送toBack ,其始终在顶部状态设置为false

        在值为true的窗口上调用此方法,并且窗口可见且平台支持此窗口的always-on-top时,窗口立即向前移动,将其“粘贴”在最顶部位置。 如果窗口当前不可见,则此方法将always-on-top状态设置为true但不会使窗口前进。 稍后显示窗口时,它将始终位于顶部。

        在值为false的窗口上调用此方法时,always-on-top状态将设置为normal。 它还可能导致顶级窗口的z顺序中未指定的,与平台相关的更改,但其他始终在顶部的窗口将保持在最顶层位置。 在具有正常状态的窗口上使用值false调用此方法无效。

        注意 :某些平台可能不支持always-on-top窗口。 要检测当前平台是否支持始终在顶部的窗口,请使用Toolkit.isAlwaysOnTopSupported()isAlwaysOnTopSupported() 如果此窗口不支持always-on-top模式,或者此窗口的工具包不支持always-on-top窗口,则调用此方法无效。

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

        参数
        alwaysOnTop - 如果窗口应始终位于其他窗口之上, alwaysOnTop true
        异常
        SecurityException - 如果调用线程没有权限设置always-on-top属性的值
        从以下版本开始:
        1.5
        另请参见:
        isAlwaysOnTop()toFront()toBack()AWTPermissionisAlwaysOnTopSupported()getToolkit()Toolkit.isAlwaysOnTopSupported()
      • isAlwaysOnTopSupported

        public boolean isAlwaysOnTopSupported()
        返回此窗口是否支持always-on-top模式。 有些平台可能不支持永远在顶部的窗口,有些可能只支持某些顶级窗口; 例如,平台可能不支持always-on-top模式对话框。
        结果
        true ,如果此窗口支持always-on-top模式,则此窗口的工具包支持always-on-top窗口,否则为 false
        从以下版本开始:
        1.6
        另请参见:
        setAlwaysOnTop(boolean)getToolkit()Toolkit.isAlwaysOnTopSupported()
      • isAlwaysOnTop

        public final boolean isAlwaysOnTop()
        返回此窗口是否为始终在顶部的窗口。
        结果
        true ,如果窗口处于始终处于最高状态, false
        从以下版本开始:
        1.5
        另请参见:
        setAlwaysOnTop(boolean)
      • getFocusOwner

        public Component getFocusOwner()
        如果此窗口被聚焦,则返回此窗口的子Component,该窗口具有焦点; 否则返回null。
        结果
        具有焦点的子Component,如果没有焦点,则为null
        另请参见:
        getMostRecentFocusOwner()isFocused()
      • getMostRecentFocusOwner

        public Component getMostRecentFocusOwner()
        返回此窗口聚焦时将接收焦点的此窗口的子Component。 如果此窗口当前是焦点,则此方法返回与getFocusOwner()相同的组件。 如果此窗口未聚焦,则将返回最近请求焦点的子Component。 如果没有子Component请求焦点,并且这是一个可聚焦窗口,则返回此Window的初始可聚焦Component。 如果没有子Component请求焦点,并且这是一个不可聚焦的Window,则返回null。
        结果
        在关注此窗口时将获得焦点的子Component
        从以下版本开始:
        1.4
        另请参见:
        getFocusOwner()isFocused()isFocusableWindow()
      • isActive

        public boolean isActive()
        返回此Window是否处于活动状态。 只有一个框架或一个对话框可能是活动的。 本机窗口系统可以表示具有特殊装饰的活动窗口或其子窗口,例如突出显示的标题栏。 活动窗口始终是聚焦窗口,或者是聚焦窗口所有者的第一个框架或对话框。
        结果
        这是否是活动窗口。
        从以下版本开始:
        1.4
        另请参见:
        isFocused()
      • isFocused

        public boolean isFocused()
        返回此Window是否已聚焦。 如果存在焦点所有者,则焦点窗口是包含该焦点所有者的窗口。 如果没有焦点所有者,则不会关注Window。

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

        结果
        这是否是重点窗口。
        从以下版本开始:
        1.4
        另请参见:
        isActive()
      • isFocusableWindow

        public final boolean isFocusableWindow()
        返回此Window是否可以成为焦点窗口,即此Window或其任何子组件是否可以成为焦点所有者。 要使帧或对话框可聚焦,其可聚焦窗口状态必须设置为true 对于不是可聚焦的框架或对话框的窗口,其可聚焦窗口状态必须设置为true ,其最近的拥有框架或对话框必须在屏幕上显示,并且它必须在其焦点遍历循环中包含至少一个组件。 如果不满足任何这些条件,则此Window及其任何子组件都不能成为焦点所有者。
        结果
        true如果此窗口可以是聚焦窗口; 否则为false
        从以下版本开始:
        1.4
        另请参见:
        getFocusableWindowState()setFocusableWindowState(boolean)isShowing()Component.isFocusable()
      • getFocusableWindowState

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

        默认情况下,所有Windows的可聚焦窗口状态均为true

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

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

        将窗口的可聚焦状态设置为false是应用程序向AWT标识将用作浮动调色板或工具栏的窗口的标准机制,因此应该是不可聚焦的窗口。 在可见的Window上设置可聚焦状态可能会对某些平台产生延迟影响 - 只有当Window变为隐藏然后再次可见时, Window发生实际更改。 要确保跨平台的一致行为,请在Window不可见时设置Window的可聚焦状态,然后显示它。

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

        public void setAutoRequestFocus​(boolean autoRequestFocus)
        设置此窗口是否应该随后显示(通过调用setVisible(true) )或移动到前面(通过调用toFront() )获得焦点

        注意,可以间接调用setVisible(true) (例如,当显示窗口的所有者使得窗口被显示时)。 toFront()也可以间接调用(例如,当setVisible(true)被称为上已经可见窗口)。 在所有这些情况下,此属性也会生效。

        拥有的窗口不会继承该属性的值。

        参数
        autoRequestFocus - 此窗口是否应该集中在随后显示或移动到前面
        从以下版本开始:
        1.7
        另请参见:
        isAutoRequestFocus()isFocusableWindow()setVisible(boolean)toFront()
      • isAutoRequestFocus

        public boolean isAutoRequestFocus()
        返回此窗口是否应该随后显示(通过调用setVisible(true) )或移动到前面(通过调用toFront() )获得焦点

        默认情况下,窗口的值为autoRequestFocus值为true

        结果
        价值 autoRequestFocus
        从以下版本开始:
        1.7
        另请参见:
        setAutoRequestFocus(boolean)
      • addPropertyChangeListener

        public void addPropertyChangeListener​(PropertyChangeListener listener)
        将PropertyChangeListener添加到侦听器列表。 侦听器已注册此类的所有绑定属性,包括以下内容:
        • 这个Window的字体(“font”)
        • 这个窗口的背景颜色(“背景”)
        • 这个窗口的前景色(“前景”)
        • 这个窗口的可聚焦性(“可聚焦”)
        • 此窗口的焦点遍历键启用状态(“focusTraversalKeysEnabled”)
        • 这个窗口的FORWARD_TRAVERSAL_KEYS集(“forwardFocusTraversalKeys”)
        • 这个Window的一组BACKWARD_TRAVERSAL_KEYS(“backwardFocusTraversalKeys”)
        • 这个窗口的UP_CYCLE_TRAVERSAL_KEYS(“upCycleFocusTraversalKeys”)的集合
        • 这个窗口的DOWN_CYCLE_TRAVERSAL_KEYS(“downCycleFocusTraversalKeys”)
        • 此窗口的焦点遍历策略(“focusTraversalPolicy”)
        • 这个Window的可聚焦窗口状态(“focusableWindowState”)
        • 这个窗口始终处于最顶层状态(“alwaysOnTop”)
        请注意,如果此Window继承绑定属性,则不会触发任何事件以响应继承属性的更改。

        如果listener为null,则不会抛出异常并且不执行任何操作。

        重写:
        addPropertyChangeListener在课程 Container
        参数
        listener - 要添加的PropertyChangeListener
        另请参见:
        Component.removePropertyChangeListener(java.beans.PropertyChangeListener)addPropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)
      • addPropertyChangeListener

        public void addPropertyChangeListener​(String propertyName,
                                              PropertyChangeListener listener)
        将PropertyChangeListener添加到特定属性的侦听器列表中。 指定的属性可以是用户定义的,也可以是以下之一:
        • 这个Window的字体(“font”)
        • 这个窗口的背景颜色(“背景”)
        • 这个窗口的前景色(“前景”)
        • 这个窗口的可聚焦性(“可聚焦”)
        • 此窗口的焦点遍历键启用状态(“focusTraversalKeysEnabled”)
        • 这个窗口的FORWARD_TRAVERSAL_KEYS集(“forwardFocusTraversalKeys”)
        • 这个Window的一组BACKWARD_TRAVERSAL_KEYS(“backwardFocusTraversalKeys”)
        • 这个窗口的UP_CYCLE_TRAVERSAL_KEYS(“upCycleFocusTraversalKeys”)的集合
        • 这个窗口的DOWN_CYCLE_TRAVERSAL_KEYS(“downCycleFocusTraversalKeys”)
        • 此窗口的焦点遍历策略(“focusTraversalPolicy”)
        • 这个Window的可聚焦窗口状态(“focusableWindowState”)
        • 这个窗口始终处于最顶层状态(“alwaysOnTop”)
        请注意,如果此Window继承绑定属性,则不会触发任何事件以响应继承属性的更改。

        如果listener为null,则不会抛出异常并且不执行任何操作。

        重写:
        addPropertyChangeListener在课程 Container
        参数
        propertyName - 上面列出的其中一个属性
        listener - 要添加的PropertyChangeListener
        另请参见:
        addPropertyChangeListener(java.beans.PropertyChangeListener)Component.removePropertyChangeListener(java.beans.PropertyChangeListener)
      • isValidateRoot

        public boolean isValidateRoot()
        指示此容器是否为验证根。

        Window对象是验证根,因此,它们重写此方法以返回true

        重写:
        isValidateRoot在课程 Container
        结果
        true
        从以下版本开始:
        1.7
        另请参见:
        Container.isValidateRoot()
      • postEvent

        @Deprecated
        public boolean postEvent​(Event e)
        Deprecated.
        As of JDK version 1.1 replaced by dispatchEvent(AWTEvent).
        从界面复制的说明: MenuContainer
        将事件发布给听众。
        Specified by:
        postEvent在界面 MenuContainer
        重写:
        postEvent在课程 Component
        参数
        e - 要派遣的事件
        结果
        发布活动的结果
      • getAccessibleContext

        public AccessibleContext getAccessibleContext()
        获取与此Window关联的AccessibleContext。 对于Windows,AccessibleContext采用AccessibleAWTWindow的形式。 如有必要,将创建一个新的AccessibleAWTWindow实例。
        Specified by:
        getAccessibleContext在界面 Accessible
        重写:
        getAccessibleContext在课程 Component
        结果
        一个AccessibleAWTWindow,用作此Window的AccessibleContext
        从以下版本开始:
        1.3
      • setLocationRelativeTo

        public void setLocationRelativeTo​(Component c)
        根据以下方案设置窗口相对于指定组件的位置。

        下面提到的目标屏幕是在调用setLocationRelativeTo方法之后应该放置窗口的屏幕。

        • 如果组件为null ,或者与此组件关联的GraphicsConfigurationnull ,则窗口将位于屏幕中央。 可以使用GraphicsEnvironment.getCenterPoint方法获得中心点
        • 如果组件不是null ,但当前未显示,则窗口将放置在与此组件关联的GraphicsConfiguration定义的目标屏幕的中心。
        • 如果组件不是null并且显示在屏幕上,则窗口的位置使得窗口的中心与组件的中心重合。

        如果屏幕配置不允许窗口从一个屏幕移动到另一个屏幕,则窗口仅放置在根据上述条件确定的位置,并且其GraphicsConfiguration不会更改。

        注意 :如果窗口的下边缘不在屏幕上,则窗口将放置在最靠近屏幕中心的Component侧面。 因此,如果组件位于屏幕的右侧,则窗口位于其左侧,反之亦然。

        如果在计算窗口位置之后,窗口的上边缘,左边缘或右边缘在屏幕之外,则窗口的位置使窗口的上边缘,左边缘或右边缘与窗口的边缘重合。相应的屏幕边缘。 如果窗口的左右边缘都在屏幕外,则窗口位于屏幕的左侧。 如果顶部和底部边缘都在屏幕之外,则会发生类似的放置。 在这种情况下,窗口位于屏幕的顶部。

        该方法更改与几何相关的数据。 因此,本机窗口系统可以忽略这样的请求,或者它可以修改所请求的数据,以便以与桌面设置紧密对应的方式放置和调整Window对象的大小。

        参数
        c - 确定窗口位置的组件
        从以下版本开始:
        1.4
        另请参见:
        GraphicsEnvironment.getCenterPoint()
      • createBufferStrategy

        public void createBufferStrategy​(int numBuffers)
        为此组件创建多缓冲的新策略。 多缓冲对于渲染性能很有用。 此方法尝试使用提供的缓冲区数创建可用的最佳策略。 它将始终创建具有该数量的缓冲区的BufferStrategy 首先尝试翻页策略,然后尝试使用加速缓冲区的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,或者大写字母为 null
        从以下版本开始:
        1.4
        另请参见:
        getBufferStrategy()
      • getBufferStrategy

        public BufferStrategy getBufferStrategy()
        返回此组件使用的BufferStrategy 如果尚未创建或已处置BufferStrategy则此方法将返回null。
        结果
        此组件使用的缓冲区策略
        从以下版本开始:
        1.4
        另请参见:
        createBufferStrategy(int)
      • setLocationByPlatform

        public void setLocationByPlatform​(boolean locationByPlatform)
        设置此窗口是否应显示在本机窗口系统的默认位置,或者在下次使窗口可见时显示在当前位置(由getLocation返回)。 此行为类似于显示的本机窗口,没有以编程方式设置其位置。 如果未明确设置其位置,则大多数窗口系统会级联窗口。 一旦窗口显示在屏幕上,就确定实际位置。

        也可以通过将系统属性“java.awt.Window.locationByPlatform”设置为“true”来启用此行为,但对此方法的调用优先。

        拨打setVisiblesetLocationsetBounds调用后setLocationByPlatform窗口中清除此属性。

        例如,执行以下代码后:

          setLocationByPlatform(true);
         setVisible(true);
         boolean flag = isLocationByPlatform(); 
        该窗口将显示在平台的默认位置, flag将显示为false

        在以下示例中:

          setLocationByPlatform(true);
         setLocation(10, 10);
         boolean flag = isLocationByPlatform();
         setVisible(true); 
        该窗口将显示在(10,10), flag将显示在false
        参数
        locationByPlatform - true如果此窗口应出现在默认位置,如果在当前位置 false
        异常
        IllegalComponentStateException - 如果窗口显示在屏幕上且locationByPlatform为 true
        从以下版本开始:
        1.5
        另请参见:
        setLocation(int, int)isShowing()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)
        移动并调整此组件的大小。 左上角的新位置由xy指定,新大小由widthheight指定。

        此方法更改与布局相关的信息,因此使组件层次结构无效。

        如果其中一个值小于上一次调用setMinimumSize所指定的最小值,则会自动放大widthheight值。

        该方法更改与几何相关的数据。 因此,本机窗口系统可以忽略这些请求,或者它可以修改所请求的数据,以便以与桌面设置紧密对应的方式放置和调整Window对象的大小。

        重写:
        setBounds在课程 Component
        参数
        x - 此组件的新 x -coordinate
        y - 此组件的新 y -coordinate
        width - 该组件的新 width
        height - 该组件的新 height
        从以下版本开始:
        1.6
        另请参见:
        Component.getBounds()setLocation(int, int)setLocation(Point)setSize(int, int)setSize(Dimension)setMinimumSize(java.awt.Dimension)setLocationByPlatform(boolean)isLocationByPlatform()
      • getShape

        public Shape getShape()
        返回窗口的形状。 此方法返回的值可能与之前使用setShape(shape)设置的setShape(shape) ,但保证表示相同的形状。
        结果
        如果没有为窗口指定形状,则窗口的形状或 null
        从以下版本开始:
        1.7
        另请参见:
        setShape(Shape)GraphicsDevice.WindowTranslucency
      • isOpaque

        public boolean isOpaque()
        指示窗口当前是否不透明。

        如果窗口的背景颜色不是null并且颜色的alpha分量小于false则该方法返回1.0f 否则,该方法返回true

        重写:
        isOpaque在课程 Component
        结果
        true如果窗口不透明, false
        从以下版本开始:
        1.7
        另请参见:
        getBackground()setBackground(Color)
      • paint

        public void paint​(Graphics g)
        涂抹容器。 这会将绘制转发给任何属于此容器子级的轻量级组件。 如果重新实现此方法,则应调用super.paint(g)以便正确呈现轻量级组件。 如果子组件被g中的当前剪切设置完全剪切,则paint()将不会转发给该子组件。
        重写:
        paint在课程 Container
        参数
        g - 指定的图形窗口
        从以下版本开始:
        1.7
        另请参见:
        Component.update(Graphics)