gpt4 book ai didi

JavaFX:加载数据任务与进度条结合

转载 作者:行者123 更新时间:2023-12-02 13:17:13 26 4
gpt4 key购买 nike

对于我的 JavaFX 应用程序,我想实现一个加载任务,将其与进度条结合起来。

我有一个如下所示的演示模型:

public class PresentationModel {

private final ObservableList<Country> countries = FXCollections.observableArrayList();
// Wrap the ObservableList in a FilteredList (initially display all data)
private final FilteredList<Country> filteredCountries = new FilteredList<>(countries, c -> true);
// Wrap the FilteredList in a SortedList (because FilteredList is unmodifiable)
private final SortedList<Country> sortedCountries = new SortedList<>(filteredCountries);

private Task<ObservableList<Country>> task = new LoadTask();

public PresentationModel() {
new Thread(task).start();
}
}

还有一个加载数据的任务:

public class LoadTask extends Task<ObservableList<Country>> {

@Override
protected ObservableList<Country> call() throws Exception {
for (int i = 0; i < 1000; i++) {
updateProgress(i, 1000);
Thread.sleep(5);
}

ObservableList<Country> countries = FXCollections.observableArrayList();
countries.addAll(readFromFile());

return countries;
}
}

这允许我绑定(bind) ProgressIndicator pi任务的进度属性:

pi.progressProperty().bind(model.getTask().progressProperty());

现在我需要从演示模型中的任务加载数据,以便我可以将元素添加到表中:table = new TableView<>(model.getSortedCountries());

如何从加载任务访问演示模型中的数据?

最佳答案

Task 在任务成功时调用 onSucceeded 处理程序。 value 属性具有 call 方法返回的实例。

task.setOnSucceeded(event -> {
ObservableList<Country> countries = (ObservableList<Country>)event.getSource().getValue();
// do something
});

Task 还具有在其 call 方法中抛出 Exception 时调用的 OnFailed 处理程序。您可以在这里处理异常。 (或捕获 call 方法中的所有异常。)

task.setOnFailed(event -> {
Throwable e = event.getSource().getException();
if (e instanceof IOException) {
// handle exception here
}
});

关于JavaFX:加载数据任务与进度条结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43733986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com