基本概念问题。如果你 implements ActionListener 了就要实现这个接口的所有方法,但是你却是在addActionListener时又new ActionListener() 了一人新的实例,所以结构就不对了。所以我只能说程序不是那样写的。你可以用jbuilder生成一个框架来看一下。整个结构,一个JFrame一个主程序类等等。

解决方案 »

  1.   

    1、去掉implements ActionListener
    2、
    b1.addActionListener(this);
    加方法
    public void actionPerformed(java.awt.event.ActionEvent e)
      

  2.   

    先理解implements和new的包含的意思
      

  3.   


    supershot给出的方法仍会有问题的。你注意到他的程序只有一个main方法吗?这是一个静态方法,frame在这个方法里的一个局部变量而已,这种结构不好改的。所以我才说结构有问题了。
      

  4.   

    错误太多了。
    1、你的类应该是一个public类,但你没有写public 关键字;
    2、类名是b1,为什么一个JButton的实例也叫b1?
    3、你的类要implements ActionListener,为什么不提供actionPerformed方法?
    4、你在JButton b1的addActionListener()方法内定义了一个匿名内部类,该内部
    类的actionPerformed方法内直接调用了b1变量,这是不允许的,除非你把JButton b1
    变量定义为final的。唉,好好看看书吧!
      

  5.   

    编译通过
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    class b1 //implements ActionListener
    {
        JButton b1;
        
        public static void main(String[] args) 
        {
          b1 b= new b1();
        }
        
        b1(){
            JFrame frame = new JFrame("ButtonDemo");
            frame.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
            b1 =new JButton("bbbb");        b1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {            b1.setEnabled(false);
                
                }
            });    
            frame.getContentPane().add(b1, BorderLayout.CENTER);
          
            frame.pack();
            frame.setVisible(true);
        }
      
    }
      

  6.   

    好好看看THINKING IN JAVA里面有啊~