2

私は以下を使用してボタンクリックを新規に切り替えていますJPanel

JPanel newP = new ProjectPage();
contentPane.revalidate(); 
setContentPane(newP);

どこProjectPageにありますか:

 public class ProjectPage extends JPanel

しかし、新しいProjectPageクラスでボタンを作成して、元のパネルに戻すにはどうすればよいですか?

私のメイン画面クラスは次のように宣言しました:

public class MainScreen extends JFrame 
4

2 に答える 2

4

ここに示すように、 CardLayoutを使用します。

ゲームビュー ハイスコ​​アビュー

詳細については、 CardLayoutの使用方法を参照してください。

より一般的なアドバイスとして、JPanelまたはJFrameを拡張するのではなく、単にそれらへの参照を保持し、使用ごとに必要に応じてそれらを構築します。この問題の一部はスコープにあるようです-関連するパネルは呼び出し元のコードに「表示」されません。それらへの参照をメインクラスに保持することは、それに対する簡単な解決策です。

于 2012-07-03T08:19:10.120 に答える
2

元の JPanel に戻したい場合は、フィールドを追加してクラスのどこかに参照を保持する必要があります。private JPanel oldPanel;

新しいパネルを作成するときは、古いパネルを取得して、次のようにそのフィールドに保存します。

oldPanel = getContentPane();
JPanel newP = new ProjectPage();
contentPane.revalidate(); 
setContentPane(newP);

元のパネルに戻りたい場合は、次のようにします。

setContentPane(oldPanel);
于 2012-07-03T08:17:30.637 に答える