繁体   English   中英

Java程序在调用JFrame类时不会暂停用户输入

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM