2017-02-17 12 views
0

изменить стиль некоторых строк моей таблицы для того, чтобы сделать некоторые подсвечивание:Изменение строки цвет границы вводит какие-то странные клетки сдвигая

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-border-color: red;"); 
     } else { 
      setStyle(""); 
     } 
     } 
    }); 

Это работает, но у меня есть некоторые клетки «сдвинутый» как нежелательный побочный эффект:

enter image description here

ответ

0

Я подозреваю, имеющие несколько строк с бордюром и других без Мессинг макета.

Способ использования стилей по умолчанию, 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(""); 
     } 
    } 
}); 
+0

Awsome, работает как шарм! Не могли бы вы объяснить, как вы решили это, не касаясь строк «без подсветки»? – kerner1000

+0

@ kerner1000 Добавлено краткое объяснение. –

 Смежные вопросы

  • Нет связанных вопросов^_^