所以我有一个线程在该线程中运行,它更新了我的textArea,它应该更新我的progressBar。我希望能够通过调用progressBar.setProgress(progress / totalProgress)来更新progressBar;无需将任务绑定到它。这甚至可能吗?
一些示例/伪代码,因为我实际上无法上传正在运行的代码......
private int progress;
private ProgressBar progressBar;
private int totalProgress;
public void init() {
progress = 0;
totalProgress = 10; // some max progress number
progressBar.setProgress(progress/totalProgress);
new Thread(new Runnable() {
public void run() {
try {
startThread();
} catch (Exception ex) {
System.out.println(ex);
}
}
}).start();
}
public void startThread() {
for(int i = 0; i < someSize; i++) {
textArea.append("some new message);
progress++;
progressBar.setProgress(progress/totalProgress);
}
}
当我在for循环中打印progress和progressBar.getProgress时,我可以看到它递增并实际上“更新”但我无法让progressBar UI更新。
类似于Swing如何拥有JProgressBar,您可以通过progressBar.setValue(counter)更新它;在一个已经在做其他事情的线程中,我希望能够在一个同时运行其他东西的线程中更新ProgressBar for FX。