2014-02-13 35 views
0

我一直在爲一個迷你項目提供一些想法,我將在未來幾個月爲大學做些工作,在這些項目中,我將不得不創建一個ATM程序,遇到障礙只是想知道是否有人可以提供幫助。在我的主類我創建一個名爲EnterPin一個JFrame窗體的實例:如何在java中關閉自己的一個實例

public class Main { 
    public static void main(String args[]){ 
     EnteringPin EnterPin = new EnteringPin(); 
     EnterPin.setVisible(true); 
    } 
} 

這爲用戶創建一個窗口中輸入自己的腳,當按下回車鍵,銷是正確的(我有一個數組包含引腳),它打開了ATM主屏幕的另一個JFrame格式。我想知道如何從本身內部關閉實例「EnterPin」,因爲我無法執行EnterPin.dispose();就像我習慣的那樣。我試圖創建一個名爲內EnterPin一個布爾「開放」和主屏幕窗口打開時,將其更改爲true,這樣我可以使用在主while循環:

public class Main { 
    public static void main(String args[]){ 
     EnteringPin EnterPin = new EnteringPin(); 
     EnterPin.setVisible(true); 
     while (EnterPin.open == false){ 
     } 
     EnterPin.dispose(); 
    } 
} 

這工作,當我把一個while循環中的斷點和調試該程序,但是當我簡單地運行它時,EnterPin實例保持在後臺。 任何幫助表示讚賞。

回答

0

而不是使用JFrame使用JDialogmodalityType設置爲APPLICATION_MODAL。顯示時,它將阻止打開它的線程關閉。將任何結果數據存儲在類本身中。

public class EnteringPin extends JDialog { 
    // ... 
} 

public static void main(String args[]){ 
    EnteringPin EnterPin = new EnteringPin(); 
    EnterPin.setModalityType(ModalityType.APPLICATION_MODAL); 
    EnterPin.setVisible(true); 

    DataType data = EnterPin.data; // Get data 
    // ... 
} 

EnteringPin,從那裏註冊的onWindowClosed一個WindowAdapter和處置等。

相關問題