Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
表示树视图中集合的JavaFXMongoDB_Java_Wpf_Mongodb_Javafx_Treeview - Fatal编程技术网

表示树视图中集合的JavaFXMongoDB

表示树视图中集合的JavaFXMongoDB,java,wpf,mongodb,javafx,treeview,Java,Wpf,Mongodb,Javafx,Treeview,我试图在JavaFXTreeView中表示mongodb集合,下面是我的代码。 这个树视图必须有一个成分的名称作为父项,字段(变量)作为子项,它们的子项假设是这些变量的值 @FXML protected TreeView treeView; public void editIngredient() { TreeItem root, name, measurement, calories; root = new TreeItem(); MongoDatabase d

我试图在JavaFXTreeView中表示mongodb集合,下面是我的代码。 这个树视图必须有一个成分的名称作为父项,字段(变量)作为子项,它们的子项假设是这些变量的值

@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
受保护的树景树景;
公营部门{
树根,名称,测量,卡路里;
根=新树项();
MongoDatabase db=MongoConnection.getMongoDatabase();
MongoCollection配料=db.getCollection(“配料”);
MongoCursor=components.find().iterator();
while(cursor.hasNext()){
//检索到一份文件
文档成分=cursor.next();
String ingredientName=component.getString(“名称”);
name=makeBranch(ingredientName,root);
//测量
度量=makeBranch(“度量”,名称);
makeBranch(component.getString(“measurement”)、measurement;
//卡路里
卡路里=makeBranch(“卡路里”,名称);
makeBranch(配料。获取双倍(“卡路里”),卡路里);
}
treeView=新的treeView(根);
treeView.setShowRoot(假);
}
//创建分支
私有TreeItem makeBranch(对象标题,TreeItem父级){
TreeItem=新的TreeItem(标题);
parent.getChildren().add(项);
退货项目;
}
以下是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>

但是树视图没有显示任何内容。
这是怎么回事?提前谢谢你


p、 请告诉我是否需要任何额外的信息,我还没有详细阅读代码,但是

parent.getChildren().add(parent);
尝试使树项(
父项
)成为其自身的子项。任何遍历树的尝试都将导致无限递归

你大概是说

parent.getChildren().add(item);

我已经更新了这个问题,谢谢。现在这真的是一个非常不同的问题。你发布的代码看起来很好,所以如果树没有显示错误,那么错误就在你没有发布的代码中(据我所知)。是的,它不再显示了。我有一个带有clear treeview的fxml文件,您可以看到treeview变量(即fxml文件中带有
fx:id=“treeview”
)。这个,我不能说,程序:)不会抛出任何异常或错误。树视图根本不更新。请不要这样使用。你完全改变了你的问题,把它编辑成了我对完全不同的问题的回答(顺便说一句,这个问题在本网站的其他地方得到了回答)。堆栈溢出的目的是创建对许多程序员有用的问题和答案的存储库。您的编辑使这对其他任何人都没有意义。