In my Java Desktop Application I have a TableView in which I want to have a column with CheckBoxes.
I did find where this has been done http://www.jonathangiles.net/
for me, works with this solution:
Callback<TableColumn, TableCell> checkboxCellFactory = new Callback<TableColumn, TableCell>() {
@Override
public TableCell call(TableColumn p) {
return new CheckboxCell();
}
};
TableColumn selectColumn = (TableColumn) tbvDatos.getColumns().get(1);
selectColumn.setCellValueFactory(new PropertyValueFactory("selected"));
selectColumn.setCellFactory(checkboxCellFactory);
and the tableCell:
public class CheckboxCell extends TableCell<RowData, Boolean> {
CheckBox checkbox;
@Override
protected void updateItem(Boolean arg0, boolean arg1) {
super.updateItem(arg0, arg1);
paintCell();
}
private 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);
((RowData)getTableView().getItems().get(getTableRow().getIndex())).setSelected(new_val);
}
});
}
checkbox.setSelected(getValue());
setText(null);
setGraphic(checkbox);
}
private Boolean getValue() {
return getItem() == null ? false : getItem();
}
}
if you dont need to make the checkbox with edit event