如何在JavaFX中从TableView获取TableHeaderRow?

Dim*_*ims 5 java javafx tableview

我看到了如何使用代码在许多地方获取表头的示例

TableHeaderRow header = (TableHeaderRow) tableView.lookup("TableHeaderRow");
Run Code Online (Sandbox Code Playgroud)

像这里:如何防止TableView在javaFX 8中执行TableColumn重新排序?

但是这段代码null对我来说很重要.

怎么到达TableHeaderRow呢?

fab*_*ian 5

TableHeaderRow被创建Skin,默认Skin是没有创建,直到应用CSS.

您可以applyCss在添加TableView到a 之后调用SceneTableHeaderRow在此调用之后访问.

或者在Skin设置外观后监听并执行该代码.

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

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

  • 如果我没记错的话 getTableHeaderRow 方法在 JavaFX11 中不再可见 (3认同)