桌面面板和内部窗体
在一个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);
}
}
运行效果:
转载:https://blog.csdn.net/javanofa/article/details/106141405
查看评论