0

我是 Java 新手,目前正在通过HeadFirst Java 书籍自学。我正在浏览 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)

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

4

2 回答 2

5

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

在 中,ActionListener您可以简单地使用ActionEventsource 来确定 的来源Action

public void actionPerformed(ActionEvent event) {

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

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

于 2013-04-25T20:47:59.223 回答
2

初始化按钮,它仍然为空。

你有一个 NullPointerException。

于 2013-04-25T20:48:38.827 回答