Всем привет. У меня возникли трудности с получением данных по событию. Мне нужно, чтобы при клике на чекбокс, которые выводятся через
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());
});
}
Modelpublic 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>
Здесь лежат исходники.