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的内部类实现,如果需要的话在内部添加更多的方法即可。
关于监听事件,还有更多需要去掌握。注意多练习。