如何在java中关闭自己的实例

时间:2014-02-13 04:46:25

标签: java oop instance

我一直在搞乱一些小型项目的想法,我将在接下来的几个月里为大学做些什么,我将不得不创建一个ATM程序,我遇到了一个障碍,只是想知道是否有人可以救命。在我的主类中,我创建了一个名为EnterPin的JFrame表单实例:

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

这为用户创建了一个输入其引脚的窗口,当按下输入按钮且引脚正确时(我有一个包含引脚的数组),它打开了ATM主屏幕的另一个JFrame形式。我想知道如何从内部关闭实例“EnterPin”,因为我不能做EnterPin.dispose();就像我以前一样。我尝试在EnterPin中创建一个名为“open”的布尔值,并在主屏幕窗口打开时将其更改为true,这样我就可以在main中使用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实例在后台保持不变。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

而不是JFrame使用JDialog,而modalityType设置为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内,在WindowAdapter上注册onWindowClosed并从那里处置等。