0

我如何从 JavaFx 中的字符串列表中创建列并设置它们的名称。在 JavaFx 中是否有类似public String getColumnName(int column)getColumnCountswingx 的方法?

4

1 回答 1

2

不,JavaFXTreeTableView的数据模型的管理方式与 Swing 中数据模型的管理方式不同。

数据模型由TreeTableView类中的两个属性表示:rootcolumns

root是 a 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);

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

于 2015-02-27T15:44:14.237 回答