我想创建一个在中心有大面积文本的应用程序,底部有一排5个按钮。这是我的代码:
public TheDungeon()
{
setTitle("InsertGameNameHere");
setSize(750, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
setLocationRelativeTo(null);
gameScreen = new JLabel();
add(gameScreen, BorderLayout.CENTER);
add(buttonPanel, BorderLayout.SOUTH);
setVisible(true);
}
private void buildButtonPanel()
{
// Create a panel for the buttons.
buttonPanel = new JPanel();
// Create the buttons.
b1 = new JButton("Button 1");
b2 = new JButton("Button 2");
b3 = new JButton("Button 3");
b4 = new JButton("Button 4");
b5 = new JButton("Button 5");
// Add the buttons to the button panel.
buttonPanel.add(b1);
buttonPanel.add(b2);
buttonPanel.add(b3);
buttonPanel.add(b4);
buttonPanel.add(b5);
}
我的应用程序甚至不会运行。当我试图运行它时它会崩溃。我不确定是什么问题。 我的错误,如果有任何帮助:
Exception in thread "main" java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1086)
at java.awt.Container.add(Container.java:998)
at javax.swing.JFrame.addImpl(JFrame.java:562)
at java.awt.Container.add(Container.java:966)
at TheDungeon.<init>(TheDungeon.java:38)
at TheDungeon.main(TheDungeon.java:230)
答案 0 :(得分:2)
此例外:
Exception in thread "main" java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1086)
at java.awt.Container.add(Container.java:998)
at javax.swing.JFrame.addImpl(JFrame.java:562)
at java.awt.Container.add(Container.java:966)
at TheDungeon.<init>(TheDungeon.java:38)
at TheDungeon.main(TheDungeon.java:230)
意味着您正在尝试在TheDungeon类的第38行“取消引用”空变量:at TheDungeon.<init>(TheDungeon.java:38)
。
我猜这涉及buttonPanel。你有没有调用buildButtonPane() - 我在任何地方都看不到这个电话?如果不这样,buttonPanel JPanel将为null。
解决方案:在使用JPanel之前调用该方法。更好的是,让方法返回,然后再使用一个JPanel。
从这个问题中吸取教训不是具体的解决方案,而是如何阅读NullPointerException。它会告诉你导致错误的是哪一行,然后你可以检查该行上的变量以查看哪个为null,然后追溯到你的代码并查看原因。