0

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();
}
4

1 に答える 1

1

getContentPane.add()追加する代わりに試してください。

gamePanel クラスをどのように定義したかがわからないため、この場合に機能するかどうかはわかりませんが、機能することを願っています。

于 2013-05-30T16:21:15.843 に答える