gpt4 book ai didi

java - 使用线程等待用户选择文件

转载 作者:行者123 更新时间:2023-12-02 05:16:23 25 4
gpt4 key购买 nike

我有一个 Java 的 mainClass,它在 swing 中启动一个 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
}

最佳答案

好的,有两件事。

你不需要多个线程

事实是,您只需使用模态对话框即可实现等待用户选择文件的目标。其工作原理如下:

import javax.swing.*;

public class DialogTest {

public static void main(String[] args) {
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(null);
System.out.println("File chooser is now closed. File is: " +
chooser.getSelectedFile().toString());

}
}

在用户选择文件、单击取消或单击 X 之前,showOpenDialog 方法不会返回。请注意 getSelectedFile() 将返回如果用户取消,则为 null。

如果您确实需要线程(您知道,用于其他用途)

Swing 使用它所谓的 Event Dispatch Thread 。正如评论中提到的,Swing 不是线程安全的。这意味着对 Swing 组件的任何和所有方法调用都应该从 EDT 完成。您可以使用 SwingUtilities.invokeLater(Runnable) 安排代码在 EDT 上运行。您可以使用 Swing Worker 安排某些内容在后台线程中运行(使用线程池)。 。您的大部分代码可能只会在 EDT 上运行。可以使用 Swing Workers 将长时间运行的操作发送到后台线程。

关于java - 使用线程等待用户选择文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26921142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com