Я хочу добавить / удалить класс стиля в строку таблицы на основе логического значения в элементе строки.
Добавление и удаление класса работает, как и ожидалось, с помощью следующего кода.Но когда я нажимаю на заголовок столбца, чтобы изменить порядок таблицы, стиль привязывается к идентификатору строки, а не к элементу строки.Это означает, что если до упорядочивания первый ряд был стилизован, то после упорядочивания стиль все еще находится в первом ряду, а не в строке на новой позиции.
setRowFactory(table -> {
TableRow<PowerPlantPM> row = new TableRow<>() {
@Override
protected void updateItem(PowerPlantPM pp, boolean empty) {
super.updateItem(pp, empty);
if (!empty && pp != null) {
pp.savedProperty().addListener((observable, oldValue, newValue) -> {
if (newValue) {
getStyleClass().remove("unsaved");
} else {
getStyleClass().add("unsaved");
}
});
// the following binding works (including ordering), but is not what I want because of the ":selected" pseudo class
// styleProperty().bind(Bindings.when(pp.savedProperty()).then("").otherwise("-fx-background-color: #f2dede"));
}
}
};
return row;
});
Надеюсь, понятно, чего я хочу достичь.Как заставить стиль придерживаться элемента строки при переупорядочении?