Panel是什么?
Panel是Windows窗体控件用于为其他控件提供可识别的分组。自我理解为面板,也就是划分区域。
panel怎么使用?
public class TestPanel {
public static void main(String[] args) {
//1.首先new一个frame窗口,因为panel不能单独存在,
//需要添加到frame中
Frame frame = new Frame("添加了Panel的Frame窗口");
//2.然后new一个panel面板,panel需要用到布局的概念
Panel panel = new Panel();
//3.设置布局:先设置为空,测试效果
frame.setLayout(null);
//4.设置frame以及panel的坐标和背景
//设置窗口坐标以及背景
frame.setBounds(300, 300, 500, 500);
frame.setBackground(new Color(121, 161, 135));
//设面板坐标以及背景,相对于frame的坐标
panel.setBounds(50, 50, 400, 400);
panel.setBackground(new Color(35, 128, 11));
//5.将panel添加到窗口中
frame.add(panel);
//6.将窗口可视化,才能看见窗口
frame.setVisible(true);
}
}
效果展示:
这样就在Frame中添加了Panel面板,由于窗口一直关闭不了(只能通过IDEA的控制台强行结束),所以要解决一下此问题。
需要解决窗口关闭问题,就要引入监听事件
由于是窗口关闭问题,所以应该是监听窗口关闭事件
fram类里有windows监听器,我们就添加一个,然后根据他需要的参数,new一个监听器
frame.addWindowListener(new WindowListener() {
@Override
public void windowOpened(WindowEvent e) {
}
@Override
public void windowClosing(WindowEvent e) {
}
@Override
public void windowClosed(WindowEvent e) {
}
@Override
public void windowIconified(WindowEvent e) {
}
@Override
public void windowDeiconified(WindowEvent e) {
}
@Override
public void windowActivated(WindowEvent e) {
}
@Override
public void windowDeactivated(WindowEvent e) {
}
});
添加以后它自动导入需要重写的方法,但是这种方法太过于繁琐,所以我们使用23种模式的适配器模式简化此操作。操作思想就是我们通过new它的一个子类来实现它的某一个方法,刚好在awt包里有WindowAdapter类,Adapter可以实现WindowsListener的接口
所以简化操作为:
// 监听事件,监听窗口关闭的事件 System.exit(0)
// 适配器模式:
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭的时候需要做的事情
@Override
public void windowClosing(WindowEvent e) {//选择重写Closing方法
//结束程序
System.exit(0);
}
});
做完以上操作后,我们再点击窗口的关闭就可以直接将窗口关闭了。