2013-05-30 83 views
0

我一直在想爲什麼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(); 
} 

回答

1

嘗試getContentPane.add()而不是添加。

我不確定它是否適用於這種情況,因爲我不知道你是如何定義gamePanel類的,但我希望它可以。

+0

我在擴展JFrame的名爲GameWindow的類中定義了gamePanel對象。所以gamePanel的定義方式如下:gamePanel =(JPanel)getContentPane(); – Nicholas

+0

我試過了,但問題依然存在。 – Nicholas

+1

我似乎想出了一個解決方案。我需要調整相對於圖像寬度和高度的JFrame對象的大小。感謝您的幫助,Peggy +1幫助! – Nicholas