gpt4 book ai didi

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

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

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

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 进入休眠状态的代码是正确的。由于在事件调度线程(负责运行 GUI 的线程)上调用了 sleep,因此 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/56280540/

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