-1

次の状況があります。

Java Swingアプリケーションがあります。

GUI を実装するクラスには、次のようなクリック イベントを処理するイベント リスナーにバインドするLog Outという名前のボタンがあります。

JButton logOutButton = new JButton("LogOut");
header.add(logOutButton);

次に、GUI を実装する同じクラスで、内部クラスを使用してこのイベントを処理するActionListenerを宣言しました。

    logOutButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent event) {
            System.out.println("logOutButton clicked !!!");
            System.exit(0);
        }
    });

この時点で、logOutButtonボタンをクリックするとプログラムが終了します。代わりに、 LoginFormという特定のクラス (ログイン フォーム GUI を実装するクラス) を実行して終了し、再起動します。

これを行うにはどうすればよいですか?

TNX

アンドレア

4

1 に答える 1

1

close/open windowジャンキーなアプローチをする必要はまったくありません。Card Layoutを使用するだけです:

  1. Frame のコンテンツ ペインのレイアウトをカード レイアウトに設定します。

    getContentPane().setLayout(new CardLayout());
    
  2. 別のフォームのコンテンツ コードを別のパネル内に配置し、対応する名前でコンテンツ ペインに追加します。次に例を示します。

     getContetnPane().add(logInFormPanel, "logIn Form");
    
  3. これで、 を呼び出して、必要に応じていつでもカードが表示されるようにシミュレートできますCardLayout.show(Container parent, String name)。例えば:

     logOutButton.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent event) {
                  System.out.println("logOutButton clicked !!!");
              CardLayout cl = (CardLayout)(getContentPane().getLayout());
              cl.show(getContentPane(), "logIn Form");
    
        }
    });
    

私の別の回答からCardLayoutデモをチェックしてください。

于 2013-11-11T18:19:30.723 に答える