java - 由于添加 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();}
}
有什么建议么?
解决方案
推荐阅读
- docker - 单个服务器上的多个子域。码头工人 + NGINX @ EC2
- python - TypeError:无法将 DatetimeIndex 转换为 dtype datetime64 [us]
- r - 获取按另一列分组的多列的频率计数
- google-sheets - 在列标题中搜索条件,如果条件满足相应列中非空单元格的计数
- haskell - Haskell 树:如何获得任何类型的叶子的二叉树?
- c# - 具有泛型类型的基类,它实现具有泛型类型的接口
- postgresql - 如何将listen_addresses从postgres中的localhost更改为*?
- sql - JOIN 子句的适当索引
- c# - 为什么在名为“添加值转换器”的列表中没有看到 IMultiValueConverter
- python - 如何计算一个单词在python列表中出现的次数