import java.awt.*;
import java.awt.event.*;
public class TestActionEvent2 extends Frame{
public static void main(String args[]){
Button b1=new Button("start");
Button b2=new Button("stop");
Monitor bh=new Monitor();
b1.addActionListener(bh);
b2.addActionListener(bh);
b2.setActionCommand("dfsdf ds");
add(b1);
add(b2);
pack();
setVisible(true);
}
}
class Monitor implements ActionListener{
public void actionPerform(ActionEvent e){
System.out.println("a button are pressed"+
"is"+e.getActionCommand());
}
}

解决方案 »

  1.   

    楼主应该是看书刚看一点就开始写程序了吧
    先把比较合理的写法发上
    import java.awt.*; 
    import java.awt.event.*; 
    public class TestActionEvent2 extends Frame{ 
          public TestActionEvent2()
      {
         Button b1=new Button("start"); 
         Button b2=new Button("stop"); 
         Monitor bh=new Monitor(); 
         b1.addActionListener(bh); 
         b2.addActionListener(bh); 
         b2.setActionCommand("dfsdf ds"); 
         addWindowListener(new WindowAdapter()
         {
           public void windowClosing(WindowEvent e) {
          System.exit(0); 
        }
         }
         );
         add(b1); 
         add(b2); 
         pack(); 
      setVisible(true);    }
      public static void main(String args[]){ 
      TestActionEvent2 e=new TestActionEvent2();
      } 
              class Monitor implements ActionListener{ 
         public void actionPerformed(ActionEvent e){ 
                System.out.println("a button are pressed"+ 
                 "is"+e.getActionCommand()); 
      } 
     } 

      

  2.   

    解释一下程序不运行的原因:
    错误:
    add(b1); 
    add(b2); 
    pack(); 
    setVisible(true); 

    这些方法都不是静态方法,而main方法是静态方法,不能在静态方法中直接调用非静态方法
    public void actionPerform(ActionEvent e){ 
    System.out.println("a button are pressed"+ 
    "is"+e.getActionCommand()); 

    事件响应方法名错误,没有实现覆盖作用
    楼主可以将程序和上面的程序对比,看看哪些地方不对
    建议楼主最好先找个书上的程序比着写下,理解下程序结构,再着手写自己的程序