04 Panel 面板 和监听器

Panel 面板 和监听器

package demo04;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class TestPanel {
    // Panel 面板(小窗口),不能单独存在,必须要嵌套在 Frame(总窗口) 里面
    // Panel 可以有多个,多个Panel 只能嵌套在一个 Frame 里面
    // 组件一般先放在panel里面,然后panel放在frame 里面
    public static void main(String[] args) {

        // 创建两个类的对象
        Frame frame = new Frame("唯一的窗口");
        Panel panel = new Panel();

        // 设置布局
        frame.setLayout(null);


        // frame 设置
        frame.setBounds(300,300,500,500);
        frame.setBackground(Color.blue);
        frame.setVisible(true);

        // panel 设置
        panel.setBounds(50,50,300,300);   // 相对坐标,绝对长度
        panel.setBackground(Color.black);
        // panel 不需要  panel.setVisible(true);

        // 将 panel 嵌套在 frame 里面
        frame.add(panel);

        // 监听事件,监听窗口关闭事件  System.exit(0);
        // 适配器模式:只需要重写需要的方法
        /*
        Listener(监听器): 不可视化组件,里面存在各种方法来根据监听的事件采取行动
        之前学的都是可视化组件
        WindowAdapter 是一个抽象类(看源码!),负责实现 WindowListener 接口,所以我们要重写它的方法

        这段代码才是监听器(一个对象,由对象重写并调用特殊的方法来完成监听的功能)
        实际上是 这里用到了:匿名内部类(实际上是对象)+匿名代码块
        new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        }
         */
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);  // 强制退出程序
            }
        });
        

    }
}
posted @   被占用的小海海  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示