模块  java.desktop
软件包  java.awt

Class Frame

  • 实现的所有接口
    ImageObserverMenuContainerSerializableAccessible
    已知直接子类:
    JFrame

    public class Frame
    extends Window
    implements MenuContainer
    Frame是一个带标题和边框的顶级窗口。

    框架的大小包括为边框指定的任何区域。 可以使用getInsets方法获得边界区域的尺寸,但是,由于这些尺寸与平台相关,因此在通过调用packshow使框架可显示之前,无法获得有效的插入值。 由于边框区域包含在框架的整体尺寸中,边框有效地遮挡了框架的一部分,约束了可用于渲染的区域和/或将子组件显示到具有左上角位置(insets.left, insets.top) ,以及尺寸为width - (insets.left + insets.right) by 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 如果不考虑GraphicsConfiguration的边界,则Frame位置将相对于虚拟坐标系设置为(10,10)并显示在主物理屏幕上,这可能与物理屏幕的物理屏幕不同。指定GraphicsConfiguration

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

    帧能够生成以下类型的WindowEvent

    • 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
    • 字段详细信息

      • DEFAULT_CURSOR

        @Deprecated
        public static final int DEFAULT_CURSOR
        Deprecated.
        replaced by Cursor.DEFAULT_CURSOR.
        另请参见:
        常数字段值
      • CROSSHAIR_CURSOR

        @Deprecated
        public static final int CROSSHAIR_CURSOR
        Deprecated.
        replaced by Cursor.CROSSHAIR_CURSOR.
        另请参见:
        常数字段值
      • TEXT_CURSOR

        @Deprecated
        public static final int TEXT_CURSOR
        Deprecated.
        replaced by Cursor.TEXT_CURSOR.
        另请参见:
        常数字段值
      • WAIT_CURSOR

        @Deprecated
        public static final int WAIT_CURSOR
        Deprecated.
        replaced by Cursor.WAIT_CURSOR.
        另请参见:
        常数字段值
      • SW_RESIZE_CURSOR

        @Deprecated
        public static final int SW_RESIZE_CURSOR
        Deprecated.
        replaced by Cursor.SW_RESIZE_CURSOR.
        另请参见:
        常数字段值
      • SE_RESIZE_CURSOR

        @Deprecated
        public static final int SE_RESIZE_CURSOR
        Deprecated.
        replaced by Cursor.SE_RESIZE_CURSOR.
        另请参见:
        常数字段值
      • NW_RESIZE_CURSOR

        @Deprecated
        public static final int NW_RESIZE_CURSOR
        Deprecated.
        replaced by Cursor.NW_RESIZE_CURSOR.
        另请参见:
        常数字段值
      • NE_RESIZE_CURSOR

        @Deprecated
        public static final int NE_RESIZE_CURSOR
        Deprecated.
        replaced by Cursor.NE_RESIZE_CURSOR.
        另请参见:
        常数字段值
      • N_RESIZE_CURSOR

        @Deprecated
        public static final int N_RESIZE_CURSOR
        Deprecated.
        replaced by Cursor.N_RESIZE_CURSOR.
        另请参见:
        常数字段值
      • S_RESIZE_CURSOR

        @Deprecated
        public static final int S_RESIZE_CURSOR
        Deprecated.
        replaced by Cursor.S_RESIZE_CURSOR.
        另请参见:
        常数字段值
      • W_RESIZE_CURSOR

        @Deprecated
        public static final int W_RESIZE_CURSOR
        Deprecated.
        replaced by Cursor.W_RESIZE_CURSOR.
        另请参见:
        常数字段值
      • E_RESIZE_CURSOR

        @Deprecated
        public static final int E_RESIZE_CURSOR
        Deprecated.
        replaced by Cursor.E_RESIZE_CURSOR.
        另请参见:
        常数字段值
      • HAND_CURSOR

        @Deprecated
        public static final int HAND_CURSOR
        Deprecated.
        replaced by Cursor.HAND_CURSOR.
        另请参见:
        常数字段值
      • MOVE_CURSOR

        @Deprecated
        public static final int MOVE_CURSOR
        Deprecated.
        replaced by Cursor.MOVE_CURSOR.
        另请参见:
        常数字段值
      • MAXIMIZED_BOTH

        public static final int MAXIMIZED_BOTH
        此状态位掩码表示帧已完全最大化(即水平和垂直)。 它只是MAXIMIZED_VERT | MAXIMIZED_HORIZ的便利别名。

        请注意,帧的完全最大化的正确测试是

          (state & Frame.MAXIMIZED_BOTH) == Frame.MAXIMIZED_BOTH 

        测试是框架在某些方向使用最大化

          (state & Frame.MAXIMIZED_BOTH) != 0 
        从以下版本开始:
        1.4
        另请参见:
        setExtendedState(int)getExtendedState()常数字段值
    • 方法详细信息

      • addNotify

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

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

        public void setTitle​(String title)
        将此帧的标题设置为指定的字符串。
        参数
        title - 要在框架边框中显示的标题。 null值被视为空字符串“”。
        另请参见:
        getTitle()
      • 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.NORMALFrame.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.getNewState()的方法WindowEvent通过接收到WindowStateListener ,以确定国家实际上已经改变了。

        如果框架在屏幕上不可见 ,则可能生成也可能不生成事件。 在这种情况下,开发人员可能会认为状态在此方法返回后立即更改。 稍后,当调用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()
        通过删除与其本机屏幕资源的连接,使此Frame不可显示。 使框架不可显示将导致其任何一个孩子无法显示。 该方法由工具包在内部调用,不应由程序直接调用。
        重写:
        removeNotify ,类 Container
        另请参见:
        Component.isDisplayable()addNotify()
      • paramString

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

        @Deprecated
        public void setCursor​(int cursorType)
        Deprecated.
        As of JDK version 1.1, replaced by Component.setCursor(Cursor).
        将此帧的光标设置为指定的类型。
        参数
        cursorType - 光标类型
      • getCursorType

        @Deprecated
        public int getCursorType()
        Deprecated.
        As of JDK version 1.1, replaced by Component.getCursor().
        结果
        此框架的光标类型
      • getFrames

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

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

        注意 :要获取所有无主窗口的列表,包括无主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
        结果
        一个AccessibleAWTFrame,用作此Frame的AccessibleContext
        从以下版本开始:
        1.3