我是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)
有人可以告诉我出了什么问题吗?
答案 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。