我想通过单个任务更新多个JavaFX进度条。进度条在另一个控制器中创建,因此我将进度条放在一个hashmap中,以通过公共方法访问它们。我选择单个任务而不是每个进度条一个任务来减少Web服务调用的数量,因为每个调用将为我带来所有进度条所需的所有信息。我以前将progress属性绑定到任务进度属性,并且运行良好。 同样,更改为单个任务以减少Web服务调用让我对通过单个任务更新多个进度条的最佳方式感到好奇。
以下内容未更新进度条。我甚至尝试在Platform.runLater中执行以下操作,但没有成功。
// JOB PROGRESS CONTROLLER:
private HashMap<String,ProgressBar> jobProgressMap;
public void updateProgress(String aJobName, double aPercent)
{
jobProgressMap.get(aJobName).setProgress(aPercent);
}
//TASK IN A COMPLETELY DIFFERENT PARENT CONTROLLER
public Task updateProgressBarTask()
{
return new Task()
{
@Override
protected Object call() throws Exception
{
while (this.isCancelled() != true)
{
//Web Service call here
for each jobName/progress unit
{
//platform run later
Platform.runLater(new Runnable()
{
@Override public void run()
{
jobProgressController.updateProgress(jobName, percent);
}
...
编辑:我已将该代码移回控制器,在那里创建进度条并且它有效。但是,我仍然希望看到一个最有效的方法来回答一个不同控制器中的任务更新多个进度条的答案,而不是实例化进度条。