Java Swingworker 输出

标签 java multithreading swing

我有一些代码在 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,以便更新进度状态。

看看Issues with SwingWorker and JProgressBar举个例子

关于Java Swingworker 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25109590/

相关文章:

java - 为什么这个先行断言在 Java 中不起作用?

java - 串口双向通信 Java Comm API

c# - 为什么锁对象必须是静态的?

Java 线程意外行为

java - 当单元格类型不是字符串时,JTable 中的单元格不可编辑?

java - 为什么在空引用上调用方法可以成功编译?

外部共享资源(智能卡)的 Java 并发模式

Java Swing - JLabel 中出现空格

java - 在 java 中重新排序 JTabbedPane 中的选项卡

List 和 List<Object> 之间的 Java 区别