0

セットアップ アプリケーションを作成しています。アプリケーションを初期化するメイン クラスがあります。これには、JFrame と 2 つの JPanel 変数、つまり panelX と panelY があります。このメイン クラスは JFrame を作成し、それに panelX と panelY を追加します。これらのパネルでは、panelY には 3 つの JButton (Back、Next、Quit) があります。panelY は、プロセス全体でそのまま残ります。次へおよび戻るボタンのクリック イベントのように、panelX がその内容を変更する場所。

他にもいくつかのクラスがあります。これらのクラスには、別のコンポーネントが追加された JPanel を返すメソッドがあります。

私のコードでは、次のボタンと戻るボタンをクリックすると、次の手順が発生します

1) removeAll() メソッドを呼び出して、panelX のすべてのコンポーネントを削除します

2) panelX は null に割り当てられます。

3) 上記のクラスのそれぞれのメソッドが呼び出され、JPanel が返されます。この返された JPanel は panelX に割り当てられます。

元。

panelX.removeAll();    
panelX=null;    
panelX=getNextPanel();

4) 上記のステップの後; repaint(); を呼び出します。panelX でメソッドを検証します。

元。

panelX.repaint();
panelX.validate();

問題は、次のボタンを押すと適切なパネルが表示されますが、[次の] ボタンを 2 回クリックし、マウス ポインターを panelX に移動した後に [戻る] ボタンを押すと、以前に割り当てられたパネルのコンポーネントも表示されます。

だから、私がこの問題を解決する方法を友達に教えてください.

ありがとう!

4

2 に答える 2

2

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

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

于 2011-06-24T08:24:31.223 に答える
0

panelXnull に設定したり、変数を新しい JPanel に再割り当てしたりしないでください。

代わりに、 をpanelX呼び出した後にコンポーネントを追加することで、既存の を再利用できますremoveAll

于 2011-06-24T08:03:47.073 に答える