import java.awt.*;
import java.awt.event.*;
public class TestFrame implements ActionListener
{
private Frame f = new Frame("aframe");
private void init()
{
Button btn = new Button("quit");
//btn.addActionListener(this);//我认为应该这样
btn.addActionListener(new TestFrame());//为什么这样也可以??
f.add(btn);
f.setSize(300,300);
f.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
f.setVisible(false);
f.dispose();
System.exit(0);
}
public static void main(String [] args)
{
TestFrame tf = new TestFrame();
tf.init();
}
}
import java.awt.event.*;
public class TestFrame implements ActionListener
{
private Frame f = new Frame("aframe");
private void init()
{
Button btn = new Button("quit");
//btn.addActionListener(this);//我认为应该这样
btn.addActionListener(new TestFrame());//为什么这样也可以??
f.add(btn);
f.setSize(300,300);
f.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
f.setVisible(false);
f.dispose();
System.exit(0);
}
public static void main(String [] args)
{
TestFrame tf = new TestFrame();
tf.init();
}
}
然后addxxxxListener方法自动转型了但有时候这样不好 使用事件的对象 和实现事件的对象 不在一个范围中(他们没有共享的东西)
比如你这个按钮的处理事件想保存窗口上的文本 但是事件的实现对象 和按钮这个对象不在一个实例对象中
结果除非传如具体值 否则事件的实现对象怎么会知道 按钮所在窗体的文本框的值应该去了解下匿名类