Я подозреваю, имеющие несколько строк с бордюром и других без Мессинг макета.
Способ использования стилей по умолчанию, modena.css, реализует большинство пограничных эффектов - фактически использовать «вложенные фоны». Идея состоит в том, чтобы нарисовать один сплошной цвет фона без вставки, а затем нарисовать второй цвет фона с положительной вставкой. Например. если вы нарисуете красный фон с нулевыми вставками, а затем фон в фоновом цвете по умолчанию со вставкой по 1 пикселю с каждой стороны, это создаст эффект красной границы шириной 1 пиксель. (Анекдотически - у меня нет никаких реальных доказательств для этого - этот метод имеет лучшую производительность, чем использование фактического параметра границы.) Преимущество в этом случае использования заключается в том, что добавление (реальная) границы изменяет макет строки таблицы как пространство выделяется границе, тогда как изменение цвета фона не имеет никакого отношения к макету.
Так что попробуйте вместо этого:
table.setRowFactory(tv -> new TableRow<TableBean>() {
@Override
public void updateItem(TableBean item, boolean empty) {
super.updateItem(item, empty);
if (item == null) {
setStyle("");
} else if (item.getComparisonElement().isMarker()) {
setStyle("-fx-background-color: red, -fx-background;"+
"-fx-background-insets: 0, 1;");
} else {
setStyle("");
}
}
});
Awsome, работает как шарм! Не могли бы вы объяснить, как вы решили это, не касаясь строк «без подсветки»? – kerner1000
@ kerner1000 Добавлено краткое объяснение. –