簡體   English   中英

按鈕布局問題-JFrame

[英]Button Layout Issues - JFrame

我想創建一個應用程序,該應用程序的中心是一個大面積的文本,底部是一排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)

例外情況:

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。 它會告訴您引起錯誤的是哪一行,然后您可以檢查該行上的變量以查看哪個為空,然后追溯到您的代碼中並查看原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM