【发布时间】:2014-11-14 00:43:17
【问题描述】:
我在 Java 中有一个 mainClass,它可以启动一个 GUI。我要求用户使用 JFileChooser 打开一个文件。我希望 main 等到用户完成选择文件,然后继续 main 中的其余代码。我如何使用线程来做到这一点?提前致谢。
这是骨架代码:
public class MainClass {
public static void main(String[] args) {
GUI gui= new GUI();
//wait for user input here
//Continue with code
System.out.println("User has picked a file");
}
}
GUI.java
public class GUI{
//User picks file using JFileChooser
JFileChooser chooseFile= new JFileChooser();
//Notify mainclass we're done with fiction to continue with code
}
【问题讨论】:
-
简短回答,不要。 Swing 不是线程安全的,这意味着您应该只在 Event Dispatching Thread 的上下文中更新 UI。有关模式详细信息,请参阅Concurrency in Swing。
JFileChooser显示一个模态对话框,这意味着在用户关闭它之前,代码将在该点阻塞... -
这个问题的措辞让我很困惑。您是否真的想使用单独的线程等到用户进行选择(不确定这将如何工作),或者您想在选择文件后使用单独的线程来做某事?这很微妙,但很重要。
标签: java multithreading swing jfilechooser