我如何从 JavaFx 中的字符串列表中创建列并设置它们的名称。在 JavaFx 中是否有类似public String getColumnName(int column) 和getColumnCountswingx 的方法?
1 回答
2
不,JavaFXTreeTableView的数据模型的管理方式与 Swing 中数据模型的管理方式不同。
数据模型由TreeTableView类中的两个属性表示:root和columns。
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 回答