TableHeaderRowis created Skin, but by default is Skinnot created until css is applied.
You can call applyCssafter adding TableViewto Sceneand access TableHeaderRowafter that call.
Skin , .
, TableViewSkinBase.getTableHeaderRow lookup ( com.sun).
tableView.skinProperty().addListener((a, b, newSkin) -> {
TableHeaderRow headerRow = ((TableViewSkinBase) newSkin).getTableHeaderRow();
...
});