Задать вопрос
@striver

Как в JavaFX изменять цвет в таблице в зависимости от условий?

Данные выгружаются с БД, поэтому нашел такое вот решение выгрузки данных и изменение цвета.
private void styleRowColor() {
        Callback<TableColumn<ModelTableDriversLogArea, String>, TableCell<ModelTableDriversLogArea, String>> cellFactory
                = 
                new Callback<TableColumn<ModelTableDriversLogArea, String>, TableCell<ModelTableDriversLogArea, String>>() {
            @Override
            public TableCell<ModelTableDriversLogArea, String> call(final TableColumn<ModelTableDriversLogArea, String> param) {
                final TableCell<ModelTableDriversLogArea, String> cell = new TableCell<ModelTableDriversLogArea, String>() {

                    @Override
                    public void updateItem(String item, boolean empty) {
                        super.updateItem(item, empty);
                        if (empty) {
                            setGraphic(null);
                            setText(null);
                        } else {
                            setText(item);
                            TableRow<ModelTableDriversLogArea> row = getTableRow();
                            if (row.getItem().getDivision().equals("-")) {
                                row.getStyleClass().clear();
                                 setStyle("-fx-background-color: green");
                            }
                        }
                    }
                };
                return cell;
            }
        };
        col_divisionDriversAreaLog.setCellFactory(cellFactory);
    }

Проблема в том, что когда скролить вниз, то произвольные ячейки в таблице начинают окрашиваться в зеленый цвет. При этом, если скролить вверх и вниз, то в итоге весь столбец с данными закрасится в зеленый. Если ли возможность что-то изменить, или же другие варианты изменения цвета в зависимости от данных в табличке?
  • Вопрос задан
  • 416 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы