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的接口
*/