Java 按钮布局问题-JFrame
我想创建一个应用程序,中间有一个大的文本区域,底部有一行5个按钮。这是我的密码:Java 按钮布局问题-JFrame,java,swing,jframe,jpanel,Java,Swing,Jframe,Jpanel,我想创建一个应用程序,中间有一个大的文本区域,底部有一行5个按钮。这是我的密码: public TheDungeon() { setTitle("InsertGameNameHere"); setSize(750, 600); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout()); setLocationRelativeTo(null); gameScreen = n
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)
线程“main”java.lang.NullPointerException中的异常
位于java.awt.Container.addImpl(Container.java:1086)
在java.awt.Container.add处(Container.java:998)
位于javax.swing.JFrame.addImpl(JFrame.java:562)
在java.awt.Container.add处(Container.java:966)
在TheDungeon.(TheDungeon.java:38)
在TheDungeon.main(TheDungeon.java:230)
此例外情况:
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)
线程“main”java.lang.NullPointerException中的异常
位于java.awt.Container.addImpl(Container.java:1086)
在java.awt.Container.add处(Container.java:998)
位于javax.swing.JFrame.addImpl(JFrame.java:562)
在java.awt.Container.add处(Container.java:966)
在TheDungeon.(TheDungeon.java:38)
在TheDungeon.main(TheDungeon.java:230)
表示您正试图在TheDungeon类的第38行“反引用”空变量:在TheDungeon.(TheDungeon.java:38)
我猜这涉及到按钮面板。您是否调用过buildButtonPane()--我在任何地方都没有看到此调用?如果不这样做,按钮面板JPanel将为空
解决方案:在使用JPanel之前调用该方法。更好的是,让方法返回一个JPanel,然后使用它
从这个问题中学到的教训不是具体的解决方案,而是如何读取NullPointerException。它会告诉你是哪一行导致了错误,然后你可以检查那一行的变量,看看哪一行是空的,然后追溯到你的代码,看看原因。天哪,我觉得自己像个傻瓜。成功了。现在,我将它设置为请求输入,当我添加输入时,所有按钮都聚集在右上角。有没有办法强迫按钮保持在原来的位置?@Xearta:从这个问题中学到的不是具体的解决方案,而是如何读取NullPointerException。它会告诉你是哪一行导致了错误,然后你可以检查那一行上的变量,看看哪个是空的,然后追溯到你的代码,看看为什么。谢谢你提供的信息。实际上我不知道如何阅读这些错误,但是谢谢你让我知道如何阅读。我在上面的评论中问了一个问题。有办法解决这个问题吗?还有,我如何让方法像你上面说的那样返回JPanel?@Xearta:我认为你的新问题没有足够的信息来回答。我们不知道您在代码方面做了什么导致程序行为发生这种变化。也许你应该问一个新问题,告诉我们你是怎么做的。