使用SwingWorker更新gui

时间:2014-04-08 13:44:10

标签: java swing swingworker

我正在尝试使用类生成并发送到progressBar的值来更新SwingWorker

在GUI中我有这个方法:

@Override
public void propertyChange(PropertyChangeEvent evt) {
   if (evt.getPropertyName().equals("progress")) {
      int progress = (Integer) evt.getNewValue();
      jProgressBar1.setValue(progress);
   }
}

我也是这样做的:

private void startWorker(){
     worker = WorkerUpdater.getInstance();    
     worker.addPropertyChangeListener(this);
     worker.execute();
}

SwingWorker中,我有一个方法"setProgress"来更新计算它的对象的变量值,然后我希望SwinWorker读取此值蚂蚁重绘{ {1}}。

我如何在progressBar方法中执行此操作?我有下一个方法但我希望每次doInBackground()中属性“进度”的值发生变化时更新progressBar

如果我按照这种方式运行它,但我想只在其他类修改了SwingWorker属性中的de值“progress”时才更新progressBar。我该怎么办?

SwingWorker

1 个答案:

答案 0 :(得分:0)

  

然后我希望SwinWorker读取此值蚂蚁重绘progressBar

这不是必要的 - SwingWorker保证每当调用PropertyChangeListener时将传递给setProgress的属性更改通知将发生在事件派发线程上,所以propertyChanged是更新进度条等组件的正确位置。