表示树视图中集合的JavaFXMongoDB
我试图在JavaFXTreeView中表示mongodb集合,下面是我的代码。 这个树视图必须有一个成分的名称作为父项,字段(变量)作为子项,它们的子项假设是这些变量的值表示树视图中集合的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
@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”
)。这个,我不能说,程序:)不会抛出任何异常或错误。树视图根本不更新。请不要这样使用。你完全改变了你的问题,把它编辑成了我对完全不同的问题的回答(顺便说一句,这个问题在本网站的其他地方得到了回答)。堆栈溢出的目的是创建对许多程序员有用的问题和答案的存储库。您的编辑使这对其他任何人都没有意义。