2012-04-28 2 views
0

В настоящее время я работаю над java-игрой, которая открывается рамкой «Начало экрана». На стартовом экране у меня есть кнопка buttonLogin. Как только вы нажмете кнопку LogLogin, появится диалоговое окно входа в систему, запущенное классом LoginDialog, и попросит вас ввести имя пользователя и пароль. В диалоговом окне есть две кнопки, логин и отмена. Как только вы нажмете логин, моя игра откроется, но начальный экран все еще виден.JDialog убрал другое окно

Моя проблема заключается в том, что я не знаю, как написать код в методе actionPerformed моего класса LoginDialog, чтобы закрыть существующее окно StartScreen.

Имейте в виду, что я пишу в классе LoginDialog, а не в классе StartScreen.

ответ

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); 
    } 
} 
+0

В после входа в систему моего класса StartScreen, я пишу this.dispose(); а затем вызвал его в классе LoginDialog? – Anonymous181

+0

@ Anonymous181 Я уточнил свой ответ (но, к тому времени, вы уже приняли его, поэтому я полагаю, что это было не так уж и непонятно) – Robin

+0

Что принадлежит ...? – Anonymous181

0

использования dispose(); метод класса JDialog