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);