Java的几种事件监听步骤
Java的几种事件监听方法
这几天在看Java的图形界面编程,由于上课也没书,几乎没学什么,于是想自己做个堆积木来好好学一下。写完之后,被监听弄得出了好几个问题,幸好学长帮我的忙才对Java的事件驱动模型有了个基本的了解,看来用Java做GUI真的不是件蛮爽的事。后来自己好好总结了一下,想清了下面四种常用的监听方法:
import javax.swing.*;
import java.awt.event.*;
//The first method
//该方法有缺陷,如果本类要继承于另外一个类,那么由于java的单继承机制,该类就不能再继承于适配器类
//使用该方法时需要注意适配器类中的方法名字要写正确,否则jdk会认为是新增的方法而不会报错
public class JFrameDemo extends WindowAdapter
{
JFrame jfr;
public JFrameDemo(String name)
{
jfr = new JFrame(name);
jfr.setSize(200,100);
jfr.setVisible(true);
jfr.addWindowListener(this);
}
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
public static void main(String[] args)
{
new JFrameDemo("jframedemo");
}
}
//The second method
public class JFrameDemo extends JFrame
{
public JFrameDemo(String name)
{
super(name);
setSize(200,100);
setVisible(true);
addWindowListener(new WindowOP());
}
public static void main(String[] args)
{
new JFrameDemo("jramedemo");
}
}
class WindowOP implements WindowListener
{
public void windowClosed(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
public void windowDeactivated(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowOpened(WindowEvent e) {}
}
//The third method
//通常而言,这种方法是较好的
//将实现接口WindowListener的部份放在class JFrameDemo中,这样就只用一个类
//这时在构造方法中添加监听的对象就是this本身了,也就是addWindowListener(this);
public class JFrameDemo extends JFrame implements WindowListener
{
public JFrameDemo(String name)
{
super(name);
setSize(200,100);
setVisible(true);
addWindowListener(this);
}
public void windowClosed(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
public void windowDeactivated(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowOpened(WindowEvent e) {}
}
//The forth method
//采用内部类的方法来实现WindowListener接口,即
addWindowListener(new WindowListener()
{
public void windowCloing(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
public void windowDeactivated(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowOpened(WindowEvent e) {}
});
//但这种方法通常只能用于较小的程序中