JavaFX MongoDB 表示 TreeView 中的集合
JavaFX MongoDB representing collection in a TreeView
我尝试在 javafx 树视图中表示 mongodb 集合,这是我的代码。
这个 treeView 必须有一个成分名称作为 parent 和字段(变量)作为 children 并且它们的 children 假设是这些变量的值。
@FXML
protected TreeView treeView;
public void editIngredient() {
TreeItem root, name, measurement, calories;
root = new TreeItem();
MongoDatabase db = MongoConnection.getMongoDatabase();
MongoCollection<Document> ingredients = db.getCollection("ingredients");
MongoCursor<Document> cursor = ingredients.find().iterator();
while (cursor.hasNext()) {
// retrieved a doc
Document ingredient = cursor.next();
String ingredientName = ingredient.getString("name");
name = makeBranch(ingredientName, root);
// measurement
measurement = makeBranch("measurement", name);
makeBranch(ingredient.getString("measurement"), measurement);
//calories
calories = makeBranch("calories", name);
makeBranch(ingredient.getDouble("calories"), calories);
}
treeView = new TreeView(root);
treeView.setShowRoot(false);
}
// creating branches
private TreeItem makeBranch(Object title, TreeItem parent){
TreeItem item = new TreeItem(title);
parent.getChildren().add(item);
return item;
}
这里是 fxml 文件:
<center>
<Pane fx:id="mainPane" prefHeight="200.0" prefWidth="200.0" style="-fx-background-color: #3c3f41;" BorderPane.alignment="CENTER" >
<children>
<TreeView fx:id="treeView" layoutX="14.0" layoutY="14.0" prefHeight="348.0" prefWidth="200.0"/>
<TextArea layoutX="239.0" layoutY="14.0" prefHeight="205.0" prefWidth="342.0"/>
</children>
</Pane>
</center>
但是 treeView 没有显示任何东西..
有什么问题吗?提前致谢!
p.s。请告知是否需要任何其他信息
我没有详细阅读代码,但是
parent.getChildren().add(parent);
尝试使树项 (parent
) 成为其自身的子项。任何遍历树的尝试都将导致无限递归。
想必你的意思是
parent.getChildren().add(item);
我尝试在 javafx 树视图中表示 mongodb 集合,这是我的代码。 这个 treeView 必须有一个成分名称作为 parent 和字段(变量)作为 children 并且它们的 children 假设是这些变量的值。
@FXML
protected TreeView treeView;
public void editIngredient() {
TreeItem root, name, measurement, calories;
root = new TreeItem();
MongoDatabase db = MongoConnection.getMongoDatabase();
MongoCollection<Document> ingredients = db.getCollection("ingredients");
MongoCursor<Document> cursor = ingredients.find().iterator();
while (cursor.hasNext()) {
// retrieved a doc
Document ingredient = cursor.next();
String ingredientName = ingredient.getString("name");
name = makeBranch(ingredientName, root);
// measurement
measurement = makeBranch("measurement", name);
makeBranch(ingredient.getString("measurement"), measurement);
//calories
calories = makeBranch("calories", name);
makeBranch(ingredient.getDouble("calories"), calories);
}
treeView = new TreeView(root);
treeView.setShowRoot(false);
}
// creating branches
private TreeItem makeBranch(Object title, TreeItem parent){
TreeItem item = new TreeItem(title);
parent.getChildren().add(item);
return item;
}
这里是 fxml 文件:
<center>
<Pane fx:id="mainPane" prefHeight="200.0" prefWidth="200.0" style="-fx-background-color: #3c3f41;" BorderPane.alignment="CENTER" >
<children>
<TreeView fx:id="treeView" layoutX="14.0" layoutY="14.0" prefHeight="348.0" prefWidth="200.0"/>
<TextArea layoutX="239.0" layoutY="14.0" prefHeight="205.0" prefWidth="342.0"/>
</children>
</Pane>
</center>
但是 treeView 没有显示任何东西..
有什么问题吗?提前致谢!
p.s。请告知是否需要任何其他信息
我没有详细阅读代码,但是
parent.getChildren().add(parent);
尝试使树项 (parent
) 成为其自身的子项。任何遍历树的尝试都将导致无限递归。
想必你的意思是
parent.getChildren().add(item);