如何在 JavaFx TreeTableView 中创建列并设置名称
How to create column and set name in JavaFx TreeTableView
如何在 JavaFx 中创建列并从字符串列表中设置它们的名称。在 JavaFx 的 swingx 中是否有像 public String getColumnName(int column)
和 getColumnCount
这样的方法?
不,JavaFX TreeTableView
的数据模型与 Swing 中的数据模型管理方式不同。
数据模型由 TreeTableView
class 中的两个属性表示:root
和 columns
。
root
是一个 TreeItem<T>
(其中 T
是由 TreeTableView
的每一行表示的数据类型)。它有一个 getChildren()
方法用于 child 树结构中的元素,展开状态等
getColumns()
returns 一个 ObservableList<TreeTableColumn<T,?>>
,它本质上是一个列列表。所以列数由这个列表的大小决定。 TreeTableColumn
有一个 text
属性 封装了列的标题。因此,列名由 getColumns()
.
返回的列表元素的 text
属性表示
所以,为了回答你的问题,给定
TreeTableView<T> treeTable ;
(其中 T
被某些实际类型替换),并且
List<String> columnNames ;
您可以用
填充树 table 的列
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);
但是,请注意,您几乎肯定需要在每一列上设置一个单元格值工厂,并可能以其他方式进一步配置它。
如何在 JavaFx 中创建列并从字符串列表中设置它们的名称。在 JavaFx 的 swingx 中是否有像 public String getColumnName(int column)
和 getColumnCount
这样的方法?
不,JavaFX TreeTableView
的数据模型与 Swing 中的数据模型管理方式不同。
数据模型由 TreeTableView
class 中的两个属性表示:root
和 columns
。
root
是一个 TreeItem<T>
(其中 T
是由 TreeTableView
的每一行表示的数据类型)。它有一个 getChildren()
方法用于 child 树结构中的元素,展开状态等
getColumns()
returns 一个 ObservableList<TreeTableColumn<T,?>>
,它本质上是一个列列表。所以列数由这个列表的大小决定。 TreeTableColumn
有一个 text
属性 封装了列的标题。因此,列名由 getColumns()
.
text
属性表示
所以,为了回答你的问题,给定
TreeTableView<T> treeTable ;
(其中 T
被某些实际类型替换),并且
List<String> columnNames ;
您可以用
填充树 table 的列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);
但是,请注意,您几乎肯定需要在每一列上设置一个单元格值工厂,并可能以其他方式进一步配置它。