Module  java.desktop
软件包  java.awt

Class Frame

  • All Implemented Interfaces:
    ImageObserverMenuContainerSerializableAccessible
    已知直接子类:
    JFrame


    public class Frame
    extends Window
    implements MenuContainer
    A Frame是具有标题和边框的顶级窗口。

    框架的大小包括为边框指定的任何区域。 可以使用getInsets方法获得边界区域的尺寸,但是由于这些尺寸与平台相关,因此无法通过调用packshow显示帧,才能获得有效的插入值。 由于边框区域被包含在框架的整体尺寸中,边界有效地掩盖了框架的一部分,将可用于渲染和/或显示子组件的区域限制在左上角位置为(insets.left, insets.top) ,以及具有width - (insets.left + insets.right)的大小,由height - (insets.top + insets.bottom)

    帧的默认布局为BorderLayout

    一个框架可能有自己的装饰(即FrameTitlebar )关闭了setUndecorated 这只能在框架不是displayable时完成

    在多屏幕环境中,您可以在其他屏幕设备上创建一个Frame ,通过构建FrameFrame(GraphicsConfiguration)Frame(String title, GraphicsConfiguration) GraphicsConfiguration对象是目标屏幕设备的GraphicsConfiguration对象之一。

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

    包含三个物理屏幕和一个主要物理屏幕的虚拟设备图。主要物理屏幕显示(0,0)协调,而不同的物理屏幕显示(-80,-100)协调。

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

    下面的代码设置的位置Frame在(10,10)相对于所述相应的物理屏幕的原点GraphicsConfiguration 如果不考虑GraphicsConfiguration的边界,则Frame位置将相对于虚拟坐标系设置为(10,10),并将出现在主物理屏幕上,这可能与物理屏幕不同指定GraphicsConfiguration

      Frame f = new Frame(GraphicsConfiguration gc);
          Rectangle bounds = gc.getBounds();
          f.setLocation(10 + bounds.x, 10 + bounds.y); 

    帧能够生成以下类型的WindowEvent s:

    • WINDOW_OPENED
    • WINDOW_CLOSING
      如果程序在处理此事件时没有明确隐藏或处理窗口,则窗口关闭操作将被取消。
    • WINDOW_CLOSED
    • WINDOW_ICONIFIED
    • WINDOW_DEICONIFIED
    • WINDOW_ACTIVATED
    • WINDOW_DEACTIVATED
    • WINDOW_GAINED_FOCUS
    • WINDOW_LOST_FOCUS
    • WINDOW_STATE_CHANGED
    从以下版本开始:
    1.0
    另请参见:
    WindowEventWindow.addWindowListener(java.awt.event.WindowListener)Serialized Form
    • 方法详细信息

      • addNotify

        public void addNotify​()
        通过将此框架连接到本机屏幕资源来使此框架可以显示。 使框架可显示将导致其任何一个孩子被显示。 该方法由工具包内部调用,不应由程序直接调用。
        重写:
        addNotifyWindow
        另请参见:
        Component.isDisplayable()removeNotify()
      • getTitle

        public String getTitle​()
        获取框架的标题。 标题显示在框架的边框中。
        结果
        此框架的标题或空字符串(“”),如果此框架没有标题。
        另请参见:
        setTitle(String)
      • setTitle

        public void setTitle​(String title)
        将此框架的标题设置为指定的字符串。
        参数
        title - 要显示在框架边框中的标题。 A null值被视为空字符串“”。
        另请参见:
        getTitle()
      • setIconImage

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

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

        以下声明:

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

        注意:根据上下文(例如窗口装饰,窗口列表,任务栏等),本机窗口系统可以使用不同尺寸的不同图像来表示窗口。 他们也可以仅使用单个图像进行所有上下文或根本没有图像。

        重写:
        setIconImageWindow
        参数
        image - 要显示的图标图像。
        另请参见:
        Window.setIconImages(java.util.List<? extends java.awt.Image>)Window.getIconImages()
      • getMenuBar

        public MenuBar getMenuBar​()
        获取此框架的菜单栏。
        结果
        此框架的菜单栏,或 null如果此框架没有菜单栏。
        另请参见:
        setMenuBar(MenuBar)
      • setMenuBar

        public void setMenuBar​(MenuBar mb)
        将此框架的菜单栏设置为指定的菜单栏。
        参数
        mb - 正在设置菜单栏。 如果此参数为null则此框架上的任何现有菜单栏都将被删除。
        另请参见:
        getMenuBar()
      • isResizable

        public boolean isResizable​()
        指示该框架是否可由用户调整大小。 默认情况下,所有帧最初都可调整大小。
        结果
        true如果用户可以调整此框架大小; 否则为false
        另请参见:
        setResizable(boolean)
      • setResizable

        public void setResizable​(boolean resizable)
        设置该框架是否可以由用户调整大小。
        参数
        resizable - true如果此框架可调整大小; 否则为false
        另请参见:
        isResizable()
      • setState

        public void setState​(int state)
        设置此框架的状态(已过时)。

        在旧版本的JDK中,帧状态只能是NORMAL或ICONIFIED。 由于JDK 1.4支持的帧状态集合被扩展,并且帧状态被表示为按位掩码。

        为了与早期开发的应用程序兼容,此方法仅接受Frame.NORMALFrame.ICONIFIED 帧的标志状态只有改变,帧状态的其他方面不受此方法的影响。 如果传递给该方法的状态既不是Frame.NORMAL也不是Frame.ICONIFIED该方法根本不执行任何操作。

        请注意,如果给定平台不支持该状态,则getState()方法的状态和返回值都不会更改。 应用程序可以通过Toolkit.isFrameStateSupported(int)方法确定是否支持特定状态。

        如果框架当前在屏幕上可见Window.isShowing()方法返回true ),则开发人员应检查通过WindowEvent收到的WindowEventWindowEvent.getNewState()方法的返回值,以确定状态实际已更改。

        如果框架在屏幕上不可见 ,则可能会生成事件,也可能不会生成事件。 在这种情况下,开发人员可以假定在该方法返回后状态立即改变。 稍后,当调用setVisible(true)方法时,框架将尝试应用此状态。 在这种情况下也不保证接收WindowEvent.WINDOW_STATE_CHANGED事件。

        参数
        state - Frame.NORMALFrame.ICONIFIED
        另请参见:
        setExtendedState(int)Window.addWindowStateListener(java.awt.event.WindowStateListener)
      • setExtendedState

        public void setExtendedState​(int state)
        设置此帧的状态。 状态表示为按位掩码。
        • NORMAL
          表示没有设置状态位。
        • ICONIFIED
        • MAXIMIZED_HORIZ
        • MAXIMIZED_VERT
        • MAXIMIZED_BOTH
          连接MAXIMIZED_HORIZMAXIMIZED_VERT

        请注意,如果给定平台不支持该状态,则getExtendedState()方法的状态和返回值都不会更改。 应用程序可以通过Toolkit.isFrameStateSupported(int)方法确定是否支持特定状态。

        如果框架当前在屏幕上可见Window.isShowing()方法返回true ),开发人员应检查通过WindowEvent收到的WindowEvent270479818402752方法的返回值,以确定状态实际已更改。

        如果框架在屏幕上不可见 ,则可能会生成事件,也可能不会生成事件。 在这种情况下,开发人员可以假定在该方法返回后状态立即改变。 之后,当调用setVisible(true)方法时,框架将尝试应用此状态。 在这种情况下也不能保证收到任何WindowEvent.WINDOW_STATE_CHANGED事件。

        参数
        state - 帧状态常数的按位掩码
        从以下版本开始:
        1.4
        另请参见:
        Window.addWindowStateListener(java.awt.event.WindowStateListener)
      • getState

        public int getState​()
        获取此框架的状态(已过时)。

        在旧版本的JDK中,帧状态只能是NORMAL或ICONIFIED。 由于JDK 1.4支持的帧状态集合被扩展,并且帧状态被表示为按位掩码。

        为了与旧程序兼容,该方法仍然返回Frame.NORMALFrame.ICONIFIED但它只报告帧的标志状态,此方法不报告帧状态的其他方面。

        结果
        Frame.NORMALFrame.ICONIFIED
        另请参见:
        setState(int)getExtendedState()
      • getExtendedState

        public int getExtendedState​()
        获取此框架的状态。 状态表示为按位掩码。
        • NORMAL
          表示没有设置状态位。
        • ICONIFIED
        • MAXIMIZED_HORIZ
        • MAXIMIZED_VERT
        • MAXIMIZED_BOTH
          连接MAXIMIZED_HORIZMAXIMIZED_VERT
        结果
        帧状态常数的按位掩码
        从以下版本开始:
        1.4
        另请参见:
        setExtendedState(int)
      • setMaximizedBounds

        public void setMaximizedBounds​(Rectangle bounds)
        设置此框架的最大化边界。

        当帧处于最大化状态时,系统提供一些默认边界。 该方法允许覆盖那些系统提供的值中的一些或全部。

        如果boundsnull ,请接受系统提供的边界。 如果非null可以通过将要从系统接受的字段设置为Integer.MAX_VALUE来接受其他系统提供的值。

        注意,给定的最大化边界用作本机系统的提示,因为底层平台可能不支持设置最大化窗口的位置和/或大小。 如果是这种情况,提供的值不会影响最大化状态下的帧的外观。

        参数
        bounds - 最大化状态的界限
        从以下版本开始:
        1.4
        另请参见:
        getMaximizedBounds()
      • getMaximizedBounds

        public Rectangle getMaximizedBounds​()
        获得此框架的最大化边界。 某些字段可能包含Integer.MAX_VALUE以表示必须使用该字段的系统提供的值。
        结果
        该框架的最大化边界; 可能是null
        从以下版本开始:
        1.4
        另请参见:
        setMaximizedBounds(Rectangle)
      • isUndecorated

        public boolean isUndecorated​()
        指示此框架是否未装饰。 默认情况下,所有框架最初都是装饰的。
        结果
        如果框架未装饰, true ; false否则。
        从以下版本开始:
        1.4
        另请参见:
        setUndecorated(boolean)
      • removeNotify

        public void removeNotify​()
        通过删除其与其本机屏幕资源的连接,使此框架不可显示。 使框架不可显示将使其任何一个孩子被制成不可显示的。 该方法在内部被工具包调用,不应该被程序直接调用。
        重写:
        removeNotifyWindow
        另请参见:
        Component.isDisplayable()addNotify()
      • paramString

        protected String paramString​()
        返回一个表示Frame状态的字符串。 该方法仅用于调试目的,并且返回的字符串的内容和格式可能因实现而异。 返回的字符串可能为空,但可能不是null
        重写:
        paramStringContainer
        结果
        该帧的参数字符串
      • setCursor

        @Deprecated
        public void setCursor​(int cursorType)
        已过时。 从JDK 1.1版开始,由Component.setCursor(Cursor)替代。
        将此帧的光标设置为指定的类型。
        参数
        cursorType - 游标类型
      • getCursorType

        @Deprecated
        public int getCursorType​()
        已过时。 从JDK 1.1版开始,由Component.getCursor()替代。
        结果
        该帧的光标类型
      • getFrames

        public static Frame[] getFrames​()
        返回由此应用程序创建的所有Frame的数组。 如果从小程序调用,该数组只包含该applet可访问的Frame

        警告:此方法可能会返回系统创建的帧,例如Swing使用的共享隐藏帧。 应用程序不应该假定这些框架的存在,应用程序也不应该假定任何关于这些框架的内容,例如组件位置, LayoutManager或序列化。

        注意 :要获取所有无主窗口的列表,包括无主版的Dialog (在版本1.6中引入),请使用Window.getOwnerlessWindows

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

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