我一直在想爲什麼gameControlArt(這是一個JPanel對象)不會出現在也是JPanel對象的gamePanel上。添加JPanel不顯示Java
我正在創建的東西:用戶在運行該程序時看到mainMenuArt(具有包含藝術作品的JLabel的JPanel對象)添加到gamePanel。當用戶按下某個鍵時,mainMenuArt將被刪除。 gameControlArt出現。用戶再次按下一個鍵,gameControlArt被移除,畫布對象被添加到gamePanel對象。
取而代之的是:mainMenuArt出現在gamePanel上,這很好。問題出在移除mainMenuArt之後,gameControlArt(這是另一個JPanel對象,它具有包含插圖的JLabel對象)不會被添加到gamePanel(它是一個JPanel對象)。相反,它會在JPanel對象沒有添加組件時顯示默認的灰色區域。當用戶按下某個鍵時,畫布將顯示在gamePanel上。
所以總結一下問題是:gameControlArt根本不會顯示在遊戲面板上。
我嘗試updateUI(),重新驗證和repaint()但這些方法調用不起作用的一些奇怪的原因。
public class GameWindow extends JFrame implements KeyListener{
gamePanel = (JPanel) getContentPane();
gamePanel.remove(mainMenuArt);
gameControlArt = new GameControlArt();
gamePanel.add(gameControlArt);
GameWindow.getGamePanel().revalidate();
}
public class extends Canvas implements KeyListener
{
GameWindow.getGamePanel().add(this);
GameWindow.getGamePanel().revalidate();
}
我在擴展JFrame的名爲GameWindow的類中定義了gamePanel對象。所以gamePanel的定義方式如下:gamePanel =(JPanel)getContentPane(); – Nicholas
我試過了,但問題依然存在。 – Nicholas
我似乎想出了一個解決方案。我需要調整相對於圖像寬度和高度的JFrame對象的大小。感謝您的幫助,Peggy +1幫助! – Nicholas