Я хотел бы, чтобы преобразовать следующий код, чтобы быть общих типов Java, чтобы избежать необходимости вручную повторно коду, при редактировании фиксации для каждого нового столбца таблицы ...JavaFX TableView - Generic OnEditCommit
colOccurrences.setOnEditCommit(
new EventHandler<TableColumn.CellEditEvent<Damageloop, Float>>() {
@Override
public void handle(TableColumn.CellEditEvent<Damageloop, Float> t) {
((Damageloop)t.getTableView().getItems().get(
t.getTablePosition().getRow())).setOccurrences(t.getNewValue());
}
});
У меня есть пытался добавить следующий код к классу заводского заказа клеток, который присваивается каждый столбец таблицы ...
TableColumn<S, T> col = super.getTableColumn();
col.setOnEditCommit(
new EventHandler<CellEditEvent<S, T>>() {
@Override
public void handle(CellEditEvent<S, T> t) {
TableColumn<S, T> col = t.getTableColumn();
int row = t.getTablePosition().getRow();
ObservableValue<T> ov = col.getCellObservableValue(row);
if (ov instanceof WritableValue) {
((WritableValue<T>)ov).setValue(t.getNewValue());
}
}
});
И это успешно устанавливает основное наблюдаемое значение редактируемой ячейки. Однако, когда я звоню ...
TableView.getSelectionModel().getSelectedItem()
В следующем разделе кода сохраняется прежнее неотредактированное значение. Однако, если я обновлю мой родовое на редактирование обязательство включать в себя следующее ...
TableColumn<S, T> col = super.getTableColumn();
col.setOnEditCommit(
new EventHandler<CellEditEvent<S, T>>() {
@Override
public void handle(CellEditEvent<S, T> t) {
TableColumn<S, T> col = t.getTableColumn();
int row = t.getTablePosition().getRow();
ObservableValue<T> ov = col.getCellObservableValue(row);
if (ov instanceof WritableValue) {
((WritableValue<T>)ov).setValue(t.getNewValue());
}
//NEW ADDITION TO EVENT HANDLER
Date date;
date = (Date) t.getNewValue();
((Damageloop) t.getTableView().getItems().get(t.getTablePosition().getRow())).setDamageloopworkshopduedate(date);
}
});
TableView.getSelectionModel(). GetSelectedItem код() будет возвращать правильное обновленное значение.
Может ли кто-нибудь сказать мне, почему неизменяемое значение не обновляет список поддержки? или более подходящим образом, как преобразовать новое дополнение в обработчик событий для использования дженериков?
Пожалуйста, разместите одно из свойств, включая getter/setter/property getter, из класса 'Damageloop' и' cellValueFactory', где это свойство используется ... – fabian
Обратите внимание, что весь ваш первый блок кода можно просто свести к 'colOccurrences .setOnEditCommit (t -> t.getRowValue(). setOccurrences (t.getNewValue())); ' –