Module  java.desktop
软件包  javax.swing

Class JInternalFrame

  • All Implemented Interfaces:
    ImageObserverMenuContainerSerializableAccessibleRootPaneContainerWindowConstants


    @JavaBean(defaultProperty="JMenuBar",
              description="A frame container which is contained within another window.")
    public class JInternalFrame
    extends JComponent
    implements Accessible, WindowConstants, RootPaneContainer
    一个轻量级对象,提供了本机框架的许多功能,包括拖动,关闭,成为图标,调整大小,标题显示以及对菜单栏的支持。 有关面向任务的文档和使用内部框架的示例,请参阅“Java教程”中的 How to Use Internal Frames ”一节。

    一般来说,您将JInternalFrame添加到JDesktopPane 该UI委托的外观和感觉,具体行动到DesktopManager由维护对象JDesktopPane

    JInternalFrame内容窗格是您添加子组件的位置。 为方便起见,在addremove ,并setLayout这个类的方法将被覆盖,所以他们委托给相应方法的调用ContentPane 例如,您可以将子组件添加到内部框架,如下所示:

      internalFrame.add(child); 
    而孩子将被添加到contentPane。 内容窗格实际上由JRootPane的实例管理,该实例还管理内部框架的布局窗格,玻璃窗格和可选菜单栏。 有关这些组件的完整说明,请参阅JRootPane文档。 请参阅RootPaneContainer的详细信息,添加,删除和设置LayoutManager一个的JInternalFrame

    警告: Swing不是线程安全的。 有关详细信息,请参阅Swing's Threading Policy

    警告:此类的序列化对象与将来的Swing版本不兼容。 当前的序列化支持适用于运行相同版本的Swing的应用程序之间的短期存储或RMI。 从1.4开始,对所有JavaBeans的长期存储的支持已被添加到java.beans软件包中。 请参阅XMLEncoder

    从以下版本开始:
    1.2
    另请参见:
    InternalFrameEventJDesktopPaneDesktopManagerJInternalFrame.JDesktopIconJRootPaneRootPaneContainerSerialized Form
    • 字段详细信息

      • rootPane

        protected JRootPane rootPane
        管理内容窗格的 JRootPane实例,以及该内部框架的可选菜单栏以及玻璃窗格。
        另请参见:
        JRootPaneRootPaneContainer
      • closable

        protected boolean closable
        框架可以关闭。
      • isClosed

        protected boolean isClosed
        框架已关闭。
      • maximizable

        protected boolean maximizable
        该框架可以扩展到桌面窗格的大小。
      • isMaximum

        protected boolean isMaximum
        框架已经扩展到最大尺寸。
        另请参见:
        maximizable
      • isIcon

        protected boolean isIcon
        框架已经被图标化了。
        另请参见:
        isIcon()
      • resizable

        protected boolean resizable
        框架的尺寸可以更改。
      • isSelected

        protected boolean isSelected
        该帧当前被选中。
      • frameIcon

        protected Icon frameIcon
        该内部框架左上角显示的图标。
      • title

        protected String title
        标题显示在此内部框架的标题栏中。
      • IS_SELECTED_PROPERTY

        public static final String IS_SELECTED_PROPERTY
        受限属性名称表示此框已选择状态。
        另请参见:
        Constant Field Values
      • IS_CLOSED_PROPERTY

        public static final String IS_CLOSED_PROPERTY
        内部框架关闭的约束属性名称。
        另请参见:
        Constant Field Values
      • IS_MAXIMUM_PROPERTY

        public static final String IS_MAXIMUM_PROPERTY
        指示内部框架最大化的约束属性名称。
        另请参见:
        Constant Field Values
      • IS_ICON_PROPERTY

        public static final String IS_ICON_PROPERTY
        指示内部框架被图标化的约束属性名称。
        另请参见:
        Constant Field Values
    • 构造方法详细信息

      • JInternalFrame

        public JInternalFrame​()
        创建一个不可调整大小,不可关闭,不可最大化,非图形化的 JInternalFrame ,没有标题。
      • JInternalFrame

        public JInternalFrame​(String title)
        创建一个不可调整大小,不可关闭,不可最大化,非图形化的JInternalFrame与指定的标题。 请注意,传递一个null title导致未指定的行为,并可能导致异常。
        参数
        title - 在标题栏中显示的非 null String
      • JInternalFrame

        public JInternalFrame​(String title,
                              boolean resizable)
        创建一个不可关闭,不可最大化,非图形化的 JInternalFrame具有指定的标题和可 JInternalFrame性。
        参数
        title - 要显示在标题栏中的 String
        resizable - 如果是 true ,可以调整内部框架的大小
      • JInternalFrame

        public JInternalFrame​(String title,
                              boolean resizable,
                              boolean closable)
        创建一个不可最大化,非图形化的 JInternalFrame具有指定的标题,可重定位性和可关闭性。
        参数
        title - 在标题栏中显示的 String
        resizable - 如果为 true ,则可以调整内部框架的大小
        closable - 如果是 true ,可以关闭内部框架
      • JInternalFrame

        public JInternalFrame​(String title,
                              boolean resizable,
                              boolean closable,
                              boolean maximizable)
        创建一个不可图标的 JInternalFrame具有指定的标题,可重定位性,可关闭性和最大化性。
        参数
        title - 要显示在标题栏中的 String
        resizable - 如果是 true ,可以调整内部框架的大小
        closable - 如果是 true ,可以关闭内部框架
        maximizable - 如果是 true ,则内部框架可以最大化
      • JInternalFrame

        public JInternalFrame​(String title,
                              boolean resizable,
                              boolean closable,
                              boolean maximizable,
                              boolean iconifiable)
        创建一个JInternalFrame具有指定的标题,可重定向性,可关闭性,最大化性和可图标性。 所有JInternalFrame构造函数都使用这个。
        参数
        title - 在标题栏中显示 String
        resizable - 如果是 true ,则可以调整内部框架的大小
        closable - 如果是 true ,可以关闭内部框架
        maximizable - 如果是 true ,则内部框架可以最大化
        iconifiable - 如果是 true ,内部框架可以图标化
    • 方法详细信息

      • createRootPane

        protected JRootPane createRootPane​()
        由构造函数调用设置 JRootPane
        结果
        一个新的 JRootPane
        另请参见:
        JRootPane
      • getUI

        public InternalFrameUI getUI​()
        返回渲染此组件的外观和对象。
        重写:
        getUIJComponent
        结果
        呈现此组件的 InternalFrameUI对象
      • updateUI

        public void updateUI​()
        通知从UIManager的外观和感觉已经改变。 UIManager替换最新版本的当前UI对象。
        重写:
        updateUIJComponent
        另请参见:
        JComponent.updateUI()
      • getMenuBar

        @Deprecated
        public JMenuBar getMenuBar​()
        已过时。 截至Swing 1.0.3版本,由getJMenuBar()替换。
        如果没有设置菜单栏,则返回 JMenuBar的当前 JInternalFrame ,或 null
        结果
        当前菜单栏,如果没有设置, null
      • getJMenuBar

        public JMenuBar getJMenuBar​()
        如果没有设置菜单栏,则返回 JMenuBar的当前 JInternalFrame ,或 null
        结果
        这个内部框架使用的 JMenuBar
        另请参见:
        setJMenuBar(javax.swing.JMenuBar)
      • setMenuBar

        @Deprecated
        public void setMenuBar​(JMenuBar m)
        已过时。 从Swing版本1.0.3替换为setJMenuBar(JMenuBar m)
        设置 menuBar属性用于此 JInternalFrame
        参数
        m - 在这个内部框架中使用的 JMenuBar
        另请参见:
        getJMenuBar()
      • setJMenuBar

        @BeanProperty(preferred=true,
                      description="The menu bar for accessing pulldown menus from this internal frame.")
        public void setJMenuBar​(JMenuBar m)
        为此 JInternalFrame设置 menuBar属性。
        参数
        m - 在这个内部框架中使用的 JMenuBar
        另请参见:
        getJMenuBar()
      • setRootPane

        protected void setRootPane​(JRootPane root)
        为此JInternalFrame设置rootPane属性。 该方法由构造函数调用。
        参数
        root - 新的 JRootPane对象
      • setClosable

        @BeanProperty(preferred=true,
                      description="Indicates whether this internal frame can be closed.")
        public void setClosable​(boolean b)
        设置这个 JInternalFrame是否可以通过某些用户操作关闭。
        参数
        b - 一个布尔值,其中 true表示该内部框架可以关闭
      • isClosable

        public boolean isClosable​()
        返回是否可以通过某些用户操作关闭此 JInternalFrame
        结果
        true如果这个内部框架可以关闭
      • isClosed

        public boolean isClosed​()
        返回此 JInternalFrame当前是否关闭。
        结果
        true如果内部框架关闭,否则为 false
      • setClosed

        @BeanProperty(description="Indicates whether this internal frame has been closed.")
        public void setClosed​(boolean b)
                       throws PropertyVetoException
        如果参数为true则关闭此内部框架。 不要使用false参数调用此方法; 调用setClosed(false)的结果是未指定的。

        如果内部框架已经关闭,此方法不执行任何操作并立即返回。 否则,此方法将通过触发INTERNAL_FRAME_CLOSING事件开始。 然后,该方法将closed属性为true ,除非侦听器禁止属性更改。 该方法通过使内部框架不可见和未选择完成,然后触发INTERNAL_FRAME_CLOSED事件。

        注意:要重新使用已关闭的内部框架,必须将其添加到容器中(即使您从未将其从之前的容器中删除)。 通常,此容器将是先前包含内部框架的JDesktopPane

        参数
        b - 必须是 true
        异常
        PropertyVetoException - 当设置属性的尝试被否决了 JInternalFrame
        另请参见:
        isClosed()setDefaultCloseOperation(int)dispose()InternalFrameEvent.INTERNAL_FRAME_CLOSING
      • setResizable

        @BeanProperty(preferred=true,
                      description="Determines whether this internal frame can be resized by the user.")
        public void setResizable​(boolean b)
        设置 JInternalFrame是否可以通过某些用户操作调整大小。
        参数
        b - 一个布尔值,其中 true表示这个内部框架可以调整大小
      • isResizable

        public boolean isResizable​()
        返回是否可以通过某些用户操作调整 JInternalFrame大小。
        结果
        true如果这个内部框架可以调整大小,否则为 false
      • setIconifiable

        @BeanProperty(preferred=true,
                      description="Determines whether this internal frame can be iconified.")
        public void setIconifiable​(boolean b)
        设置iconable属性,它必须是true ,以便用户能够使JInternalFrame成为一个图标。 有些看起来和感觉可能不会实现图标化; 他们将忽略此属性。
        参数
        b - 一个布尔值,其中 true表示这个内部框架可以图标化
      • isIconifiable

        public boolean isIconifiable​()
        获取 iconable属性,默认为 false
        结果
        该值为 iconable属性。
        另请参见:
        setIconifiable(boolean)
      • isIcon

        public boolean isIcon​()
        返回 JInternalFrame是否被图标化。
        结果
        true如果这个内部框架被图标化
      • setMaximizable

        @BeanProperty(preferred=true,
                      description="Determines whether this internal frame can be maximized.")
        public void setMaximizable​(boolean b)
        设置maximizable属性,它决定了一些用户操作是否可以最大化JInternalFrame 一些外观和感觉可能不支持最大化内部框架; 他们将忽略此属性。
        参数
        b - true以指定该内部框架应该是最大化的; false来指定它不应该是
      • isMaximizable

        public boolean isMaximizable​()
        获取 maximizable属性的值。
        结果
        的价值 maximizable属性
        另请参见:
        setMaximizable(boolean)
      • isMaximum

        public boolean isMaximum​()
        返回 JInternalFrame是否最大化。
        结果
        true如果这个内部框架被最大化,否则为 false
      • setMaximum

        @BeanProperty(description="Indicates whether this internal frame is maximized.")
        public void setMaximum​(boolean b)
                        throws PropertyVetoException
        最大化和恢复这个内部框架。 甲最大化帧被调整大小以完全适应JDesktopPane与相关联的区域JInternalFrame 恢复的帧的大小设置为JInternalFrame的实际大小。
        参数
        b - 一个布尔值,其中 true最大化这个内部框架, false恢复它
        异常
        PropertyVetoException - 当设置属性的尝试被否决了 JInternalFrame
      • getTitle

        public String getTitle​()
        返回 JInternalFrame的标题。
        结果
        一个 String包含这个内部框架的标题
        另请参见:
        setTitle(java.lang.String)
      • setTitle

        @BeanProperty(preferred=true,
                      description="The text displayed in the title bar.")
        public void setTitle​(String title)
        设置JInternalFrame标题。 title可能有一个null值。
        参数
        title - 要显示在标题栏中的 String
        另请参见:
        getTitle()
      • setSelected

        @BeanProperty(description="Indicates whether this internal frame is currently the active frame.")
        public void setSelected​(boolean selected)
                         throws PropertyVetoException
        如果显示内部框架,请选择或取消选择。 A JInternalFrame如果是所选择的帧,则通常绘制其标题栏,这向用户指示该内部帧具有焦点。 当此方法将内部框架的状态从未选择更改为选定时,将触发InternalFrameEvent.INTERNAL_FRAME_ACTIVATED事件。 如果更改从选定到取消选择,则会触发InternalFrameEvent.INTERNAL_FRAME_DEACTIVATED事件。
        参数
        selected - 一个布尔值,其中 true表示该内部框架应该被选中(当前处于活动状态),而 false表示应该被取消选择
        异常
        PropertyVetoException - 当试图设置属性被否决的时候, JInternalFrame
        另请参见:
        Component.isShowing()InternalFrameEvent.INTERNAL_FRAME_ACTIVATEDInternalFrameEvent.INTERNAL_FRAME_DEACTIVATED
      • isSelected

        public boolean isSelected​()
        返回 JInternalFrame是否是当前“选择”或活动帧。
        结果
        true如果此内部框架当前被选中(有效)
        另请参见:
        setSelected(boolean)
      • setFrameIcon

        @BeanProperty(description="The icon shown in the top-left corner of this internal frame.")
        public void setFrameIcon​(Icon icon)
        设置要显示在该内部框架的标题栏中的图像(通常位于左上角)。 有些外观和感觉可能不支持在标题栏中显示图标。 此图像不是desktopIcon对象,这是JDesktop显示的图像,当此内部框架被图标化时。 传递null到此功能是有效的,但外观和感觉可以选择适合的行为,例如显示没有图标或默认图标的外观和感觉。
        参数
        icon - 要显示在标题栏中的 Icon
        另请参见:
        getFrameIcon()
      • getFrameIcon

        public Icon getFrameIcon​()
        返回显示在该内部框架的标题栏中的图像(通常位于左上角)。
        结果
        标题栏中显示的是 Icon
        另请参见:
        setFrameIcon(javax.swing.Icon)
      • moveToFront

        public void moveToFront​()
        便利方法将该组件移动到位置0,如果其父级为 JLayeredPane
      • moveToBack

        public void moveToBack​()
        便利方法将该组件移动到位置-1,如果其父对象是一个 JLayeredPane
      • getLastCursor

        @BeanProperty(bound=false)
        public Cursor getLastCursor​()
        返回由 setCursor方法设置的最后一个 Cursor ,该方法不是可调整大小的 Cursor
        结果
        最后一个不可调整大小的 Cursor
        从以下版本开始:
        1.6
      • setLayer

        @BeanProperty(bound=false,
                      expert=true,
                      description="Specifies what desktop layer is used.")
        public void setLayer​(int layer)
        设置此组件的图层属性的便利方法。 方法setLayer(Integer)应用于JLayeredPane预定义的层值。 当使用setLayer(int) ,必须注意不要意外与这些值冲突。
        参数
        layer - 指定此内部框架的桌面层的整数
        从以下版本开始:
        1.3
        另请参见:
        setLayer(Integer)JLayeredPane
      • getLayer

        public int getLayer​()
        获取此组件的图层属性的便捷方法。
        结果
        一个 Integer对象,指定此框架的桌面图层
        另请参见:
        JLayeredPane
      • getDesktopPane

        @BeanProperty(bound=false)
        public JDesktopPane getDesktopPane​()
        方便的方法搜索一个JDesktop实例的祖先层次结构。 如果JInternalFrame找不到,搜索到的是desktopIcon树。
        结果
        所述 JDesktopPane此内部帧属于,或 null如果没有找到
      • getNormalBounds

        public Rectangle getNormalBounds​()
        如果JInternalFrame未处于最大化状态,则返回getBounds() ; 否则,返回JInternalFrame将被还原到的边界。
        结果
        一个 Rectangle在正常状态下包含此帧的边界
        从以下版本开始:
        1.3
      • setNormalBounds

        public void setNormalBounds​(Rectangle r)
        设置此内部框架的正常范围,该内部框架将从其最大化状态恢复到的边界。 此方法仅供桌面管理员使用。
        参数
        r - 这个内部框架应该被恢复到的边界
        从以下版本开始:
        1.3
      • getFocusOwner

        public Component getFocusOwner​()
        如果此JInternalFrame处于活动状态,则返回具有焦点的小孩。 否则返回null
        结果
        该组件与焦点,或 null如果没有孩子有焦点
        从以下版本开始:
        1.3
      • getMostRecentFocusOwner

        @BeanProperty(bound=false)
        public Component getMostRecentFocusOwner​()
        返回此JInternalFrame的子组件,当选择此JInternalFrame时,该组件将接收焦点。 如果此JInternalFrame当前被选中,该方法返回与getFocusOwner方法相同的组件。 如果未选择此JInternalFrame ,则将返回最近请求焦点的子组件。 如果没有子组件已经请求了焦点,则返回此JInternalFrame的初始可JInternalFrame组件。 如果没有这样的孩子存在,那么这个JInternalFrame的默认组件将被返回。
        结果
        当选择此 JInternalFrame时将接收焦点的子组件
        从以下版本开始:
        1.4
        另请参见:
        getFocusOwner()isSelected
      • restoreSubcomponentFocus

        public void restoreSubcomponentFocus​()
        请求内部框架将焦点恢复到具有焦点的最后一个子组件。 用户在用户选择此内部框架时使用UI,例如,通过单击标题栏。
        从以下版本开始:
        1.3
      • reshape

        public void reshape​(int x,
                            int y,
                            int width,
                            int height)
        移动并调整此组件的大小。 与其他组件不同,此实现还强制重新布局,以便始终重新显示诸如标题栏的框架装饰。
        重写:
        reshapeJComponent
        参数
        x - 一个整数,给出组件的新水平位置,以其容器左侧的像素为单位
        y - 一个整数,给出组件的新垂直位置,以其容器底部的像素为单位
        width - 给出组件的新宽度(以像素为单位)的整数
        height - 给出组件的新高度(以像素为单位)的整数
        另请参见:
        Component.setBounds(int, int, int, int)
      • addInternalFrameListener

        public void addInternalFrameListener​(InternalFrameListener l)
        添加指定的侦听器以从该内部帧接收内部帧事件。
        参数
        l - 内部框架监听器
      • removeInternalFrameListener

        public void removeInternalFrameListener​(InternalFrameListener l)
        删除指定的内部帧监听器,使其不再从该内部帧接收内部帧事件。
        参数
        l - 内部框架监听器
      • fireInternalFrameEvent

        protected void fireInternalFrameEvent​(int id)
        触发内部框架事件。
        参数
        id - 被触发事件的类型; 以下之一:
        • InternalFrameEvent.INTERNAL_FRAME_OPENED
        • InternalFrameEvent.INTERNAL_FRAME_CLOSING
        • InternalFrameEvent.INTERNAL_FRAME_CLOSED
        • InternalFrameEvent.INTERNAL_FRAME_ICONIFIED
        • InternalFrameEvent.INTERNAL_FRAME_DEICONIFIED
        • InternalFrameEvent.INTERNAL_FRAME_ACTIVATED
        • InternalFrameEvent.INTERNAL_FRAME_DEACTIVATED
        如果事件类型不是上述之一,则不会发生任何事情。
      • doDefaultCloseAction

        public void doDefaultCloseAction​()
        触发INTERNAL_FRAME_CLOSING事件,然后执行内部框架的默认关闭操作指定的操作。 该方法通常由内部框架的关闭按钮的外观实现的动作处理程序调用。
        从以下版本开始:
        1.3
        另请参见:
        setDefaultCloseOperation(int)InternalFrameEvent.INTERNAL_FRAME_CLOSING
      • setDefaultCloseOperation

        public void setDefaultCloseOperation​(int operation)
        设置用户在此内部框架上启动“关闭”时默认执行的操作。 可能的选择是:

        DO_NOTHING_ON_CLOSE
        没做什么。 这要求程序在internalFrameClosing方法中处理已注册的InternalFrameListener对象的操作。
        HIDE_ON_CLOSE
        自动使内部框架不可见。
        DISPOSE_ON_CLOSE
        自动处理内部框架。

        默认值为DISPOSE_ON_CLOSE 在执行指定的关闭操作之前,内部框架触发INTERNAL_FRAME_CLOSING事件。

        参数
        operation -一个中所定义的以下常量 javax.swing.WindowConstants (由实现的接口 JInternalFrame ): DO_NOTHING_ON_CLOSEHIDE_ON_CLOSE ,或 DISPOSE_ON_CLOSE
        另请参见:
        addInternalFrameListener(javax.swing.event.InternalFrameListener)getDefaultCloseOperation()JComponent.setVisible(boolean)dispose()InternalFrameEvent.INTERNAL_FRAME_CLOSING
      • getDefaultCloseOperation

        public int getDefaultCloseOperation​()
        返回用户在此内部框架上启动“关闭”时发生的默认操作。
        结果
        当用户关闭内部框架时会发生的操作
        另请参见:
        setDefaultCloseOperation(int)
      • pack

        public void pack​()
        导致此JInternalFrame子组件按其首选大小JInternalFrame 图标化或最大化的内部框架首先被还原,然后打包。 如果内部框架无法恢复,则其状态不会更改,也不会被打包。
        另请参见:
        Window.pack()
      • toFront

        public void toFront​()
        将这个内部框架放在前面。 将此内部框架放置在堆叠顺序的顶部,并对其他可见的内部框架进行相应的调整。
        另请参见:
        Window.toFront()moveToFront()
      • toBack

        public void toBack​()
        将这个内部框架发送到后面。 将此内部框架放置在堆叠顺序的底部,并对其他可见的内部框架进行相应的调整。
        另请参见:
        Window.toBack()moveToBack()
      • getWarningString

        @BeanProperty(bound=false)
        public final String getWarningString​()
        获取与此内部框架一起显示的警告字符串。 由于内部框架始终是安全的(因为它完全包含在可能需要警告字符串的窗口中),因此此方法始终返回null
        结果
        null
        另请参见:
        Window.getWarningString()
      • paramString

        protected String paramString​()
        返回此JInternalFrame的字符串表示JInternalFrame 该方法仅用于调试目的,并且返回的字符串的内容和格式可能因实现而异。 返回的字符串可能为空,但可能不是null
        重写:
        paramStringJComponent
        结果
        这是 JInternalFrame的字符串表示 JInternalFrame