我有一个ObservableList,它包含Auftrag类型的对象。 对象Auftrag有一个属性NR,它可能在ObservableList中出现多次(重复),但其他属性内容不同。
我尝试使用它来显示根TreeItem下具有相同NR的所有条目。
现在我尝试在TreeTableView中显示数据,其中一堆Auftrag对象的第一个NR项字符串应该是根TreeItem,并且具有相同NR的以下项应该是子TreeItems。
这是问题所在。仅显示第一个项目,并显示所有其他项目。 下面是一些示例代码,首先创建TreeTableView
@FXML
private TreeTableView<Auftrag> abTreeTable;
现在创建一个列并设置root并添加列
TreeTableColumn<Auftrag,String> nrTreeCol = new TreeTableColumn<>("NR");
nrTreeCol.setMinWidth(80);
nrTreeCol.setCellValueFactory(
(TreeTableColumn.CellDataFeatures<Auftrag,String> param) ->new ReadOnlyObjectWrapper<String>(param.getValue().getValue().getNR()));
abTreeTable.setRoot(createTreeStructure(u));
abTreeTable.getColumns().add(nrTreeCol);
在这里我创建了结构
private TreeItem createTreeStructure(ObservableList<Auftrag> items){
int itemcount = items.size();
TreeItem<Auftrag> main = new TreeItem<Auftrag>(items.get(0));
for (int i =1; i < itemcount; i++) {
String ab = items.get(i).getNR();
ObservableList<Auftrag> same = getSameAuftrag(items,ab);
TreeItem<Auftrag> root = new TreeItem<Auftrag>(items.get(i));
same.forEach(item->{
TreeItem<Auftrag> child = new TreeItem<Auftrag>(item);
root.getChildren().add(child);
});
main.getChildren().add(root);
}
return main;
此处查找相同的NR已完成,但似乎无法正常工作
private ObservableList<Auftrag> getSameAuftrag(ObservableList<Auftrag> items, String ab){
ObservableList<Auftrag> same = FXCollections.observableArrayList();
for (int i = 0; i < items.size(); i++) {
if (items.get(i).getNR() == ab){
same.add(items.get(i));
}
}
return same;
}
它看起来像这个
在这里你看到getSameAuftrag函数似乎无法正常工作,因为有五个NR应该在根节点中具有相同的字符串...
我期望的是一个根行(TreeItem),其中NR作为标题,如果我展开它应该显示所有具有相同NR的子TreeItem ...
希望有人可以提供帮助