java 事件处理机制中,要明确事件源和事件监听器。
事件源是触发事件的组件,如按钮等。事件监听器是实现监听器类的对象。在事件处理之前要将监听器注册到时间源。时间处理机制中顶层时间类型是EventObject。属于java.util包,以下是窗体事件的例子(注意各类之间的关系)
import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JFrame; public class ListenerDemo { /** * 事件监听实例 */ public static void main(String[] args) { new MyFrame().setVisible(true); } } class MyFrame extends JFrame { public MyFrame() { MyWindowListener mwl=new MyWindowListener(); setTitle("窗体事件"); setSize(400,200); setBounds(100, 100, 400, 200); addWindowListener(mwl); } } class MyWindowListener implements WindowListener{ @Override public void windowOpened(WindowEvent e) { // TODO Auto-generated method stub System.out.println("窗口打开"); } @Override public void windowClosing(WindowEvent e) { // TODO Auto-generated method stub System.out.println("窗口关闭"); System.exit(0); } @Override public void windowClosed(WindowEvent e) { // TODO Auto-generated method stub System.out.println("窗口关闭后"); } @Override public void windowIconified(WindowEvent e) { // TODO Auto-generated method stub System.err.println("窗口最小化"); } @Override public void windowDeiconified(WindowEvent e) { // TODO Auto-generated method stub System.out.println("窗口恢复"); } @Override public void windowActivated(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowDeactivated(WindowEvent e) { // TODO Auto-generated method stub } }
注册一个监听器的时候要实现时间接口,实现接口的所有方法,java提供适配器解决问题。、、
时间适配器是实现一个和多个监听接口的类,适配器为接口的时间处理方法提供了空的实现,这样可以继承适配器重写方法实现了所需时间处理方法。
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
public class AdapterDemo {
/**
* 事件适配器
*/
public static void main(String[] args) {
new Frame1().setVisible(true);
}
}
class Frame1 extends JFrame {
Frame1(){
setTitle("适配器");
setSize(400,300);
addWindowListener(new MyAdapter());
}
}
class MyAdapter extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.out.println("窗体关闭");
System.exit(0);
}
}
也可以使用java的内部类实现,如果需要的话在内部添加更多的方法即可。
关于监听事件,还有更多需要去掌握。注意多练习。