如何在JavaFX中从TableView获取TableHeaderRow?

时间:2016-08-02 11:15:45

标签: java javafx tableview

我看到了如何使用代码

在许多地方获取表头的示例
TableHeaderRow header = (TableHeaderRow) tableView.lookup("TableHeaderRow");

就像这里:How to prevent TableView from doing TableColumn re-order in javaFX 8?

但是这段代码会为我返回null

如何到达TableHeaderRow呢?

2 个答案:

答案 0 :(得分:5)

TableHeaderRowSkin创建,默认Skin在创建css之前不会创建。

您可以在将TableView添加到Scene后致电applyCss,并在此次通话后访问TableHeaderRow

或者在Skin中监听更改并在设置外观后执行该代码。

此外,我建议您使用TableViewSkinBase.getTableHeaderRow来检索标题行,而不是使用lookup(您仍然使用com.sun个包)。

tableView.skinProperty().addListener((a, b, newSkin) -> {
    TableHeaderRow headerRow = ((TableViewSkinBase) newSkin).getTableHeaderRow();
    ...
});

答案 1 :(得分:3)

查找( “TableHeaderRow”);工作,但它需要在表格渲染后调用,否则它将返回null