Panel 可以看成是一个空间,但是面板不能单独存在
思路:
- 首先new两个窗口,一个总的窗口frame,一个面板panel
- 然后给总窗口设置布局,因为如果不设置布局,会默认置顶,所以让他为null
- 然后设置窗口的坐标,又设置了面板的坐标,面板由于添加到了咱们的窗口里面,所以它是一个相对坐标
- 最后设置可见性
补充:
添加一个窗口监听事件,这样窗口就能正常退出了
package com.gui.lesson1;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
//Panel 可以看成是一个空间,但是面板不能单独存在
public class TestPanel {
public static void main(String[] args) {
Frame frame = new Frame();
//布局
Panel panel = new Panel();
//设置布局,如果不设置会默认置顶
frame.setLayout(null);
//坐标
frame.setBounds(300, 300, 500, 500);
frame.setBackground(new Color(40, 160, 35));
//Panel设置坐标 ,相对于frame
panel.setBounds(50, 50, 400, 400);
panel.setBackground(new Color(219, 18, 43));
//frame.add(panel) Panel继承Container继承Component 因此方法里面可以放面板
frame.add(panel);
//设置可见性
frame.setVisible(true);
//监听事件,监听窗口关闭事件,点右上角的X能关掉窗口 System.exit(0)
//适配器模式: 本身是WindowListener接口 要重写许多方法,而只要我们选一个它的子类,我们需要实现哪个方法实现一下这个接口就ok
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭的时候需要做的事情
@Override
public void windowClosing(WindowEvent e) {
//结束程序
System.exit(0);//1是有异常的退出
}
});
}
}
添加了一个监听事件,点击右上角可以正常退出了