P21 JInternalFrame内部窗口

P21 JInternalFrame内部窗口

系统:Win10
Java:1.8.0_333
IDEA:2020.3.4
Gitee:https://gitee.com/lijinjiang01/JavaSwing

1.概述

JInternalFrame:内部窗口。
JInternalFrame 支持在 JFrame 窗口内部显示一个完整的子窗口,并提供了许多本机窗体功能的轻量级对象,包括拖动、关闭、变成图标、调整大小、标题显示和支持菜单栏等。
在实际使用中,通常将 JInternalFrame 添加到 JDesktopPane 中,由其来维护和显示 JInternalFrame。
JInternalFrame 的实例创建后,其具体使用方法和 JFrame 类似。

2.代码实例

import com.lijinjiang.beautyeye.BeautyEyeLNFHelper;
import javax.swing.*;
import java.beans.PropertyVetoException;

public class Demo01 {
    public static void main(String[] args) {
        try {
            BeautyEyeLNFHelper.frameBorderStyle = BeautyEyeLNFHelper.FrameBorderStyle.generalNoTranslucencyShadow;
            BeautyEyeLNFHelper.launchBeautyEyeLNF();
        } catch (Exception e) {
            e.printStackTrace();
        }
        JFrame frame = new JFrame("Demo01");
        frame.setSize(800, 600);

        // 创建 桌面面板
        JDesktopPane desktopPane = new JDesktopPane();

        // 创建 内部窗口
        JInternalFrame internalFrame = createInternalFrame();

        // 添加 内部窗口 到 桌面面板
        desktopPane.add(internalFrame);

        // 把 桌面面板 作为 内容面板 设置到窗口并显示
        frame.setContentPane(desktopPane);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);

        try {
            // 设置 内部窗口 被选中
            internalFrame.setSelected(true);
        } catch (PropertyVetoException e) {
            e.printStackTrace();
        }
    }

    private static JInternalFrame createInternalFrame() {
        // 创建一个内部窗口
        JInternalFrame internalFrame = new JInternalFrame(
                "内部窗口",  // title
                true,       // resizable
                true,       // closable
                true,       // maximizable
                true        // iconifiable
        );

        // 设置窗口的宽高
        internalFrame.setSize(400, 300);
        // 设置窗口的显示位置
        internalFrame.setLocation(200, 100);
        // 内部窗口的关闭按钮动作默认就是销毁窗口,所有不用设置
        // internalFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

        // 创建内容面板
        JPanel panel = new JPanel();

        // 添加组件到面板
        panel.add(new JLabel("Label001"));
        panel.add(new JButton("JButton001"));

        // 设置内部窗口的内容面板
        internalFrame.setContentPane(panel);

        /*
         * 对于内部窗口,还可以不需要手动设置内容面板,直接把窗口当做普通面板使用,
         * 即直接设置布局,然后通过 add 添加组件,如下代码:
         *     internalFrame.setLayout(new FlowLayout());
         *     internalFrame.add(new JLabel("Label001"));
         *     internalFrame.add(new JButton("JButton001"));
         */

        // 显示内部窗口
        internalFrame.setVisible(true);

        return internalFrame;
    }
}

3.效果演示

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李晋江

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值