窗口事件可以添加3种监听方式
1.获得焦点监听 (前台 后台)
f.addWindowFocusListener(new WindowFocusListener() {
@Override
public void windowGainedFocus(WindowEvent e) {
System.out.println("前台 获得焦点");
}
@Override
public void windowLostFocus(WindowEvent e) {
System.out.println("后台 失去焦点");
}
});
2.获得状态监听 (正常 最小化 最大化)
f.addWindowStateListener(new WindowStateListener() {
@Override
public void windowStateChanged(WindowEvent e) {
int oldState=e.getOldState();
//原状态 (正常 最大化 最小化)
int newState=e.getNewState();
//新状态 (正常 最大化 最小化)
//查看原状态是什么 新状态是什么
System.out.println(e.paramString());
//状态 常量符号 常量
//_________________________________
//正常 Frame.NORMAL 0
//最大化 Frame.MAXIMIZED_BOTH 6
//最小化 Frame.ICONIFIED 1
//_________________________________
//分别可能是 3*2 6种情况
//正常->最大化
if(oldState==Frame.NORMAL&&newState==Frame.MAXIMIZED_BOTH)
{
System.out.println("正常->最大化");
}
//正常->最小化
if(oldState==Frame.NORMAL&&newState==Frame.ICONIFIED)
{
System.out.println("正常->最小化");
}
//最大化->正常
if(oldState==Frame.MAXIMIZED_BOTH&&newState==Frame.NORMAL)
{
System.out.println("最大化->正常");
}
//最大化->最小化
if(oldState==Frame.MAXIMIZED_BOTH&&newState==Frame.ICONIFIED)
{
System.out.println("最大化->最小化");
}
//最小化->正常
if(oldState==Frame.ICONIFIED&&newState==Frame.NORMAL)
{
System.out.println("最小化->正常");
}
//最小化->最大化
if(oldState==Frame.ICONIFIED&&newState==Frame.MAXIMIZED_BOTH)
{
System.out.println("最小化->最大化");
}
}
});
3. 获得监听 (可添加各种事件)
添加通用事件 WindowAdapter (可以满足 一般需求的事件)
f.addWindowListener(new WindowAdapter() {
//6.1 设置窗口打开的时候发生的事件 默认都是一些空的操作
public void windowOpened(WindowEvent e) {
// super.windowOpened(e);
System.out.println("窗体已经打开");
}
//6.2 设置窗体关闭按钮的点击事件
public void windowClosing(WindowEvent e) {
//super.windowClosing(e);
System.out.println("窗体关闭按钮点击!");
//6.2.1 直接关闭虚拟机 不执行windowColsed
//System.exit(0);
//6.2.2 关闭窗口 执行windowCloesd
f.dispose();
}
//6.3 窗体正常关闭后
public void windowClosed(WindowEvent e) {
//super.windowClosed(e);
System.out.println("窗口正常关闭后..");
}
//6.4 窗体最小化按钮点击
public void windowIconified(WindowEvent e) {
//super.windowIconified(e);
System.out.println("最小化按钮...");
}
//6.5 窗体最小化还原
public void windowDeiconified(WindowEvent e) {
//super.windowDeiconified(e);
System.out.println("最小化还原...");
}
//6.6 窗体切换到前台
public void windowActivated(WindowEvent e) {
//super.windowActivated(e);
System.out.println("切换到前台..启动的时候默认就是前台 优先级比窗口打开或者最小化高");
}
//6.7 窗体切换到后台
public void windowDeactivated(WindowEvent e) {
//super.windowDeactivated(e);
System.out.println("切换到后台... 在点击关闭按钮的瞬间 优先级比最小化高 会调用一次");
}
});