我在许多地方看到了有关如何获取表头的示例
TableHeaderRow header = (TableHeaderRow) tableView.lookup("TableHeaderRow");
就像这里:How to prevent TableView from doing TableColumn re-order in javaFX 8?
但是这段代码为我返回了
null
。那么如何到达
TableHeaderRow
? 最佳答案
TableHeaderRow
由Skin
创建,并且默认的Skin
在应用CSS之前不会创建。
将applyCss
添加到TableView
后,可以调用 Scene
,并在此调用之后访问TableHeaderRow
。
或者,监听Skin
中的更改,并在设置外观后执行该代码。
此外,我建议您使用TableViewSkinBase.getTableHeaderRow
来检索标题行,而不要使用lookup
(无论如何您都在使用com.sun
包)。
tableView.skinProperty().addListener((a, b, newSkin) -> {
TableHeaderRow headerRow = ((TableViewSkinBase) newSkin).getTableHeaderRow();
...
});