У меня есть таблица, написанная в JavaFX, что пользователь имеет возможность редактировать один из своих столбцов. Когда происходит редактирование ячейки, я пытаюсь переименовать некоторый внутренний объект на основе нового текста. Если это переименование не удалось, я выдаю уведомление + всплывающее диалоговое окно с ошибкой, а затем я хотел бы восстановить исходный текст в этом поле. По какой-то причине это приводит меня в бесконечный цикл всплывающих окон.Как восстановить предыдущее значение в JavaFX TableColumn's onEditCommit?
Код я в настоящее время от оригинального писателя выглядит следующим образом:
mNameColumn.setOnEditCommit(
new EventHandler<TableColumn.CellEditEvent<StateDefinition, String>>() {
@Override
public void handle(TableColumn.CellEditEvent<StateDefinition, String> event) {
try {
someObject.rename(((StateDefinition) event.getTableView().getItems().get(event.getTablePosition().getRow())).getState(), event.getNewValue());
} catch (MYException ex) {
MyNotificationCollector.addNotification("Failed renaming: " + ex.getLocalizedMessage(), NotificationType.SYSTEM_WARNING);
//popup error message code here
// Need to revert the cell's text to the previous value here...
}
}
});
Любая идея о том, что я делаю не так? Как восстановить старое значение без повторного вызова события фиксации ячейки?
Спасибо, Орен
Самого переименованием не удалось, поэтому вызов переименования снова является избыточным. Все, что мне нужно, это интерфейс (таблица), чтобы вернуться к старому значению. Моя проблема возникает только при включении всплывающего окна, так или иначе это вызывает событие снова и снова, и я не могу его остановить. –
Итак, я думаю, что я хочу, чтобы как-то вызвать событие отмены отмены и/или заставить ячейку вернуть прежнее значение. –
@OrenSarid см. Обновление. Я ничего не могу сказать о вашем всплывающем окне, так как информации об этом нет. –