Java Swing高级组件——桌面面板和内部窗体

桌面面板和内部窗体

在一个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);

	}
}

运行效果:
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/javanofa/article/details/106141405