2012-04-20 3 views
1

私は一連のパネルを作成するためにカードレイアウトを使用しています。他のパネルの選択に応じて、カードレイアウトのJPanelコンテンツをリセットまたは再ロード

私はJFrameクラスを作成しました。そしてこのフレームクラスのインスタンスに、取得されたcontentPaneとCardLayoutを設定します。すべてのパネルをこのcontentPaneに追加しました。

public class JFrameClass1234 extends javax.swing.JFrame { 
public static JFrameClass1234 jFrameInstance1234; 
public static JPanelFirstScreen jPanelFirstScreen; 
public static JPanelSecondScreen jPanelSecondScreen; 
public static JPanelThirdScreen jPanelThirdScreen; 
public static JPanelFourthScreen jPanelFourthScreen; 
public static JPanelFifthScreen jPanelFifthScreen; 

public static void main(String args[]) { 

java.awt.EventQueue.invokeLater(new Runnable() { 

     public void run() { 

      jFrameInstance1234 = new JFrameClass1234(); 

      jPanelFirstScreen = new JPanelFirstScreen(); 
      jPanelSecondScreen = new JPanelSecondScreen(); 
      jPanelThirdScreen = new JPanelThirdScreen(); 
      jPanelFourthScreen = new JPanelFourthScreen(); 
      jPanelFifthScreen = new JPanelFifthScreen(); 

      final Container pane = jFrameInstance1234.getContentPane(); 
      pane.add(jPanelFirstScreen,card1); 
      pane.add(jPanelSecondScreen,card2); 
      pane.add(jPanelThirdScreen,card3); 
      pane.add(jPanelFourthScreen,card4); 
      pane.add(jPanelFifthScreen,card5); 
      CardLayout cl = (CardLayout)(pane.getLayout()); 
      cl.show(pane, card1); 
      jFrameInstance1234.setVisible(true); 
      } 
     }); 
    } 

}//end of class 

さて、私は各パネルの「次へ」または「戻る」ボタンのアクションlistners内部に以下のメソッドを呼び出すことにより、パネル間を移動することができるよ:

//For going back to previous panel 
private void gotoPreviousPanel() { 
final Container pane = JFrameClass1234.jFrameInstance1234.getContentPane(); 
CardLayout cl = (CardLayout) (pane.getLayout()); 
cl.show(pane, JFrameClass1234.card1); 
JFrameClass1234.JFrameinstance1234.setVisible(true); 
} 

//For going to next panel 
private void gotoNextPanel() { 
    final Container pane = JFrameClass1234.jFrameInstance1234 
      .getContentPane(); 
    CardLayout cl = (CardLayout) (pane.getLayout()); 
    cl.show(pane, JFrameClass1234.card3); 
    JFrameClass1234.jFrameInstance1234.setVisible(true); 
} 

をしかし、私は間を移動するとき値が保持されています(リセットまたは再ロードされていません)。パネル間で前後に移動するときにパネルをリセットまたは再ロードしたい または、最初のパネルで選択された「ComboBox」オプションに応じて、2番目のパネルの「テキストボックス」が表示されたときに必ず再読み込みする必要があります。誰かがこれを達成するために私を助けることができますか?

理想的なデザイン(ロジック)でなければならないものこのような状況には私は従わなければなりませんか?私の状況に特有の文書はありますか?カードレイアウトを使用している方法は正しいですか?そうでなければ私は正しいデザインをお勧めします。

おかげで、 チャンドラ

答えて

0

あなたは(あなたが持っているさまざまなUIパネルからの)性質を持つ1つのシングルトンクラスを宣言することができます。また、インターフェイスをupdateUIFields()メソッドで宣言し、すべてのパネルにこのインターフェイスを実装させます。 1つのパネル(現在表示されているパネル)のフィールドを更新するときに、シングルトンオブジェクトを更新します。カード内の別のパネルに切り替える前に、シングルトンオブジェクトに格納されている選択/値に基づいてリロードまたはリセットしてください。インタフェースメソッドでこのロジックを実装します。必要に応じて、Singletonオブジェクトの値をリセットします。

0

更新中のJPanelコンポネントにancestorListener()を追加してみてください。

関連する問題