@sequelone

Как получить ID по клику на чекбокс в JavaFX?

Всем привет. У меня возникли трудности с получением данных по событию. Мне нужно, чтобы при клике на чекбокс, которые выводятся через CheckBoxTableCell в колонке TableView, я мог получить true или false. Сейчас у меня работает только один чекбокс, который выбирает все остальные и выводит в консоль ID записей из моей модели. Вот что у меня есть:

Controller
@FXML
    private void initialize() {
selectedColumn.setCellFactory(CheckBoxTableCell.forTableColumn(selectedColumn));
        select_all.selectedProperty().addListener((observable, oldValue, newValue) -> {
            for(Person person : personTable.getItems()) {
                person.setSelected(newValue);
                if(newValue == true) {
                    int count = personTable.getItems().size();
                    getDeleteAllPersBtn().setText("Delete (" + count + ")");
                    personTable.getSelectionModel().select(person.getPersonId());
                    System.out.println(person.getPersonId());
                } else {
                    personTable.getSelectionModel().clearSelection(person.getPersonId());
                    getDeleteAllPersBtn().setText("Delete");
                }
            }

            getDeleteAllPersBtn().setDisable(!select_all.isSelected());
        });
}


Model
public class Person {
    private SimpleBooleanProperty selected;
    private IntegerProperty id;

    //Constructor
    public Person() {
        this.selected = new SimpleBooleanProperty(false);
        this.id = new SimpleIntegerProperty();
    }

//selected
    public BooleanProperty selectedProperty() {
        return selected;
    }

    public boolean getSelected() {
        return selected.get();
    }

    public void setSelected(boolean selected) {
        this.selected.set(selected);
    }

}


FXML
<TableColumn fx:id="selectedColumn" prefWidth="50.0" style="-fx-alignment: CENTER;">
                           <graphic>
                              <CheckBox fx:id="select_all" mnemonicParsing="false" />
                           </graphic>
                           <cellValueFactory>
                              <PropertyValueFactory property="selected" />
                           </cellValueFactory>
                        </TableColumn>


Здесь лежат исходники.
  • Вопрос задан
  • 130 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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