我有一些代码在 swingworker 中运行,因为它可能会导致 UI 阻塞,我想随着 swingworker 线程的进度修改 UI,所以我使用发布/进程来修改 JLabel,它可以工作,但是我想修改其他 UI 组件,这是通过 process 方法实现这一点的唯一线程安全方法吗?
我在运行它时曾经遇到过这个异常,我认为这是因为我在 doInBackground 方法中而不是在 process 方法中修改了 UI 组件?
java.lang.Boolean cannot be cast to javax.swing.Painter
最佳答案
SwingWorker
通过 set/getProgress
方法和 PropertyChangeListener
的支持提供进度功能。
您可以将 PropertyChangeListener
附加到 SwingWorker
并监视 progress
属性的更改,从而以以下方式更新 UI:你需要。
您可以在需要的地方使用 doInBackground
方法来setProgress
,以便更新进度状态。
关于Java Swingworker 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25109590/