在等待线程完成时更新 Swing GUI
我有一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
最好使用 SwingWorker :
doInBackground() 方法执行完毕后,将调用 did()
方法。Better you use SwingWorker :
The
done()
method will be called after finishing the process ofdoInBackground
() method.如果您知道线程何时停止,请设置另一个布尔值,例如 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.