gpt4 book ai didi

java thread.sleep 也让 swing ui 进入休眠状态

转载 作者:行者123 更新时间:2023-11-29 08:54:31 25 4
gpt4 key购买 nike

我正在创建一个简单的测试应用程序,它通过 JFileChooser 使用 thread.sleep() 每小时对所选目录运行一次检查。但是当我选择目录并且方法运行时,ui 面板变灰并且 Swing 位消失。该线程似乎使 ui 及其调用方法进入 hibernate 状态。

if (option == JFileChooser.APPROVE_OPTION) {
selectedDirectory = chooser.getSelectedFiles();
try {
while (true) {
runCheck(selectedDirectory);
Thread.sleep(1000*5);//1000 is 1 second
}
} catch (InterruptedException e1) {
Thread.currentThread().interrupt();
e1.printStackTrace();
}
}

我正在寻找解决此问题的方法,以便我可以打印在 ui .setText(result) 中运行的检查结果

最佳答案

关于让 UI hibernate 的代码,您是正确的。由于 sleep 是在事件调度线程(负责运行 gui 的线程)上调用的,因此 UI 停止处理事件并“进入休眠状态”。

我想你想要的是 javax.swing.Timer .

Timer t = new Timer(1000 * 5, new ActionListener() {
public void actionPerformed(ActionEvent e) {
// do your reoccuring task
}
});

这将导致您的重复任务在 EDT 之外执行,因此不会使您的用户界面无响应。

关于java thread.sleep 也让 swing ui 进入休眠状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20934256/

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