I saw examples on how to get table header in many places with code
TableHeaderRow header = (TableHeaderRow) tableView.lookup("TableHeaderRow");
like here: How to prevent TableView from doing TableColumn re-order in javaFX 8?
But this code returns null
for me.
How to reach TableHeaderRow
then?
The TableHeaderRow
is created by the Skin
and the default Skin
is not created until css is applied.
You could call applyCss
after adding the TableView
to a Scene
and access the TableHeaderRow
after this call.
Alternatively listen for changes in the Skin
and execute that code after the skin has been set.
Furthermore I'd recommend using TableViewSkinBase.getTableHeaderRow
to retrieve the header row instead of using lookup
(you're using com.sun
packages anyway).
tableView.skinProperty().addListener((a, b, newSkin) -> {
TableHeaderRow headerRow = ((TableViewSkinBase) newSkin).getTableHeaderRow();
...
});
lookup("TableHeaderRow"); works, but it needs called after the table is rendered or it will return null
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With