Hi i create Tableview with checkbox column for data from my database. Now i can selcet even all checkbox in table. But I need to change it was possible to select only one checkbox and assign a index to variable.
Here is my code:
This is my data model
private Temat_model() {
this._zaznaczony = new SimpleBooleanProperty();
this._nr_Tematu = new SimpleStringProperty();
this.Temat = new SimpleStringProperty();
this._Zarezerwowany = new SimpleStringProperty();
// this._zaznaczony= new SimpleBooleanProperty(false);
this._zaznaczony.addListener(new ChangeListener<Boolean>() {
public void changed(ObservableValue<? extends Boolean> ov, Boolean t, Boolean t1) {
System.out.println( " select: " + t1);
}
});
}
public BooleanProperty _zaznaczonyProperty() {
return _zaznaczony;
}
public StringProperty _nr_TematuProperty() {
return _nr_Tematu;
}
public StringProperty _TematProperty() {
return Temat;
}
public StringProperty _ZarezerwowanyProperty() {
return _Zarezerwowany;
}
public void setZaznaczony(boolean zaznacz) {
this._zaznaczony.set(zaznacz);
}
public void setTemat(String _nr_Tematu) {
this.Temat.set(_nr_Tematu);
}
public void set_Data(Integer num, String data) {
this._zaznaczony.set(false);
if (num == 0) {
this.Temat.set(data);
} else if (num == 1) {
this._nr_Tematu.set(data);
} else if (num == 2) {
this._Zarezerwowany.set(data);
}
}
public void set_nr_Tematu(String _nr_Tematu) {
this._nr_Tematu.set(_nr_Tematu);
}
public void set_Zarezerwowany(String _Zarezerwowany) {
this._Zarezerwowany.set(_Zarezerwowany);
}
}
there is code for create tableview column
final ObservableList<Temat_model> data = FXCollections.observableArrayList();
TableColumn zaznaczonyCol = new TableColumn<Temat_model, Boolean>();
zaznaczonyCol.setText("Zaznaczony");
zaznaczonyCol.setMinWidth(50);
zaznaczonyCol.setCellValueFactory(new PropertyValueFactory("_zaznaczony"));
zaznaczonyCol.setCellFactory(new Callback<TableColumn<Temat_model, Boolean>, TableCell<Temat_model, Boolean>>() {
public TableCell<Temat_model, Boolean> call(TableColumn<Temat_model, Boolean> p) {
return new CheckBoxTableCell<Temat_model, Boolean>();
}
});
TableColumn nr_tematuCol = new TableColumn<Temat_model, String>();
nr_tematuCol.setText("Lp");
nr_tematuCol.setCellValueFactory(new PropertyValueFactory<Temat_model, String>("_nr_Tematu"));
TableColumn tematCol = new TableColumn<Temat_model, String>();
tematCol.setText("Temat");
tematCol.setCellValueFactory(new PropertyValueFactory<Temat_model, String>("_Temat"));
TableColumn zarezerwowanyCol = new TableColumn<Temat_model, String>();
zarezerwowanyCol.setText("Zajety");
zarezerwowanyCol.setMinWidth(200);
zarezerwowanyCol.setCellValueFactory(new PropertyValueFactory<Temat_model, String>("_Zarezerwowany"));
Callback<TableColumn, TableCell> cellFactory
= new Callback<TableColumn, TableCell>() {
public TableCell call(TableColumn p) {
return new EditingCell();
}
};
zarezerwowanyCol.setCellFactory(cellFactory);
nr_tematuCol.setCellFactory(cellFactory);
tematCol.setCellFactory(cellFactory);
//Set handler to update ObservableList properties. Applicable if cell is edited
updateObservableListProperties(zarezerwowanyCol, nr_tematuCol, tematCol);
//Enabling editing
tableview.setEditable(true);
tableview.getColumns().addAll(zaznaczonyCol, nr_tematuCol, tematCol, zarezerwowanyCol);
My chceckbox tabllecell class with i use to create check box in table
public static class CheckBoxTableCell<S, T> extends TableCell<S, T> {
private final CheckBox checkBox;
private ObservableValue<T> ov;
public CheckBoxTableCell() {
this.checkBox = new CheckBox();
this.checkBox.setAlignment(Pos.CENTER);
setAlignment(Pos.CENTER);
setGraphic(checkBox);
}
@Override
public void updateItem(T item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setText(null);
setGraphic(null);
} else {
setGraphic(checkBox);
if (ov instanceof BooleanProperty) {
checkBox.selectedProperty().unbindBidirectional((BooleanProperty) ov);
}
ov = getTableColumn().getCellObservableValue(getIndex());
if (ov instanceof BooleanProperty) {
checkBox.selectedProperty().bindBidirectional((BooleanProperty) ov);
}
}
}
}
Aucun commentaire:
Enregistrer un commentaire