[英]How can I update a JavaFX progress bar from RxJava Flowable?
I have the following reactive code:我有以下反应代码:
//JavaFX ProgressBar
ProgressBar progressBar = new ProgressBar(0);
Flowable
.fromIterable(itemList)
.parallel()
.runOn(Schedulers.io())
.map(item -> {
Thread.sleep(1000); //imitate expensive computation
return item.getCode();
})
.sequential()
.observeOn(JavaFxScheduler.platform())
.subscribe(result -> {
System.out.println(result);
});
I want to update the ProgressBar on every iteration of the flowable.我想在 Flowable 的每次迭代中更新 ProgressBar。
I thought of something like this:我想到了这样的事情:
int i= 0; //increment on every iteration
int total = itemList.size(); //total number if items in List
progressBar.setProgress((float)(i / total));
However, I could not figure out how to increment the variable i
at the end of every iteration.但是,我无法弄清楚如何在每次迭代结束时增加变量
i
。
Just increment i in the subscription只需在订阅中增加 i
AtomicInteger i = new AtomicInteger(0);
Flowable
.fromIterable(itemList)
.parallel()
.runOn(Schedulers.io())
.map(item -> {
Thread.sleep(1000); //imitate expensive computation
return item.getCode();
})
.sequential()
.observeOn(JavaFxScheduler.platform())
.subscribe(result -> {
i.increment();
progressBar.setProgress((float)(i.get()/itemList.size))
System.out.println(result);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.