4、Panel面板详解

4、Panel面板详解

Panel面板与Frame一样,但是Panel可以内嵌进Frame,Panel有一个特性是不能单独存在,必须内嵌到Frame或弹窗中,Panel是一个面板,面板应该容器里面,可以看成是一个空间,但是不能单独存在,需要内嵌在Frame中。

Panel需要放在Frame中,反过来说也就是在Frame中添加Panel,这里panel能当做add的参数是因为Panel继承了Container,而Container又继承了Component

之所以这样做的原因是,在后面学习的组件都放在Panel中而不是直接放在窗口Frame上

package com.dryant.lesson1;

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

//Panel 可以看成是一个空间,但是不能单独存在,需要内嵌在Frame中
public class TestPanel {
    public static void main(String[] args) {
        Frame frame = new Frame();
        //面板中有一个布局的概念
        Panel panel = new Panel();


        //frame有一个默认的布局管理器,这里我们将其设置为null
        //这里需要将其设置为空的原因是如果不设置,panel将填充整个Frame
        frame.setLayout(null);

        //设置坐标
        frame.setBounds(300,300,500,500);
        frame.setBackground(new Color(40,161,35));

        //设置Panel坐标大小
        panel.setBounds(50,50,400,400);
        panel.setBackground(new Color(239, 138, 138));

        //Panel需要放在Frame中,反过来说也就是在Frame中添加Panel
        //这里panel能当做add的参数是因为Panel继承了Container,而Container又继承了Component
        frame.add(panel);

        //布局完之后需要将Frame显现出来
        frame.setVisible(true);

        //监听时间,监听窗口关闭事件  System.exit()
        //这里我们使用一种模式叫做“适配器模式”,一共有23设计模式
        /*适配器模式就是指:面对大量的接口需要实现的情况下,程序员就要想办法只用实现其中的一个就可以了
        不用全部实现,实现的方法就是
        用一个类取继承那个类,在继承中用一个默认事件再重写这些接口就可以了
        这里就是选择了WindowAdapter(),他是WindowListener的子类实现了WindowListener的接口
        */
        frame.addWindowListener(new WindowAdapter(){
            //窗口点击关闭的时候需要做的事情
            @Override
            public void windowClosing(WindowEvent e) {
                //super.windowClosing(e);
                //结束程序
                System.exit(0);//这是AWT解决窗口关闭的问题
            }
        });
    }
}

这里我们后面还要学习23种设计模式

/*适配器模式就是指:面对大量的接口需要实现的情况下,程序员就要想办法只用实现其中的一个就可以了
        不用全部实现,实现的方法就是
        用一个类取继承那个类,在继承中用一个默认事件再重写这些接口就可以了
        这里就是选择了WindowAdapter(),他是WindowListener的子类实现了WindowListener的接口
        */

你可能感兴趣的:(Java_GUI,java)