java - 我的国际象棋程序的线程 "main"java.lang.NullPointerException 中出现异常

标签 java swing exception pointers awt

我正在尝试编写一个 4 方棋游戏。我想添加向上、向下、向左、向右、左上诊断、左下诊断、右上诊断和右下诊断的按钮。在我尝试添加按钮后,它开始出现错误。

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

class chessGame extends JFrame implements ActionListener {
    JPanel p1, p2, p3, p4, buttons;
    JButton up, down, left, right, lud, ldd, rud, rdd;
    chessGame() {
        Container c = getContentPane();

        p1 = new JPanel();
        p1.setBackground(Color.black);
        p1.setOpaque(true);
        p1.setLocation(200,200);
        p1.setPreferredSize(new Dimension(90, 90));
        p2 = new JPanel();
        p2.setBackground(Color.white);
        p2.setOpaque(true);
        p2.setLocation(250,200);
        p2.setPreferredSize(new Dimension(90, 90));
        p3 = new JPanel();
        p3.setBackground(Color.white);
        p3.setOpaque(true);
        p3.setLocation(300,300);
        p3.setPreferredSize(new Dimension(90, 90));
        p4 = new JPanel();
        p4.setBackground(Color.black);
        p4.setOpaque(true);
        p4.setLocation(550,500);
        p4.setPreferredSize(new Dimension(90, 90));

        up = new JButton("UP");
        down = new JButton("DOWN");
        left = new JButton("LEFT");
        right = new JButton("RIGHT");
        lud = new JButton("LEFT UP DIAG.");
        ldd = new JButton("LEFT DOWN DIAG.");
        rud = new JButton("RIGHT UP DIAG.");
        rdd = new JButton("RIGHT DOWN DIAG.");

        buttons.add(up);
        buttons.add(down);
        buttons.add(left);
        buttons.add(right);
        buttons.add(lud);
        buttons.add(ldd);
        buttons.add(rud);
        buttons.add(rdd);
        c.add(p1);
        c.add(p2);
        c.add(p3);
        c.add(p4);
        c.add(buttons);
        c.setLayout(new FlowLayout());
        setVisible(true);
        setSize(200,400);
        setResizable(false);

    }

    public void actionPerformed(ActionEvent e) {

    }

    public static void main(String[] args) {
        chessGame output = new chessGame();
    }
}

最佳答案

您忘记初始化按钮面板

因此,当执行 buttons.add(up); 时,它会抛出 NullPointerException

NullPointerException 通常很容易捕获。检查错误堆栈,我们将看到这是在哪个 channel 引发的,因此可以检测到尚未初始化的内容。

关于java - 我的国际象棋程序的线程 "main"java.lang.NullPointerException 中出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19492163/

相关文章:

java - 尝试使用 HTTPPost 和 HTTPGet 在 Android 中创建登录应用程序,但登录已停止

java - JTable - 如何强制用户只选择一行

json - 为什么我的 req.flash 不起作用?

python - 为什么我们应该使用 Exception 作为父类(super class),为什么不使用 BaseException

java - 在 lucene 中使用命中荧光笔

java - 如何将静态日志文件包含到 Android 应用程序中,该文件在关闭应用程序时不会被删除?

java - java 反射的调用方法在该方法发生更改时不会在运行时更新该方法

java - JLabel 在其上覆盖矩形时会失去对齐(又名时髦)

java - 如何使用数组创建密码和 ID 的 GUI java

objective-c - @try {} @catch {}之外的异常如何使用 "All Exceptions"断点?