我一直在搞乱一些小型项目的想法,我将在接下来的几个月里为大学做些什么,我将不得不创建一个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实例在后台保持不变。 任何帮助表示赞赏。
答案 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
并从那里处置等。