如何在 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 中的两个属性表示:rootcolumns

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);

但是,请注意,您几乎肯定需要在每一列上设置一个单元格值工厂,并可能以其他方式进一步配置它。