В JavaFX TableView, как изменить цвет строки флажка на основе некоторого события нажатия кнопки - PullRequest
0 голосов
/ 30 августа 2018

У меня есть JavaFX TableView, где я устанавливаю столбец как CheckBoxTableCell, и я хочу изменить цвет фона этой ячейки на основе какого-либо события нажатия кнопки, чтобы цвет, который отображается в другом пользовательском интерфейсе моего кода, был также цвет фона этой ячейки.

Я реализовал столбец CheckBoxTableCell следующим образом -

dtlsTableViewDisplayChannelColumn.setCellValueFactory(cellData -> cellData.getValue().isChecked());
    dtlsTableViewDisplayChannelColumn
            .setCellFactory(CheckBoxTableCell.forTableColumn(new Callback<Integer, ObservableValue<Boolean>>() {
                @Override
                public ObservableValue<Boolean> call(Integer param) {
                    logger.info("AID " + observableDataList.get(param).getAid() + " changed value to "
                            + observableDataList.get(param).isChecked());
                    if (observableDataList.get(param).isChecked().get()) {
                        aidSet.add(observableDataList.get(param).getAid());
                    } else {
                        aidSet.remove(observableDataList.get(param).getAid());
                    }
                    return observableDataList.get(param).isChecked();
                }
            }));

И это отображается в пользовательском интерфейсе следующим образом - CheckBox в пользовательском интерфейсе с кнопкой Visualize

Таким образом, при нажатии кнопки «Визуализировать» цвет фона отмеченной ячейки CheckBox должен измениться на заданное значение цвета.

Пожалуйста, найдите ниже изображение, которое является ожидаемым результатом - CheckBox в пользовательском интерфейсе с изменением цвета фона отмеченной ячейки CheckBox после нажатия кнопки «Визуализация»

1 Ответ

0 голосов
/ 21 апреля 2019

Я думаю, это то, что вы ищете ... Я собираюсь притвориться, будто я понимаю ваш код, и покажу вам, куда следует перейти:

dtlsTableViewDisplayChannelColumn.setCellValueFactory(cellData -> cellData.getValue().isChecked());
    dtlsTableViewDisplayChannelColumn
            .setCellFactory(CheckBoxTableCell.forTableColumn(new Callback<Integer, ObservableValue<Boolean>>() {
                @Override
                public ObservableValue<Boolean> call(Integer param) {
                    logger.info("AID " + observableDataList.get(param).getAid() + " changed value to "
                            + observableDataList.get(param).isChecked());
                    if (observableDataList.get(param).isChecked().get()) {
                        aidSet.add(observableDataList.get(param).getAid());
                        observableDataList.get(param).setStyle("-fx-background-color: red;"); //<--- This changes the color of the specific checkbox 
                        //Note: I assume "param" calls the specific checkbox in the checkbox list "observableDataList"
                    } else {
                        aidSet.remove(observableDataList.get(param).getAid());
                    }
                    return observableDataList.get(param).isChecked();
                }
            }));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...