Выделение строки цветом в TableView

141
02 июля 2019, 03:10

Есть POJO-класс Option c одним String полем description.

Объекты этого класса выводятся в таблицу в JavaFX приложении, заполнение через цикл:

public TableView<Option> optionsTable;
public TableColumn<Option, String> descriptionColumn;            
ObservableList<Option> TableDescription = FXCollections.observableArrayList();
descriptionColumn.setCellValueFactory(new PropertyValueFactory<Option, String>("description"));

Таблица заполняется и отображается без проблем.

Далее код:

optionsTable.setRowFactory(param -> new ColorRow());
...
private class ColorRow extends TableRow<Option> {
@Override
protected void updateItem(Option item, boolean b) {
super.updateItem(item, b);
boolean flag = (item == null);
if (flag) {
setStyle("-fx-text-background-color: BLACK;");
}
else {
setStyle("-fx-text-background-color: RED;");
    }
  }
}

При попытке обратиться к экземпляру item в классе updateItem, например:

if (item.getDescription().contains("is not found in the database")) {

при запуске генерируется исключение:

Exception in thread "JavaFX Application Thread" 
java.lang.NullPointerException
at fx.Controller$ColorRow.updateItem(Controller.java:100)

Почему не получается обратиться к объекту класса Option и его методам? Что делаю не так?

READ ALSO
Не вызывается addButtonAction

Не вызывается addButtonAction

Есть один FXML файл "samplefxml" код ниже:

157
Java выдается ошибка при компиляции

Java выдается ошибка при компиляции

Нашел в инете код но он выдает ошибку:

137
Добавление базы данных sqlite при сборке проекта

Добавление базы данных sqlite при сборке проекта

Вопрос таков,собрал проект с помощью мавен,получился jar with dependencies,из консоли intellej idea jar запускается и отлично работаетИз обычной виндовской...

117