当我切换到主选项卡上的不同选项卡时,我对显示进度条感兴趣。我的标签页上的标签在实际出现之前需要一段时间(5-10秒)。我希望在选项卡切换发生时出现进度条。
发布于 2013-12-31 02:16:14
在单独的Task中下载数据,其中T是封装所有数据的类型。将选项卡的内容设置为进度条;向任务注册一个onSucceeded处理程序,该处理程序将选项卡的内容设置为数据的显示,然后启动任务。
所以这看起来像这样:
final Tab tab = ... ;
final ProgressBar progressBar = new ProgressBar();
final Task<MyDataType> loadDataTask = new Task<MyDataType>() {
@Override
public MyDataType call() throws Exception {
// download data...
MyDataType result = ... ;
return result ;
}
};
tab.setContent(progressBar);
loadDataTask.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
@Override
public void handle(WorkerStateEvent event) {
MyDataType data = loadDataTask.getValue();
Node tabContent = ... ; // build tab content from data
tab.setContent(tabContent);
}
});
final Thread thread = new Thread(loadDataTask);
thread.setDaemon(true);
thread.start();
不要在任务的调用中更新属于场景图一部分的任何UI元素(...)方法。如果您可以测量数据下载的进度并希望在progressBar中显示它(而不是不确定的进度条),您可以这样做
progressBar.progressProperty().bind(loadDataTask.progressProperty());
然后在Task的call方法中,调用
updateProgress(amountDone, totalAmount);
https://stackoverflow.com/questions/20842862
复制相似问题