У меня есть класс, который можно инициализировать с некоторыми объектами и представлять логические значения:
package controller.menuResponsability.element;
import application.objects.ObjectCOR;
import controller.AppController;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ContentDisplay;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.util.Callback;
public class BooleanColumn<T extends ObjectCOR> extends TableColumn<T, Boolean> {
private Callback<TableColumn<T, Boolean>, TableCell<T, Boolean>> cellFactory;
final Class<? extends ObjectCOR> typeParameterClass;
public BooleanColumn(String s, Class<? extends ObjectCOR> typeParameterClass) {
super(s);
this.typeParameterClass = typeParameterClass;
cellFactory = new Callback<TableColumn<T, Boolean>, TableCell<T, Boolean>>() {
@Override
public TableCell<T, Boolean> call(TableColumn<T, Boolean> param) {
final TableCell<T, Boolean> cell = new TableCell<T, Boolean>() {
private CheckBox checkBox;
{
checkBox = new CheckBox();
checkBox.setDisable(true);
this.setGraphic(checkBox);
this.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
this.setEditable(true);
}
@Override
public void startEdit() {
super.startEdit();
if (isEmpty()) {
return;
}
checkBox.setDisable(false);
checkBox.requestFocus();
}
@Override
public void cancelEdit() {
super.cancelEdit();
checkBox.setDisable(true);
}
@Override
public void updateItem(Boolean item, boolean empty) {
super.updateItem(item, empty);
if (!isEmpty()) {
checkBox.setSelected(item);
T obj = getTableView().getItems().get(getIndex());
// Update boolean value of the object
AppController.getInstance().getDAO(typeParameterClass).update(obj);
}
}
};
return cell;
}
};
setCellFactory(cellFactory);
}
}
Я хочу использовать этот столбец для классов с 2 или 3 логическими значениями. Тогда имя функции установки не совпадает, и я не знаю, как обновить значение логического значения, связанного с флажком.
Может кто-нибудь мне помочь?