[英]Java Program not Pausing for User Input when Calling JFrame Class
我最近修改了程序,却无法弄清楚为什么当我调用另一个使用JFrame的类时为什么它不等待用户输入(在该类中,用户从下拉菜单(ComboBox)中选择他/她的选择)。 值得注意的是,当我使用scanner.nextLine()函数时,该程序在转换为GUI之前运行良好。
当变量Airline具有未定义的值时,程序将进入While循环,直到用户从ComboBox中选择有效的响应,程序才会退出While循环。 问题在于,调用UndefinedLine类时,程序似乎无限循环并且不会停止供用户输入。 你们知道我该如何解决吗? 回到我使用scanner.nextLine功能时,它确实运行良好。 将程序修改为GUI后,此功能的等效功能是什么? 请在下面找到代码:
while (ExitLoop == false){
switch (Airline) { //Variable Airline
case "AA": // if Airline variable is "AA"
ExitLoop = true;
AA();
break;
case "UA":
ExitLoop = true;
UA();
break;
default:
UndefinedLine UDLobject = new UndefinedLine();
UDLobject.main(args); //Calls class UndefinedLine, which is a JFrame Message with a ComboBox, for which the user chooses the correct Airline and based on the user's response the variable Airline is assigned.
UDLobject.Airline= Airline;//Assigns value for variable Airline from Class UndefinedLine after user has selected the choice
break;
}
}
谢谢,您的帮助将不胜感激。
JFrame
永远不会是模态的。 这意味着,如果您创建一个新框架,该程序将不会等到该框架关闭后才能继续正常程序。 这将需要一个JDialog
。 调用另一个类提供的main
方法也不会创建新进程,因此该程序不会等待用户输入。 到目前为止,对于不可能的事情。
解决方案:
JDialog
。 此类是模态的。 这意味着在显示对话框之后,程序将等待直到对话框关闭。 wait()
和notify()
。 请注意,尽管在事件队列中调用wait()
将阻塞事件队列,因此很可能会阻塞程序流。 最好的解决方案是JDialog
,既不建议也不是必须自己实施锁定,除非您想尝试或遇到无法使用JDialog
解决的非常复杂的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.