我从事一个项目,其中有一个用于 GUI 的类,另一个用于计算的类。
我想检索一些值,例如类计算的主 for 循环的增量 (i),以便相应地更新 GUI 类中的 JProgressBar。
我尝试过使用 SwingWorker 来做到这一点,但我有点迷失了。
此外,我无法在 main 中运行执行方法,有什么建议吗?
提前致谢, 麻醉
最佳答案
实现此目的的一种方法是将属性更改监听器从包含 JProgressBar 的类中附加到 SwingWorker 线程,如下所示:
worker.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent arg0) {
if (arg0.getPropertyName().equals("progress")) {
bar.setValue(Integer.parseInt(arg0.getNewValue().toString());
}
}
});
然后,当工作线程的值达到一定的间隔时,您将触发 PropertyChangeEvent 来更新进度条。
SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() {
public Void doInBackground() {
for (int i=0; i<100; i++) {
// Do something
firePropertyChange("progress", i-1, i);
}
return null;
}
public void done() {
try {
get();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}
关于java - 从外部类检索值以便相应地显示 JProgressBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28579733/