JPanelオブジェクトでもあるgamePanelにgameControlArt(JPanelオブジェクト)が表示されない理由を理解しようとしています。
私が作成しようとしているもの: ユーザーは、プログラムの実行時に、gamePanel に追加された mainMenuArt (アートワークを含む JLabel を持つ JPanel オブジェクト) を確認します。ユーザーがキーを押すと、mainMenuArt が削除されます。gameControlArt が表示されます。ユーザーがもう一度キーを押すと、gameControlArt が削除され、キャンバス オブジェクトが gamePanel オブジェクトに追加されます。
代わりに何が起こるか: mainMenuArt が gamePanel に表示されますが、これは良いことです。問題は、mainMenuArt を削除した後、gameControlArt (アートワークを含む JLabel オブジェクトを持つ別の JPanel オブジェクト) が gamePanel (JPanel オブジェクト) に追加されないことにあります。代わりに、JPanel オブジェクトにコンポーネントが追加されていない場合、デフォルトの灰色の領域が表示されます。ユーザーがキーを押すと、gamePanel にキャンバスが表示されます。
問題を要約すると、gameControlArt は、gamePanel で想定されているようにまったく表示されません。
updateUI()、revalidate、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();
}