java - JButton.actionPerformed : null pointer exception

标签 java swing jbutton

我正在阅读一本书,当单击 JButton 时,以下代码在运行时在 button.actionPerformed 行抛出 NPE。我已尽力确保我的代码与书中的完全一致,有人可以指出我的问题吗? (这本书是为 java 5 编写的,我使用的是最新的 java 7,据我所知,这对以下代码没有影响)

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

public class SimpleGui implements ActionListener {
JButton button;
public static void main(String[] args) {
    SimpleGui gui = new SimpleGui();
    gui.go();
}

public void go() {
    JFrame frame = new JFrame();
    JButton button = new JButton("click here");

    button.addActionListener(this);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.getContentPane().add(button);
    frame.setSize(300,300);
    frame.setVisible(true);
}

public void actionPerformed(ActionEvent event) {
    button.setText("I've been clicked, argh!");
}

}

最佳答案

原因是这一行:

JButton button = new JButton("click here");

在这里您正在创建新的本地 JButton 对象,它是 shadowing成员变量 button 。因此 button 仍然是 null。您应该改用:

button = new JButton("click here");

关于java - JButton.actionPerformed : null pointer exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16255724/

相关文章:

java - 查找我定义的类的列表中是否存在具有给定变量值的元素

java - 为什么这些图像不显示?

java - 我不知道如何将 Jbutton 返回到调用它的前一个方法

java - 我如何使用 JButton 从另一个类打开 JFrame 。目前我使用链接到 Action 监听器的按钮

java 参数化泛型静态工厂

java - 我想仅从 java 关闭由 java 程序启动的 Windows 进程

java - HTML5 服务器端事件 (SSE)

Java MVC 模型 View Dao 分离

java - 设置使用热敏打印机打印 JFrame 内容

java - 尝试将框架附加到面板并绘制多边形,但框架上没有绘图