我在许多地方看到了有关如何获取表头的示例

TableHeaderRow header = (TableHeaderRow) tableView.lookup("TableHeaderRow");

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

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

那么如何到达TableHeaderRow

最佳答案

TableHeaderRowSkin创建,并且默认的Skin在应用CSS之前不会创建。

applyCss添加到TableView后,可以调用 Scene ,并在此调用之后访问TableHeaderRow

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

此外,我建议您使用TableViewSkinBase.getTableHeaderRow来检索标题行,而不要使用lookup(无论如何您都在使用com.sun包)。

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

10-05 23:47