繁体   English   中英

等待线程完成时更新Swing GUI

[英]Updating Swing GUI while waiting for a thread to finish

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

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

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

有什么办法可以更新GUI或使应用程序像已禁用一样,同时可以确定线程停止的延迟。

谢谢

更好地使用SwingWorker

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

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

done() doInBackground ()方法的过程后,将调用doInBackground ()方法。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM