首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >针对TabPane的JavaFX ProgressBar

针对TabPane的JavaFX ProgressBar
EN

Stack Overflow用户
提问于 2013-12-30 23:52:53
回答 1查看 565关注 0票数 1

当我切换到主选项卡上的不同选项卡时,我对显示进度条感兴趣。我的标签页上的标签在实际出现之前需要一段时间(5-10秒)。我希望在选项卡切换发生时出现进度条。

EN

回答 1

Stack Overflow用户

发布于 2013-12-31 02:16:14

在单独的Task中下载数据,其中T是封装所有数据的类型。将选项卡的内容设置为进度条;向任务注册一个onSucceeded处理程序,该处理程序将选项卡的内容设置为数据的显示,然后启动任务。

所以这看起来像这样:

代码语言:javascript
运行
复制
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中显示它(而不是不确定的进度条),您可以这样做

代码语言:javascript
运行
复制
progressBar.progressProperty().bind(loadDataTask.progressProperty());

然后在Task的call方法中,调用

代码语言:javascript
运行
复制
updateProgress(amountDone, totalAmount);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20842862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档