如何创建列并从JavaFx中的String列表中设置其名称。 JavaFx中的swingx中是否有类似public String getColumnName(int column)
和getColumnCount
的方法?
答案 0 :(得分:2)
不,JavaFX TreeTableView
的数据模型的管理方式与Swing中管理数据模型的方式不同。
数据模型由TreeTableView
类中的两个属性表示:root
和columns
。
root
是TreeItem<T>
(其中T
是TreeTableView
的每一行所代表的数据类型。它具有getChildren()
方法,用于树结构,扩展状态等中的子元素。
getColumns()
会返回一个ObservableList<TreeTableColumn<T,?>>
,它实际上是一个列列表。因此,列数由此列表的大小决定。 TreeTableColumn
具有text
属性,该属性封装了列的标题。因此,列名称由text
返回的列表元素的getColumns()
属性表示。
所以,为了回答你的问题,给出
TreeTableView<T> treeTable ;
(其中T
被某些实际类型替换)和
List<String> columnNames ;
您可以使用
填充树表的列for (String name : columnNames) {
TreeTableColumn<T,?> column = new TreeTableColumn<>(name);
treeTable.getColumns().add(column);
}
或者如果您更喜欢Java 8风格:
columnNames.stream().map(TreeTableColumn::new)
.forEach(treeTable.getColumns()::add);
但是,请注意,您几乎肯定需要在每列上设置单元格值工厂,并可能以其他方式进一步配置它。