桌面面板和内部窗体
在一个GUI应用程序中需要使用多个窗口,针对这些窗口可以有两种管理策略,一种是每个窗口都是一个独立的窗体,优点是可以通过系统主窗体上的按钮及快捷键浏览所有窗口;另一种是提供一个主窗体,然后将其他窗口放在主窗体中,优点是窗口比较整齐。
在利用第二种策略管理窗口时,必须使用 JDesktopPane 类和 JInternalFrame 类(桌面面板类和内部窗体类)。 JDesktopPane 类是一个容器类,用来创建一个虚拟桌面; JInternalFrame 类是一个轻量级对象,用来创建支持拖动,关闭,图标化,调整大小,标题显示和菜单栏的内部窗体。
JDesktopPane 类中的常用方法
| 方法 | 说明 |
|---|---|
| getAllFrames() | 以数组的形式返回桌面中当前显示的所有 JInternalFrame |
| getSeletedFrame() | 获得桌面当前被选中的 |
| removeAll() | 从桌面中移除所有的 JInternalFrame |
| remove(int index) | 从桌面中移除位于指定索引位置的 JInternalFrame |
| setSelectedFrame(JInternalFrame f) | 设置指定的 JInternalFrame |
| setDragMode(int dragMode) | 设置窗体的拖动模式,入口参数的可选静态常量有LIVE_DRAG_MODE 和 OUTLINE_DRAG_MODE |
JInternalFrame 类
JInternalFrame 类创建构造方法时,可设置的入口参数最多为5个。
JInternalFrame(String title, boolean resizable, boolean closable, boolean maximizable, boolean iconifiable)
参数说明:
title:为内部窗体的标题。
resizable:设置是否允许自由调整大小,设为 true 表示允许,设为 false (默认值)表示不允许。
closable:设置是否提供“关闭”按钮,设为 true 表示提供,设为 false (默认值)表示提供。
maximizable:设置是否提供“最大化”按钮,设为 true 表示提供,设为 false (默认值)表示提供。
iconifiable:设置是否提供“最小化”按钮,设为 true 表示提供,设为 false (默认值)表示提供。
JInternalFrame 类中的常用方法
| 方法 | 说明 |
|---|---|
| setResizable(boolean b) | 设置是否允许自由调整大小 |
| setClosable(boolean b) | 设置是否提供关闭按钮 |
| setMaximizable(boolean b) | 设置是否提供“最大化”按钮 |
| setIconifiable(boolean b) | 设置是否提供“最小化”按钮 |
| setSelected(boolean selected) | 设置窗体是否被激活,设为 true 表示激活,设为 false (默认值)则表示不激活窗体 |
| isMaximum() | 查看窗体是否处于最大化状态 |
| isIcon() | 查看窗体是否处于最小化状态 |
| isClosed() | 查看窗体是否已经被关闭 |
| setFrameIcon(Icon icon) | 设置窗体标题栏显示的图标 |
创建一个桌面面板与内部窗体,代码如下:
package study.czm;
import java.awt.Container;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
public class Study {
public static void main(String[] args) {
JFrame jf = new JFrame();
jf.setTitle("表格组件");
jf.setSize(600, 500);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
Container c = jf.getContentPane();
JDesktopPane desktopPan = new JDesktopPane();// 创建桌面面板对象
desktopPan.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);// 设置内部窗体的拖拽方式
c.add(desktopPan);
// 创建内部窗体
JInternalFrame inFrame1 = new JInternalFrame("第一个内部窗体", true, true, true, true);
JInternalFrame inFrame2 = new JInternalFrame("第二个内部窗体", true, true, true, true);
JInternalFrame inFrame3 = new JInternalFrame("第三个内部窗体", true, true, true, true);
desktopPan.add(inFrame1);
inFrame1.setBounds(50, 50, 200, 200);
inFrame1.setVisible(true);
desktopPan.add(inFrame2);
inFrame2.setBounds(90, 90, 200, 200);
inFrame2.setVisible(true);
desktopPan.add(inFrame3);
inFrame3.setBounds(130, 130, 200, 200);
inFrame3.setVisible(true);
jf.setVisible(true);
}
}
运行效果:



本文介绍了Java Swing中用于管理多个窗口的策略,重点讲解了JDesktopPane(桌面面板)和JInternalFrame(内部窗体)的使用。通过JDesktopPane创建虚拟桌面,使用JInternalFrame实现可拖动、关闭、图标化、调整大小的内部窗体。详细阐述了这两个类的常用方法,并提供了创建和使用它们的代码示例。

1442

被折叠的 条评论
为什么被折叠?



