在等待线程完成时更新 Swing GUI

发布于 2024-12-21 01:08:55 字数 316 浏览 0 评论 0原文

我有一个 Swing 应用程序,其中运行一个 Thread 类来执行特定的作业。 我需要在某个时刻停止正在运行的线程。所以我在线程中放置了一个布尔值,当我将其设置为 true 时,线程将停止。

问题是线程需要一些时间才能完成它正在执行的内部工作。

我需要阻止用户在 GUI 上执行任何操作,直到线程完成。 我尝试了类似 setEnabled(false) 的方法,但应用程序正在冻结,并且在线程停止之前 GUI 不会更改。 我还尝试在另一个线程中更新 GUI,但这也不起作用。

有什么方法可以更新 GUI 或使应用程序在停止线程的延迟完成时被禁用。

谢谢

I have a swing application with a Thread class running to do a specific Job.
I need in a certain moment to stop the running thread. so i put a boolean inside the thread and when i set it to true the thread will be stopped.

The problem is that the thread take some time to finish the inside job it is doing.

I need to prevent the user to do any action on the GUI until the thread is finished.
I tried something like setEnabled(false) but the application is freezing and GUI is not changed until the thread is stopped.
I tried also to update the GUI in another thread but this is also does not work.

Is there any way to update the GUI or make the application like disabled while the delay of the stopped the thread is finsihed.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

木森分化 2024-12-28 01:08:55

最好使用 SwingWorker

button.setEnabled(false);
...    
@Override
protected String doInBackground() throws Exception {
    // process related code
    return "";
}

@Override
protected void done() {
    button.setEnabled(true);
}

doInBackground() 方法执行完毕后,将调用 did() 方法。

Better you use SwingWorker :

button.setEnabled(false);
...    
@Override
protected String doInBackground() throws Exception {
    // process related code
    return "";
}

@Override
protected void done() {
    button.setEnabled(true);
}

The done() method will be called after finishing the process of doInBackground() method.

流绪微梦 2024-12-28 01:08:55

如果您知道线程何时停止,请设置另一个布尔值,例如 thread_stopped = true;
在任何操作事件之前检查 thread_stopped 是否为 true 然后继续。

If you know when your thread stops set another boolean for e.g thread_stopped = true;
And before any action event check if the thread_stopped is true then proceed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文