请教以下两种方式哪个好? 或者说在使用上好处更多? 为什么? 多谢啦!第一种:
import java.awt.*;public class Test implements ActionListener
{
public static void main(String[] args)
{
Test t = new Test();
}

public Test()
{
Frame f = new Frame("test");
Button b = new Button("BUTTON");
b.addActionListener(this);
......
}

public void actionPerformed(ActionEvent arg)
{
......
}
}========================================================================
第二种:
import java.awt.*;public class Test
{
public static void main(String[] args)
{
new MyFrame();
}
}class MyFrame extends Frame
{

Button b = new Button("BUTTON");
b.addActionListener(new Moniter());
......
}class Moniter implements ActionListener
{
public void actionPerformed(ActionEvent arg)
{
......
}
}

解决方案 »

  1.   

    就用过第一种,或者是直接让类继承JFrame,但是也没有像LZ第二种里面class Moniter implements ActionListener 然后b.addActionListener(new Moniter()); 这种写法,感觉没有必要这样
      

  2.   

    这里用到设计模式中的  观察者模式 ,
    第二种比第一种好,
    还有一种是最好的。b.addActionListener(new ActionListener
    {
    public void actionPerformed(ActionEvent arg)
    {
    ......
    }
    };
      

  3.   

    很明显,是第二种。你现在只有一个按钮,要是界面上有很多按钮的话,你的actionPerformed里面就只能根据actionCommand来判断是要处理哪个按钮的逻辑了。时间一长,必定充斥大量的if esle  如果一个按钮定义一个actionHander类,类的数量会多一点,但是程序的层次会清晰很多。OO里面推荐每个类都有明确的职责,Test 就是一个界面类,用来做交互的。就没必要用来当做事件监听。按钮才是需要监听事件的。而每个actionHander就是处理事件的。这样结构会清晰一点
      

  4.   

    显然第二种。可以看看JAVA编程思想里面推荐的。。
      

  5.   

    extends Frame implements ActionListener 自己一般用这种的根据不同需求来看吧,用内部类的好处就是,判断事件源更方便些
      

  6.   

    The second one, you can get the way once you go through the book core java.