Как заставить JTable оставаться в редактируемой ячейке

Если кто-то редактирует содержимое ячейки JTable и нажимает клавишу ввода, содержимое изменяется, и выбор таблицы перемещается на следующую строку.

Можно ли запретить JTable переходить к следующей строке после редактирования ячейки?

Причина в том, что моя программа синхронизирует некоторые другие виджеты при выборе ячейки с помощью ListSelectionListener, и я не хочу, чтобы следующая строка выбиралась после редактирования текущей ячейки.


person Martin    schedule 01.11.2011    source источник


Ответы (2)


Привязкой по умолчанию для Enter является Action с именем selectNextRowCell. Чтобы переопределить запись в карте ввода WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, вам необходимо указать doNothing() Action, как это предлагается в Как использовать привязки клавиш: как создавать и удалять привязки клавиш.

person trashgod    schedule 01.11.2011
comment
Отличное предложение! Осталось добавить вызов table.getCellEditor().stopCellEditing(); в методе actionPerformed(...). Без этого вызова ячейка остается в режиме редактирования, когда пользователь нажимает клавишу ввода. - person Martin; 03.11.2011
comment
Хорошая точка зрения; см. также Использование редактора для проверки введенного пользователем текста. - person trashgod; 03.11.2011

Я не уверен, как именно это сделать, но я бы посмотрел Карта действий. Вы должны иметь возможность изменить или заменить действие, сопоставленное с клавишей «Ввод».

Удачи!

person BenCole    schedule 01.11.2011