gpt4 book ai didi

JavaFX ListView 性能问题

转载 作者:行者123 更新时间:2023-12-01 10:22:05 25 4
gpt4 key购买 nike

所以我有一个在 FXML 中定义的 ListView

<ListView fx:id="editRecipeList" layoutX="14.0" layoutY="14.0"
onMouseClicked="#recipeEditListViewOnMouseClicked" prefHeight="406.0"
prefWidth="242.0" />

以及相应的方法

@FXML
protected void recipeEditListViewOnMouseClicked() {
System.out.println("method started");
List<Document> recipesForEditingClick = mongoDatabase.getCollection("recipes")
.find(eq("name", "somethng");

//etc
}

该方法不是很大,但第一行代码System.out.println()仅在5秒后执行!但是在同一个程序中的其他ListView中ListView就没有速度问题吗?怎么会这样?如果需要任何其他信息,请评论

最佳答案

如果对数据库的调用需要相当长的时间,则需要将其放入后台线程。在 JavaFX 中执行此操作的最佳方法是将调用封装在 Task 中。 .

尝试:

@FXML
protected void recipeEditListViewOnMouseClicked() {
System.out.println("method started");

editRecipeList.setDisable(true);
Task<List<Document>> getRecipesTask = new Task<List<Document>>() {
@Override
public List<Document> call() throws Exception {
return mongoDatabase.getCollection("recipes")
.find(eq("name", "somethng");
}
};

getRecipesTask.setOnSucceeded(e -> {
editRecipeList.setDisable(false);
List<Document> recipesForEditingClick = getRecipesTask.getValue();
// process results here...

//etc
});

Thread thread = new Thread(getRecipesTask);
thread.setDaemon(true);
thread.start();
}

关于JavaFX ListView 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35527142/

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