Module java.desktop
Package javax.swing

Class JDesktopPane

所有已实现的接口:
ImageObserver, MenuContainer, Serializable, Accessible

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

通常将此类用作JInternalFrames的父级,以为JInternalFrames提供可插拔的DesktopManager对象。L&F特定实现的installUI负责适当设置desktopManager变量。当JInternalFrame的父级是JDesktopPane时,它应该将大部分行为委托给desktopManager(关闭、调整大小等)。

有关更多文档和示例,请参见如何使用内部框架,这是The Java Tutorial中的一个部分。

警告: Swing不是线程安全的。更多信息请参见Swing的线程策略

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

自:
1.2
参见:
  • Field Details

  • Constructor Details

    • JDesktopPane

      public JDesktopPane()
      创建一个新的JDesktopPane
  • Method Details

    • getUI

      public DesktopPaneUI getUI()
      返回呈现此组件的L&F对象。
      覆盖:
      getUI 在类 JComponent
      返回:
      渲染此组件的DesktopPaneUI对象
    • setUI

      @BeanProperty(hidden=true, visualUpdate=true, description="The UI object that implements the Component\'s LookAndFeel.") public void setUI(DesktopPaneUI ui)
      设置呈现此组件的L&F对象。
      参数:
      ui - DesktopPaneUI L&F对象
      参见:
    • 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
      参见:
    • getDragMode

      public int getDragMode()
      获取桌面窗格使用的当前“拖动样式”。
      返回:
      Live_DRAG_MODEOUTLINE_DRAG_MODE
      自:
      1.3
      参见:
    • 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对象。
      覆盖:
      updateUI 在类 JComponent
      参见:
    • getUIClassID

      @BeanProperty(bound=false) public String getUIClassID()
      返回呈现此组件的L&F类的名称。
      覆盖:
      getUIClassID 在类 JComponent
      返回:
      字符串“DesktopPaneUI”
      参见:
    • getAllFrames

      @BeanProperty(bound=false) public JInternalFrame[] getAllFrames()
      返回当前在桌面中显示的所有JInternalFrames。返回缩小的框架以及展开的框架。
      返回:
      一个JInternalFrame对象数组
    • getSelectedFrame

      public JInternalFrame getSelectedFrame()
      返回此JDesktopPane中当前活动的JInternalFrame,如果当前没有活动的JInternalFrame,则返回null
      返回:
      当前活动的JInternalFramenull
      自:
      1.3
    • setSelectedFrame

      public void setSelectedFrame(JInternalFrame f)
      设置此JDesktopPane中当前活动的JInternalFrame。此方法用于在JDesktopPane和平台实现代码之间建立包间隙,并且不应直接调用。要可视地选择框架,客户端必须调用JInternalFrame.setSelected(true)来激活框架。
      参数:
      f - 当前选定的内部框架
      自:
      1.3
      参见:
    • getAllFramesInLayer

      public JInternalFrame[] getAllFramesInLayer(int layer)
      返回当前在桌面指定层中显示的所有JInternalFrames。返回缩小的框架以及展开的框架。
      参数:
      layer - 指定桌面层的整数
      返回:
      一个JInternalFrame对象数组
      参见:
    • 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.WESTBorderLayout.CENTER

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

      如果当前布局管理器实现了LayoutManager2,则会在其上调用LayoutManager2.addLayoutComponent(Component,Object)。如果当前布局管理器没有实现LayoutManager2,并且约束是一个String,则会在其上调用LayoutManager.addLayoutComponent(String,Component)

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

      这是要覆盖的方法,如果程序需要跟踪对容器的每个添加请求,因为所有其他添加方法都会推迟到这个方法。覆盖方法通常应包括对该方法的超类版本的调用:

      super.addImpl(comp, constraints, index)

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

      覆盖:
      addImpl 在类 Container
      参数:
      comp - 要添加的组件
      constraints - 表达此组件的布局约束的对象
      index - 要插入组件的容器列表中的位置,其中-1表示追加到末尾
      自版本:
      1.6
      参见:
    • remove

      public void remove(int index)
      从此窗格中删除索引组件。这是绝对索引,忽略层。
      覆盖:
      remove 在类 JLayeredPane
      参数:
      index - 指定要移除的组件的整数
      自版本:
      1.6
      参见:
    • removeAll

      public void removeAll()
      从此容器中删除所有组件。
      覆盖:
      removeAll 在类 JLayeredPane
      自版本:
      1.6
      参见:
    • setComponentZOrder

      public void setComponentZOrder(Component comp, int index)
      将指定的组件移动到容器中指定的Z顺序索引。Z顺序确定组件绘制的顺序;具有最高Z顺序的组件首先绘制,具有最低Z顺序的组件最后绘制。在组件重叠时,具有较低Z顺序的组件会覆盖具有较高Z顺序的组件。

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

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

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

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

      覆盖:
      setComponentZOrder 在类 Container
      参数:
      comp - 要移动的组件
      index - 要插入组件的容器列表中的位置,其中getComponentCount()追加到末尾
      自版本:
      1.6
      参见:
    • paramString

      protected String paramString()
      返回此JDesktopPane的字符串表示形式。此方法仅用于调试目的,返回的字符串的内容和格式可能因实现而异。返回的字符串可能为空,但不能为null
      覆盖:
      paramString 在类 JLayeredPane
      返回值:
      JDesktopPane的字符串表示形式
    • getAccessibleContext

      @BeanProperty(bound=false) public AccessibleContext getAccessibleContext()
      获取与此JDesktopPane关联的AccessibleContext。对于桌面窗格,AccessibleContext采用AccessibleJDesktopPane的形式。如果需要,将创建一个新的AccessibleJDesktopPane实例。
      指定者:
      getAccessibleContext 在接口 Accessible
      覆盖:
      getAccessibleContext 在类 JLayeredPane
      返回值:
      作为此JDesktopPaneAccessibleContextAccessibleJDesktopPane