0

我目前正在开发一个带有“开始屏幕”框架的 java 游戏。在开始屏幕中,我有一个名为 buttonLogin 的按钮。按下 buttonLogin 后,会弹出一个由 LoginDialog 类启动的登录对话框,要求您输入用户名和密码。在对话框中有两个按钮,登录和取消。按下登录后,我的游戏将打开,但开始屏幕仍然可见。

我的问题是我不知道如何在 LoginDialog 类的 actionPerformed 方法中编写代码来关闭现有的 StartScreen 窗口。

请记住,我是在 LoginDialog 类而不是 StartScreen 类中编写的。

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 回答