Swing 提供实现多文档界面(MDI)应用程序的一组组件。MDI应用程序(如Microsoft Word和Adobe FrameMaker)是用一个窗口实现的,这个窗口是应用程序中创建的文档的桌面。
Swing提供带桌面的MDI功能和内部窗体,其中桌面由JDesktopPane 类表示,内部窗体由JlnternalFrame类表示。内部窗体在桌面上,并且可以在桌面上打开、关闭、最大化和图标化。Swing还提供一个 DesktopManager类,用这个类来实现桌面上的内部窗体的特定界面样式行为。
1、JInternalFrame
由于内部窗体是外部窗体的复制品,所以内部窗体也是窗体。由于它们包含在另一个Swing容器中,所以它们是内部的,而这个容器通常是一个桌面窗格。
内部窗体边框中所包含的控件与界面样式有关。标准Swing 界面样式都提供关闭按钮、最大化按钮和最小化按钮。
2、JDesktopPane
由JDesktopPane类表示的桌面窗格是包含内部窗体的容器。JDesktopPane是 JLayeredPane类的一个扩展,并且维护与一个桌面管理器的联系。JDesktopPane使用它的层能力来管理它所包含的内部窗体的层序。JDesktopPane的每个实例都有一个负责实现界面样式行为的桌面管理器。
3、DesktopManager
桌面管理器实现桌面窗格的特定界面样式行为。例如,在桌面窗格中拖动内部窗体和调整内部窗体大小的方式由这个桌面窗格的桌面管理器来负责。当一个内部窗体被操纵时,(例如,通过调用JUntemnalFrame . setClosed()来关闭这个窗体),这个内部窗体就把操纵工作交给它的UI代表,而UI代表又把这个工作交给一个桌面管理器。
桌面管理器负责实现下面的行为:
- 激活窗体/使窗体不激活。
- 拖动窗体/调整窗体的大小。
- 打开窗体/关闭窗体。
- 图标化窗体/恢复窗体。
- 窗体最小化/窗体最大化。