eclipse中的GUI界面异常

时间:2013-04-25 20:43:28

标签: java swing nullpointerexception actionlistener

我是java的新来者,目前通过 HeadFirst java book 教自己。 我正在浏览GUI界面,书中的代码似乎没有运行,

import javax.swing.*;
import java.awt.event.*;

public class SimpleGui1 implements ActionListener {


     JButton Button;

    public static void main(String[] args) {

        SimpleGui1 gui = new SimpleGui1();
        gui.go();
    }

    public void go(){ 

         JFrame frame = new JFrame();
         JButton button = new JButton("click me");
         button.addActionListener(this);

         frame.getContentPane().add(button);
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.setSize(300,300);
         frame.setVisible(true);

    }

    public void actionPerformed (ActionEvent event) {

        Button.setText("I have been clicked");
    }

}

The exception : 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

有人可以告诉我出了什么问题吗?

2 个答案:

答案 0 :(得分:5)

永远不会初始化类成员变量Button。而另一个具有不同名称(Java区分大小写)的是在go方法中本地定义的。

ActionListener中,您只需使用ActionEvent来源来确定Action的来源:

public void actionPerformed(ActionEvent event) {

   JButton button = (JButton) event.getSource();
   button.setText("I have been clicked");
}

这消除了将JButton作为类成员变量的需要。

答案 1 :(得分:2)

初始化按钮,它仍为空。

你有一个NullPointerException。