2012-04-28 85 views
0

我目前正在開發一個帶有「開始屏幕」框架的java遊戲。在啓動畫面中,我有一個名爲buttonLogin的按鈕。一旦你按下buttonLogin,一個LoginDialog類啓動的登錄對話框會彈出,詢問你輸入用戶名和密碼。在對話框中有兩個按鈕,登錄和取消。一旦你按下登錄,我的遊戲就會打開,但開始屏幕仍然可見。JDialog配置另一個窗口

我的問題是,我不知道如何在我的LoginDialog類的actionPerformed方法中編寫代碼來關閉現有的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 2012-04-28 18:21:50

+0

@ Anonymous181我澄清了我的答案(但同時你已經接受了,所以我認爲它不是很清楚) – Robin 2012-04-28 18:32:25

+0

什麼屬於...? – Anonymous181 2012-04-29 04:13:29

0

使用的JDialog類dispose();方法