Как автоматически убрать галочку с чекбокса

У меня есть TableView с несколькими колонками. В одной из колонок размещены чекбоксы. Пользователь может выбрать любые (проставить галочки), тогда данные из отмеченной строки будут учитываться при построении диаграммы (строится по кнопке).

После построения диаграммы нужно очистить чекбокс (убрать галочки). Реализованное в настоящий момент решение работает, но не очень изящно:

  1. Проставляю для строк признак setSelected(false);
  2. Удаляю колонку с чекбоксами - getColumns().remove(0);
  3. Добавляю новую колонку с пустыми чекбоксами - getColumns().add(0,getSelectColumn());

При удалении и добавлении колонок экран "моргает", хотелось бы этого избежать.

Прошу подсказать другие способы удаления галочки. Спасибо!

    public class CheckboxCell extends TableCell<Plant, Boolean> {
      private   CheckBox checkbox;
    
        @Override
    protected void updateItem(Boolean arg0, boolean arg1) {
            super.updateItem(arg0, arg1);
            paintCell();
        }
    
        protected void paintCell() {
            if (checkbox == null) {
                checkbox = new CheckBox();
                checkbox.selectedProperty().addListener(new ChangeListener<Boolean>() {
                    @Override
                    public void changed(ObservableValue<? extends Boolean> ov,
                                        Boolean old_val, Boolean new_val) {
                        setItem(new_val);
                        ((Plant)getTableView().getItems().get(getTableRow().getIndex())).setSelected(new_val);
                    }
                });
            }
            checkbox.setSelected(getValue());
            setText(null);
            setGraphic(checkbox);
        }
    
        private Boolean getValue() {
            return getItem() == null ? false : getItem();
        }
    
            public CheckBox getCheckbox() {
            return checkbox;
        }
    
        public void setCheckbox(CheckBox checkbox) {
            this.checkbox = checkbox;
        }
    }
    
       public static TableColumn<Plant, String> getSelectColumn() {
            TableColumn selectColumn = new TableColumn("Построить диаграмму");
            selectColumn.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Plant, CheckBox>, ObservableValue<CheckBox>>() {
    
    @Override
    public ObservableValue<CheckBox> call(
            TableColumn.CellDataFeatures<Plant, CheckBox> arg0) {
            Plant plant = arg0.getValue();
       CheckBox checkBox = new CheckBox();
       checkboxList.add(checkBox);
            checkBox.selectedProperty().setValue(plant.isSelected());
        checkBox.selectedProperty().addListener(new ChangeListener<Boolean>() {
            public void changed(ObservableValue<? extends Boolean> ov,
                                Boolean old_val, Boolean new_val) {
    
                plant.setSelected(new_val);
            }
        });
        return new SimpleObjectProperty<CheckBox>(checkBox);
    
    }
    
            });
    
            return selectColumn;
        }

Ответы (0 шт):