package event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JButton;
import javax.swing.JFrame;
class A implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {//单击鼠标触发的事件
System.out.println("我今天很爽!");
//
System.exit(-1); //终止整个程序
}
}
/*class B implements WindowListener{
//本来是这么写 但此接口的抽象方法太多 直接implements需要实现所有方法 显然不合适
//于是类WindowAdapter先实现该接口并重写(只有方法体)所有抽象方法
//再继承类WindowAdapter 此时是重写而不是实现 随便重写哪几个都可以 方便多了
//也即传说中的 适配器模型 Adapter
}
*/
class B extends WindowAdapter{
@Override
public void windowClosing(WindowEvent e) {
//
super.windowClosing(e); //直接用此方法也只是隐藏窗口 未完全关闭程序 控制台红框还是亮的
System.exit(-1);
}
@Override
public void windowOpened(WindowEvent e) {//窗口第一次出现时调用 加一个addWindowListener 然后重写多个方法即可
//一个方法即对应一个事件 妙妙妙
System.out.println("主窗口弹出!");
}
}
public class EventStartDemo {
public static void main(String[] args) {
JFrame frame = new JFrame();
JButton bn = new JButton("确定");
frame.add(bn);
frame.pack();
A aa = new A();
bn.addActionListener(aa);//aa是监听器 他一旦发现单击事件发生了 就立即自动调用类内的事件处理方法
//不同的事件源对应的方法不一样 即不同操作(单击 双击 鼠标 获得焦点 )对应不同方法的重写
frame.setVisible(true);
//
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.addWindowListener(new B());//也可达到关闭窗口功能
//
不写也自动关闭。。 但发现控制台红框还是亮的 说明程序未结束 隐藏了窗口罢了
}
}
运行结果:
主窗口弹出!
我今天很爽!//点一次确定后
我今天很爽!//点一次确定后