JTable - Получение ячейки в Режим редактирования на нажатии Tab

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

Я использую JTable, который имеет пользовательский рендерер и пользовательского редактора для ряда столбцов.
Рендерер использует компонент JLabel, и редактор использует компонент JSpinner.
Наши пользователи хотят смочь ввести значения в столбец и затем нажать TAB или ENTER для перемещения в следующую редактируемую ячейку в таблице.
Если я понимаю правильно, это - поведение по умолчанию для JTable.

Однако это, кажется, не работает правильно на меня. Пока пользователь не нажимает на ячейку, только JLabel отображен.
JSpinner (т.е. CellEditor) только отображен, когда пользователь дважды щелкает по ячейке. Так, похоже, что ячейка входит в режим "редактирования" только на MouseEvents, но не, когда это фокусируется.

Как я заставляю ячейку входить в режим редактирования, как только это фокусируется?

9
задан Luhar 10 June 2010 в 09:26
поделиться

2 ответа

Этого можно добиться программно, просто слушать события фокуса на ячейке, при фокусе и разрешении редактирования, начать редактирование.

Подробнее об этом поток и пример

5
ответ дан 4 December 2019 в 08:00
поделиться

Спасибо n00213f. Тема и пример из вашего сообщения были полезны. Перегрузив метод changeSelection в JTable, как указано в теме, JTable проверяет, является ли ячейка редактируемой при каждом изменении выделения. Если ячейка редактируема, она отобразит CellEditor и передаст фокус компоненту редактора.

Для полноты, вот мое решение:

  JTable myTable = new javax.swing.JTable()
  {
            public void changeSelection(final int row, final int column, boolean toggle, boolean extend)
            {
                super.changeSelection(row, column, toggle, extend);
                myTable.editCellAt(row, column);
                myTable.transferFocus();
            }
  };
20
ответ дан 4 December 2019 в 08:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: