тема метро javafx - просмотр таблицы цветного текста - PullRequest
1 голос
/ 27 октября 2019

У меня есть приложение javafx, которое использует jmetro в качестве темы. В табличном представлении я пытаюсь изменить цвет текста на основе значения одного из столбцов.

Я принял следующий код:

Мой контроллер

@Override
public void initialize(URL location, ResourceBundle resources) {

    super.initialize(location, resources);
    ......
    initializeToLabel();
    .......
}       

@Override
void initializeTable(){
    table.setItems(subList());
    colId.setCellValueFactory(new PropertyValueFactory<>("idBankMovement"));
    .....
    colIdCategory.setCellValueFactory(bm -> new SimpleStringProperty(bm.getValue().getCategory().getName()));
    colIdCategoryChild.setCellValueFactory(bm -> new SimpleStringProperty(bm.getValue().getCategoryChild().getName()));
    ....
    table.setRowFactory(getRowFactory());
}

private Callback<TableView<BankMovement>, TableRow<BankMovement>> getRowFactory() {
        return new Callback<TableView<BankMovement>, TableRow<BankMovement>>() {
            @Override
            public TableRow<BankMovement> call(final TableView<BankMovement> param) {
                return new TableRow<BankMovement>() {
                    @Override
                    public void updateItem(BankMovement item, boolean empty) {
                        super.updateItem(item, empty);
                        if (item == null)
                            setStyle("");
                        else if ( item.getCategory().getInOut().equals(Utils.AMOUNT_CREDIT)){
                            getStyleClass().forEach(c->log.error(c));
                            getStyleClass().removeAll();
                            getStyleClass().add("row-red");
                        }

                        else if (item.getCategory().getInOut().equals(Utils.AMOUNT_DEBIT))
                            setStyle("-fx-text-fill: #FF0000 !important; -fx-font-weight: bold");
                        else
                            setStyle("");
                    }
                };
            }
        };
    }

Класс CSS

.row-red {-fx-text-fill: white!important; -fx-background-color: grey}

Читая документы в Интернете, я увидел, что нужно что-то делать

.row-red .table-cell {-fx-text-fill: white!important; -fx-background-color: grey}

Применяется любой стиль, кроме цвета текста.

Даже при использовании встроенного стиля, а не CSS, результат не меняется.

...