Сценарий такой: пользователь редактирует ячейку и нажимает клавишу TAB.Редактирование остановлено, и значение находится в модели.Однако, если postUpdateTestFailed()
возвращает true, я хочу переместить выделение обратно в только что отредактированную ячейку, чтобы пользователь мог внести некоторые изменения.Проблема в том, что это не работает.В моем случае это работает для всего, кроме выбранной ячейки ... :( Поскольку пользователь нажимает клавишу TAB, выделенная / выделенная ячейка всегда следующая. Кажется, что изменение моего выбора игнорируется в данном конкретном случае. Что я делаю неправильно?:)
public void tableChanged(TableModelEvent tme) {
int row = tme.getFirstRow();
int col = tme.getColumn();
int type = tme.getType();
switch (type) {
case TableModelEvent.UPDATE:
currentRow = areenTable.convertRowIndexToView(row);
currentColumn = areenTable.convertColumnIndexToView(col);
if (postUpdateTestFailed()) {
// if the test fails, I want to move back to the edited cell
areenTable.changeSelection(currentRow, currentColumn, false, false);
}
break;
// the rest of switch
} // switch
} // tableChanged() method
Редактировать 1 : Я надеялся, что кто-то уже сталкивался с такой же проблемой и как-то решил ее ...
Редактировать 2 : Обычно я делаю это в собственной реализации редактора ячеек и предотвращаю фиксацию, если проверка не удаласьК сожалению, в этом особом случае мне нужно позвонить postUpdateTestFailed()
после , когда изменение зафиксировано ... И затем установить курсор на ранее отредактированную ячейку.Странно то, что я могу переместиться в любую другую клетку , но последнюю отредактированную !!Я считаю это ошибкой.