Module  java.desktop
软件包  java.awt

Class Window

  • All Implemented Interfaces:
    ImageObserverMenuContainerSerializableAccessible
    已知直接子类:
    BasicToolBarUI.DragWindowDialogFrameJWindow


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

    构建窗口时,窗口必须有一个框架,对话框或其他窗口,作为其所有者。

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

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

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

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

    下面的代码设定的位置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 s, Frame s和Dialog )位于桌面窗口管理系统的控制之下。 调用setLocationsetSize ,并setBounds是转发到窗口管理系统的请求(不是指令)。 将竭尽全力履行这些要求。 然而,在某些情况下,窗口管理系统可能会忽略此类请求,或修改所请求的几何,以便以更符合桌面设置的方式放置和Window

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

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

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

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

      • Window

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

        如果有一个安全管理器集,它被调用来检查AWTPermission("showWindowWithoutWarningBanner") 如果该检查失败,并使用SecurityException则会创建警告SecurityException

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

        public Window​(Window owner)
        构造一个新的,最初看不见的窗口,其指定的WindowWindow 除非最近拥有FrameDialog在屏幕上显示,否则此窗口将不会被Dialog

        如果有一个安全管理器集,它被调用来检查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在屏幕上显示,否则窗口将不会Dialog

        如果有一个安全管理器设置,它被调用来检查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列表中最合适尺寸的图像。 如果列表包含几个相同大小的图像,则会使用第一个图像。

        没有图标的无窗窗口使用平台默认图标。 拥有窗口的图标可以从所有者继承,除非明确覆盖。 将图标设置为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()
      • removeNotify

        public void removeNotify​()
        通过删除其与其本机屏幕资源的连接,使此容器不可显示。 使容器不可显示将导致其所有的孩子都变得不可显示。 该方法在内部被工具包调用,不应该被程序直接调用。
        重写:
        removeNotifyContainer
        另请参见:
        Component.isDisplayable()Container.addNotify()
      • 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以下的值,则可能会限制调整大小操作。 这种行为是平台依赖的。

        重写:
        setMinimumSizeComponent
        参数
        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

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

        如果d.widthd.height值都小于先前调用setMinimumSize指定的最小尺寸,则d.widthd.height值将自动放大。

        该方法更改几何相关数据。 因此,本地窗口系统可以忽略这样的请求,或者它可以修改所请求的数据,使得Window对象被放置并且以与桌面设置紧密对应的方式进行调整。

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

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

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

        如果widthheight值小于以前调用setMinimumSize指定的最小大小,则自动放大widthsetMinimumSize

        该方法更改几何相关数据。 因此,本地窗口系统可以忽略这样的请求,或者它可以修改所请求的数据,使得Window对象被放置并且以与桌面设置密切对应的方式被Window

        重写:
        setSizeComponent
        参数
        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对象被放置并且以与桌面设置紧密对应的方式被Window

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

        @Deprecated
        public void reshape​(int x,
                            int y,
                            int width,
                            int height)
        已过时。 从JDK 1.1版开始,由setBounds(int, int, int, int)替代。
        描述从类别复制: Component
        重新整形这个组件的边界矩形。
        重写:
        reshapeComponent
        参数
        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事件,否则开发人员绝不能假定该窗口是关注或活动的窗口。

        重写:
        setVisibleComponent
        参数
        b - 如果true ,使Window可见,否则隐藏Window 如果Window和/或其所有者尚未显示,则两者均可显示。 Window将在被显示之前验证。 如果Window已经可见,这将带来Window到前面。

        如果false ,隐藏这个Window ,它的子组件,以及它所有的所有的孩子。 Window及其子组件可以再次显示,呼叫#setVisible(true)

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

        @Deprecated
        public void hide​()
        已过时。 自JDK版本1.5起,由setVisible(boolean)替代。
        隐藏此窗口,其子组件及其拥有的所有子项。 窗口及其子组件可以通过调用show再次show
        重写:
        hideComponent
        另请参见:
        show()dispose()
      • dispose

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

        Window及其子组件可以通过重新生成本地资源,再次调用packshow 重新创建的Window及其子组件的状态将与处理Window处理的这些对象的状态相同(不考虑这些操作之间的其他修改)。

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

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

        public void toFront​()
        如果此窗口可见,将此窗口放在前面,并可能使其成为聚焦窗口。

        将此窗口放置在堆叠顺序的顶部,并将其显示在此VM中任何其他Windows的前面。 如果此窗口不可见,将不会发生任何操作。 某些平台不允许拥有其他Windows的Windows显示在所拥有的Windows之上。 某些平台可能不允许此虚拟机将Windows位于本机应用程序的Windows或其他虚拟机的Windows上。 此权限可能取决于此VM中的窗口是否已经聚焦。 每次尝试将堆叠顺序中的该窗口移动到尽可能高的位置; 然而,开发人员不应该假设这种方法将在所有情况下将此窗口移到所有其他窗口之上。

        开发人员绝对不能假定此Window是焦点或活动的窗口,直到此窗口收到WINDOW_GAINED_FOCUS或WINDOW_ACTIVATED事件为止。 在最上面的窗口是关注窗口的平台上,在以下条件下,此方法可能会将此窗口(如果尚未集中)集中起来:

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

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

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

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

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

        将此窗口放置在堆叠顺序的底部,并将其显示在此VM中的任何其他Windows之后。 这个窗口不可见,不会发生任何动作。 某些平台不允许其他Windows拥有的Windows显示在其所有者的下方。 每次尝试将堆叠顺序中的窗口移动到尽可能低的位置; 然而,开发人员不应该假设这种方法会将Window在所有其他窗口中移动到所有情况。

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

        另请参见:
        toFront()
      • getWarningString

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

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

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

        public Locale getLocale​()
        获取与此窗口相关联的Locale对象,如果已设置了区域设置。 如果没有设置语言环境,则返回默认语言环境。
        重写:
        getLocaleComponent
        结果
        为此窗口设置的区域设置。
        从以下版本开始:
        1.1
        另请参见:
        Locale
      • getInputContext

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

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

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

        重写:
        setCursorComponent
        参数
        cursor - 由Cursor类定义的常量Cursor 如果此参数为空,则此窗口的光标将设置为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 s的数组,包括拥有和无主。 如果从小程序调用,该数组只包含该小程序可访问的Window

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

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

        public static Window[] getOwnerlessWindows​()
        返回由此应用程序创建的所有Window的数组,该数组没有所有者。 它们包括FrameDialog s和Window s。 如果从小程序调用,该数组只包含该小程序可访问的Window

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

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

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

        您可以使用类文字指定listenerType参数,如FooListener.class 例如,您可以使用以下代码查询Window w的窗口侦听器:

          WindowListener[] wls = (WindowListener[])(w.getListeners(WindowListener.class)); 
        如果没有这样的侦听器存在,这个方法返回一个空数组。
        重写:
        getListenersContainer
        参数类型
        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已通过addWindowStateListener注册
        • 窗口状态事件通过enableEvents启用

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

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

        public final void setAlwaysOnTop​(boolean alwaysOnTop)
                                  throws SecurityException
        设置此窗口是否应始终高于其他窗口。 如果有多个永久在线窗口,则它们的相对顺序是未指定的并且依赖于平台。

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

        始终在上的窗口拥有的所有窗口都会继承此状态,并自动变为始终处于顶端状态。 如果一个窗口不再是顶级的,那么它所拥有的窗口将不再一直处于顶端。 当一个始终在上的窗口发送toBack ,它的始终在上状态设置为false

        当在一个值为true的窗口上调用此方法时,该窗口是可见的,并且该平台在此窗口上始终支持该窗口,该窗口将立即被提起,将其“保持”在最顶端的位置。 如果窗口当前不可见,则该方法将始终处于顶部状态设置为true但不会将窗口向前。 当窗口稍后显示时,它将始终在顶部。

        当在一个值为false的窗口上调用此方法时,始终在顶部状态设置为正常。 它也可能导致顶级窗口的z顺序的未指定的平台依赖性变化,但其他始终在上的窗口将保持在最高位置。 在具有正常状态的窗口上调用此值为false方法不起作用。

        注意 :某些平台可能不支持永远在线的窗口。 要检测当前平台是否支持始终在线的窗口,请使用Toolkit.isAlwaysOnTopSupported()isAlwaysOnTopSupported() 如果此窗口不支持永远在线模式,或者此窗口的工具包不支持永远在线窗口,则调用此方法不起作用。

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

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

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

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

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

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

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

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

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

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

        public final boolean isFocusableWindow​()
        返回此窗口是否可以成为关注的窗口,也就是说,此窗口或其任何子组件是否可以成为焦点所有者。 要使框架或对话框可true ,其true窗口状态必须设置为true 对于不是可true框架或对话框的窗口,其可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窗口状态true

        结果
        这个窗口是否可以被关注的窗口
        从以下版本开始:
        1.4
        另请参见:
        isFocusableWindow()setFocusableWindowState(boolean)isShowing()Component.setFocusable(boolean)
      • setFocusableWindowState

        public void setFocusableWindowState​(boolean focusableWindowState)
        设置此窗口是否可以成为聚焦窗口,如果它符合isFocusableWindow概述的其他要求。 如果此窗口的可false窗口状态设置为false ,则isFocusableWindow将返回false 如果此窗口的可true窗口状态设置为true ,则isFocusableWindow可能会返回truefalse这取决于isFocusableWindowtrue而必须满足的其他要求。

        将窗口的对焦状态设置为false是应用程序向AWT标识将用作浮动调色板或工具栏的窗口的标准机制,因此应该是不可对焦的窗口。 在可见的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添加到侦听器列表。 监听器已注册到此类的所有绑定属性,包括以下内容:
        • 这个窗口的字体(“font”)
        • 这个窗口的背景颜色(“background”)
        • 这个窗口的前景色(“前景”)
        • 这个窗口的对焦性(“focusable”)
        • 此窗口的焦点遍历键启用状态(“focusTraversalKeysEnabled”)
        • 此窗口的一组FORWARD_TRAVERSAL_KEYS(“forwardFocusTraversalKeys”)
        • 该窗口的一组BACKWARD_TRAVERSAL_KEYS(“backwardFocusTraversalKeys”)
        • 这个窗口的UP_CYCLE_TRAVERSAL_KEYS(“upCycleFocusTraversalKeys”)
        • 这个窗口的一组DOWN_CYCLE_TRAVERSAL_KEYS(“downCycleFocusTraversalKeys”)
        • 此窗口的焦点遍历策略(“focusTraversalPolicy”)
        • 此窗口的可调焦窗口状态(“focusableWindowState”)
        • 此窗口始终处于顶级状态(“alwaysOnTop”)
        请注意,如果此窗口继承了绑定属性,则不会在继承的属性中更改事件时触发任何事件。

        如果侦听器为空,则不会抛出异常,也不会执行任何操作。

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

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

        如果侦听器为空,则不会抛出异常,也不会执行任何操作。

        重写:
        addPropertyChangeListenerContainer
        参数
        propertyName - 上面列出的属性名称之一
        listener - 要添加的PropertyChangeListener
        另请参见:
        addPropertyChangeListener(java.beans.PropertyChangeListener)Component.removePropertyChangeListener(java.beans.PropertyChangeListener)
      • isValidateRoot

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

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

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

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

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

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

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

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

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

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

        该方法更改几何相关数据。 因此,本地窗口系统可以忽略这样的请求,或者它可以修改所请求的数据,使得Window对象被放置并且以与桌面设置紧密对应的方式被Window

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

        public void createBufferStrategy​(int numBuffers)
        为此组件创建一个新的多缓冲策略。 多缓冲对于渲染性能很有用。 此方法尝试使用提供的缓冲区数量创建可用的最佳策略。 它将始终使用该数量的缓冲区创建一个BufferStrategy 首先尝试翻页策略,然后尝试使用加速缓冲区的策略策略。 最后,使用非加速的制动策略。

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

        参数
        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,或者如果cap是 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 - 如果窗口显示在屏幕上,并且位置为 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指定。

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

        如果widthheight值小于上一次拨打setMinimumSize所规定的最小尺寸,则自动放大widthsetMinimumSize

        该方法更改几何相关数据。 因此,本地窗口系统可以忽略这样的请求,或者它可以修改所请求的数据,使得Window对象被放置并且以与桌面设置紧密相对应的方式被Window

        重写:
        setBoundsComponent
        参数
        x - 这个组件的新的 x- coordinate
        y - 这个组件的新 y-坐标
        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​()
        指示窗口当前是否不透明。

        该方法返回false ,如果窗口的背景色是不null和颜色的Alpha分量小于1.0f 该方法返回true

        重写:
        isOpaqueComponent
        结果
        true如果窗口是不透明的, false否则
        从以下版本开始:
        1.7
        另请参见:
        getBackground()setBackground(Color)
      • paint

        public void paint​(Graphics g)
        涂上容器 这会将油漆转移到任何这个容器的小孩的轻量级组件。 如果重新实现此方法,则应调用super.paint(g),以便轻量级组件正确呈现。 如果一个子组件被当前的剪裁设置(g)全部剪除,那么paint()将不会转发给该小孩。
        重写:
        paintContainer
        参数
        g - 指定的图形窗口
        从以下版本开始:
        1.7
        另请参见:
        Component.update(Graphics)