0

私は現在、「スタート画面」フレームで開くJavaゲームに取り組んでいます。スタート画面に、buttonLoginというボタンがあります。buttonLoginを押すと、LoginDialogクラスによって起動されるログインダイアログがポップアップ表示され、ユーザー名とパスワードの入力を求められます。ダイアログには、ログインとキャンセルの2つのボタンがあります。ログインを押すとゲームが開きますが、スタート画面は表示されたままです。

私の問題は、LoginDialogクラスのactionPerformedメソッドにコードを記述して既存のStartScreenウィンドウを閉じる方法がわからないことです。

StartScreenクラスではなく、LoginDialogクラスで記述していることに注意してください。

4

2 に答える 2

1

達成したいことに応じて、setVisibleメソッドまたはメソッドを使用できますdispose

必要に応じて、StartScreenインスタンスをパラメータとしてLoginDialogクラスに渡すことができます。

LoginDialog別のアプローチは、クラスに「ログイン後」アクションのセッターを与えることです。次にStartScreen、はスタート画面を破棄するアクションを作成および設定できます。

編集

「ログイン後」のアクションをもう少し明確にするために、私は

public class LoginDialog{
  Action afterLoginAction;
  public void setAfterLoginAction( Action action ){
    afterLoginAction = action;
  }
  public void loginButtonPressed(){
    //do your stuff
    if ( afterLoginAction != null ){
      afterLoginAction.actionPerformed( new ActionEvent( ... ) );
    }
  }
}

public class StartScreen extends JWindow{
  public void showLoginScreen(){
    LoginDialog loginDialog = new LoginDialog();
    loginDialog.setAfterLoginAction( new Action(){
       @Override
       public void actionPerformed( ActionEvent e ){
           StartScreen.this.dispose();
       }
     } );
    loginDialog.setVisible( true );
  }
}
于 2012-04-28T17:59:41.823 に答える
0

dispose();JDialogクラスのメソッドを使用する

于 2012-04-28T18:00:46.497 に答える