Module  java.desktop
软件包  javax.swing

Class JDesktopPane

  • All Implemented Interfaces:
    ImageObserverMenuContainerSerializableAccessible


    @JavaBean(defaultProperty="UI")
    public class JDesktopPane
    extends JLayeredPane
    implements Accessible
    用于创建多文档界面或虚拟桌面的容器。 您创建JInternalFrame对象并将其添加到JDesktopPane JDesktopPane扩展了JLayeredPane以管理可能重叠的内部帧。 它还保留了对UI类的当前外观(L&F)设置的DesktopManager实例的引用。 请注意, JDesktopPane不支持边框。

    这个类通常被用作父JInternalFrames以提供一个可插入DesktopManager对象到JInternalFrames installUI的L&F具体实现的是负责设置desktopManager适当地可变。 JInternalFrame的父母是JDesktopPane ,它应该将其大部分行为委托给desktopManager (关闭,调整大小等)。

    有关进一步的文档和示例,请参阅“Java教程”一节中 How to Use Internal Frames

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

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

    从以下版本开始:
    1.2
    另请参见:
    JInternalFrameJInternalFrame.JDesktopIconDesktopManagerSerialized Form
    • 构造方法详细信息

      • JDesktopPane

        public JDesktopPane​()
        创建一个新的 JDesktopPane
    • 方法详细信息

      • getUI

        public DesktopPaneUI getUI​()
        返回渲染此组件的L&F对象。
        重写:
        getUIJComponent
        结果
        呈现此组件的 DesktopPaneUI对象
      • setDragMode

        @BeanProperty(enumerationValues={"JDesktopPane.LIVE_DRAG_MODE","JDesktopPane.OUTLINE_DRAG_MODE"},
                      description="Dragging style for internal frame children.")
        public void setDragMode​(int dragMode)
        设置桌面窗格使用的“拖动样式”。 由于性能或美观原因,您可能需要更改为某种模式。
        参数
        dragMode - 用于桌面中项目的拖动样式
        从以下版本开始:
        1.3
        另请参见:
        LIVE_DRAG_MODEOUTLINE_DRAG_MODE
      • getDragMode

        public int getDragMode​()
        获取桌面窗格使用的当前“拖动样式”。
        结果
        Live_DRAG_MODEOUTLINE_DRAG_MODE
        从以下版本开始:
        1.3
        另请参见:
        setDragMode(int)
      • getDesktopManager

        public DesktopManager getDesktopManager​()
        返回处理桌面特定UI操作的 DesktopManger
        结果
        处理桌面特定UI操作的 DesktopManger
      • setDesktopManager

        @BeanProperty(description="Desktop manager to handle the internal frames in the desktop pane.")
        public void setDesktopManager​(DesktopManager d)
        设置将处理桌面专用UI操作的DesktopManger 这可能被LookAndFeel覆盖。
        参数
        d - 要使用的 DesktopManager
      • updateUI

        public void updateUI​()
        来自UIManager通知表明L&F已经改变了。 UIManager替换最新版本的当前UI对象。
        重写:
        updateUIJComponent
        另请参见:
        JComponent.updateUI()
      • getAllFrames

        @BeanProperty(bound=false)
        public JInternalFrame[] getAllFrames​()
        返回目前在桌面上显示的所有JInternalFrames 返回图标化框架和展开框架。
        结果
        一个 JInternalFrame对象的数组
      • getSelectedFrame

        public JInternalFrame getSelectedFrame​()
        返回当前活动 JInternalFrame这个 JDesktopPane ,或 null如果没有 JInternalFrame当前处于活动状态。
        结果
        当前有效 JInternalFramenull
        从以下版本开始:
        1.3
      • setSelectedFrame

        public void setSelectedFrame​(JInternalFrame f)
        设置当前活动JInternalFrame这个JDesktopPane 该方法用于桥接JDesktopPane和平台实现代码之间的包间隙,不应直接调用。 为了可视化地选择客户机必须调用JInternalFrame.setSelected(true)来激活帧的帧。
        参数
        f - 当前选中的内部框架
        从以下版本开始:
        1.3
        另请参见:
        JInternalFrame.setSelected(boolean)
      • getAllFramesInLayer

        public JInternalFrame[] getAllFramesInLayer​(int layer)
        返回当前显示在桌面的指定层中的所有JInternalFrames 返回图标化帧以及扩展帧。
        参数
        layer - 指定桌面层的int
        结果
        一个 JInternalFrame对象的数组
        另请参见:
        JLayeredPane
      • selectFrame

        public JInternalFrame selectFrame​(boolean forward)
        在此桌面窗格中选择下一个 JInternalFrame
        参数
        forward - 一个布尔值,表示选择哪个方向; true用于转发, false用于向后
        结果
        所选的JInternalFrame或 null如果没有选择)
        从以下版本开始:
        1.6
      • addImpl

        protected void addImpl​(Component comp,
                               Object constraints,
                               int index)
        在指定的索引处将指定的组件添加到此容器。 此方法还通知布局管理器通过addLayoutComponent方法使用指定的约束对象将组件添加到此容器的布局。

        约束由正在使用的特定布局管理器定义。 例如, BorderLayout类定义了五个约束: BorderLayout.NORTHBorderLayout.SOUTHBorderLayout.EASTBorderLayout.WEST ,和BorderLayout.CENTER

        GridBagLayout类需要一个GridBagConstraints对象。 未通过正确类型的约束对象会导致一个IllegalArgumentException

        如果当前布局管理器实现LayoutManager2 ,那么就调用LayoutManager2.addLayoutComponent(Component,Object) 如果当前的布局管理器不实现LayoutManager2 ,并且约束是一个String ,那么它将调用LayoutManager.addLayoutComponent(String,Component)

        如果组件不是此容器的祖先,并且具有非空父项,则在将其添加到此容器之前,它将从其当前父进程中删除。

        如果程序需要跟踪每个添加到容器的请求,那么这种方法将会覆盖所有其他添加方法。 一个重写方法通常应该包括调用超类的方法版本:

        super.addImpl(comp, constraints, index)

        该方法更改布局相关信息,因此使组件层次结构无效。 如果容器已经被显示,则此后必须验证层次结构,以显示添加的组件。

        重写:
        addImplJLayeredPane
        参数
        comp - 要添加的组件
        constraints - 表示此组件的布局约束的对象
        index - 容器列表中要插入组件的位置,其中 -1表示附加到最后
        从以下版本开始:
        1.6
        另请参见:
        Container.add(Component)Container.add(Component, int)Container.add(Component, java.lang.Object)Container.invalidate()LayoutManagerLayoutManager2
      • setComponentZOrder

        public void setComponentZOrder​(Component comp,
                                       int index)
        将指定的组件移动到容器中指定的z顺序索引。 z次序确定组件被绘制的顺序; 首先使用最高z阶涂料的组分,最后使用最低z阶涂料的组分。 在组件重叠的地方,具有较低z阶的组件涂覆在具有较高z阶的组件上。

        如果组件是某个其他容器的子对象,则在添加到此容器之前将其从该容器中删除。 该方法与java.awt.Container.add(Component, int)之间的重要区别在于,该方法不会在组件上调用removeNotify ,同时将其从其先前的容器中删除,除非必要时,以及底层本机窗口系统允许。 这样,如果组件具有键盘焦点,则在移动到新位置时会保持焦点。

        此属性保证仅适用于轻型非Container组件。

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

        注意 :并非所有平台都支持将重量级组件的z顺序从一个容器更改为另一个,而无需调用removeNotify 无法检测平台是否支持此功能,因此开发人员不应作出任何假设。

        重写:
        setComponentZOrderContainer
        参数
        comp - 要移动的组件
        index - 容器列表中插入组件的位置,其中 getComponentCount()附加到最后
        从以下版本开始:
        1.6
        另请参见:
        Container.getComponentZOrder(java.awt.Component)Container.invalidate()
      • paramString

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

        @BeanProperty(bound=false)
        public AccessibleContext getAccessibleContext​()
        获取AccessibleContext与此相关JDesktopPane 对于桌面窗格,该AccessibleContext需要一个形式AccessibleJDesktopPane 如有必要,将创建一个新的AccessibleJDesktopPane实例。
        Specified by:
        getAccessibleContext在接口 Accessible
        重写:
        getAccessibleContextJLayeredPane
        结果
        一个 AccessibleJDesktopPane ,作为这个 AccessibleContextJDesktopPane