JDialog处理另一个窗口

时间:2012-04-28 17:53:30

标签: java swing jdialog

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

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

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

2 个答案:

答案 0 :(得分: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 );
  }
}

答案 1 :(得分:0)

使用JDialog类的dispose();方法