首页 > 解决方案 > 由于添加 JPanel 导致的 NullPointerException 错误

问题描述

我正在尝试让我的 GUI 布局正常工作。我可以保证我做的一切都是正确的,直到我不断收到这个错误:

Exception in thread "main" java.lang.NullPointerException
    at java.awt.Container.addImpl(Container.java:1097)
    at java.awt.Container.add(Container.java:417)
    at Calculator$ButtonPanel.<init>(Calculator.java:33)
    at Calculator.<init>(Calculator.java:23)
    at Calculator.main(Calculator.java:42)

我实际上已经尝试了所有方法,但它仍然给我这个错误。我做了类似下面的代码,我从来没有遇到过这个问题,这很奇怪。这是我的代码:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class Calculator extends JPanel implements ActionListener {
    JButton buttons[];
    JTextField displayarea;
    JFrame fr;
    Calculator() {
        fr = new JFrame("Calculator");
        fr.setLocationRelativeTo(null);
        fr.setDefaultCloseOperation(3);
        displayarea = new JTextField("0");
        displayarea.setHorizontalAlignment(SwingConstants.RIGHT);
        displayarea.setEditable(false);
        fr.add(displayarea, BorderLayout.NORTH);
        fr.add(new ButtonPanel(), BorderLayout.SOUTH);
        fr.pack();
        fr.setVisible(true);
    }

    class ButtonPanel extends JPanel {
        ButtonPanel() {
            setLayout(new java.awt.GridLayout(4, 4));
            buttons = new JButton[16];
            for (int i = 0; i < buttons.length; i++)
                add(buttons[i]);
        }
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub

    }

    public static void main(String[] args) {new Calculator();}

}

有什么建议么?

标签: javaswingjpanel

解决方案


推荐阅读