【发布时间】:2015-08-15 06:29:07
【问题描述】:
我正在尝试更新添加到 javafx 中的单独阶段的 ProgressBar。我在一个名为messagemerge() 的方法中定义了任务,并从那里调用了一个包含此任务的新线程。每次我尝试使用 messagemerge() 方法返回给 main 的任务时,它都会抛出一个 NullPointerException
这是我尝试过的
ProgressBarDialog progressBarDialog=new ProgressBarDialog();
Task<Void> task=messageMerge();
progressBarDialog.progressBar.progressProperty().bind(task.progressProperty());
上面的代码写在main里
方法messageMerge()定义如下
public Task<Void> messageMerge() throws Exception
{
task=new Task<Void>(){
protected Void call()throws Exception{
for(i=0;i<50;i++)
updateProgress(i,50);
}
return null;
};
Thread thread=new Thread(task);
thread.start();
return task;
}
progessBarDialog 是另一个定义如下的类
public class ProgressBarDialog {
public ProgressBar progressBar=null;
public ProgressBarDialog()
{
Stage progressDialog=new Stage();
progressDialog.initModality(Modality.APPLICATION_MODAL);
ProgressBar progressBar=new ProgressBar();
progressBar.setProgress(0);
BorderPane progressPane=new BorderPane();
progressPane.setCenter(progressBar);
progressDialog.setScene(new Scene(progressPane,500,100));
progressDialog.show();
}
NullPointerException 发生在我尝试从主访问 task.progressProperty() 时。有人可以帮我解决这个问题。任何帮助表示赞赏。
【问题讨论】: