Как получить TableHeaderRow из TableView в настоящее время в JavaFX?
Я видел примеры того, как получить заголовок таблицы во многих местах с кодом
TableHeaderRow header = (TableHeaderRow) tableView.lookup("TableHeaderRow");
как здесь: Как запретить TableView делать перестановку TableColumn в javaFX 8?
Но этот код возвращается null
для меня.
Как добраться TableHeaderRow
затем?
2 ответа
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();
...
});
Поиск ("TableHeaderRow"); работает, но он должен вызываться после рендеринга таблицы, иначе он вернет null