JInternalFrame的学习

JinternalFrame的使用跟JFrame几乎一样,可以最大化、最小化、关闭窗口、加入菜单等功能;唯一不同的是JinternalFrame是lightweight component,也就是说JInternalFrame不能单独出现,必须依附在最上层组件上。由于这个特色,JInternalFrame能够利用java提供的Look and Feel功能作出完全不同于原有操作系统所提供的窗口外型,也比JFrame更具有弹性。
在实际使用中,通常将 JInternalFrame 添加到 JDesktopPane 中,由其来维护和显示 JInternalFrame。

import java.awt.Color;

import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class FirstWindow
{
    private JInternalFrame jInternalFrame;
    private JFrame jf;

    public FirstWindow()
    {
        jf=new JFrame("测试窗口");
        jf.setSize(400, 400);
        jf.setLocationRelativeTo(null);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

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

        // 创建 内部窗口
        jInternalFrame=new JInternalFrame("内部窗口", true, true, true, true);
        // 设置窗口的宽高
        jInternalFrame.setSize(200, 200);
        // 设置窗口的背景色
        jInternalFrame.setForeground(Color.blue);
        // 设置窗口的显示位置
        jInternalFrame.setLocation(50, 50);
        // 内部窗口的关闭按钮动作默认就是销毁窗口,所有不用设置
        // jInternalFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

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

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

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

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

        // 把 桌面面板 作为 内容面板 设置到窗口
        jf.setContentPane(jDesktopPane);
        // 显示内部窗口
        jInternalFrame.setVisible(true);
    }

    public void showView()
    {
        jf.setVisible(true);
    }
}

JInternalFrame构造函数:

  • JInternalFrame():建立一个不能更改大小、不可关闭、不可最大最小化、也没有标题的Internal Frame。

  • JInternalFrame(String title,boolean resizable):建立一个不可关闭、不可最大最小化、但可变更大小且具有标题的 Internal Frame。

  • JInternalFrame(String title,boolean resizable,boolean closable):建立一个可关闭、可更改大小、且具有标题,但不可 最大化最小化的Internal Frame.

  • JInternalFrame(String title,boolean resizable,boolean closable
    ,boolean maximizable,boolean iconifiable): 建立一个可关闭、可更改大小、具有标题、可最大化与最小化的Internal Frame.

测试代码:

public class Test
{
    public static void main(String[] args)
    {
        new FirstWindow().showView();
    }

}

运行截图:
在这里插入图片描述
今天还有一个收获是,空指针异常Exception in thread "main" java.lang.NullPointerException,应该注意全局变量已经定义过的类,就不用再构造函数里重复了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值