不使用任务更新JavaFX ProgressBar?

时间:2015-04-18 21:40:44

标签: java multithreading javafx progress-bar javafx-8

所以我有一个线程在该线程中运行,它更新了我的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。

0 个答案:

没有答案