Я заставил это работать!
тип данных поле должно быть тип данных . Это чувствительно к регистру.
Вам нужно будет создать свой собственный CellEditor и ovveride
public boolean isCellEditable( EventObject e )
Вы можете различать одиночный и двойной щелчок с помощью clickCount на eventObject
Если это один клик и его на выбранном ячейку вы можете вернуть true, иначе вернуть false;
получить строку и столбец с
int row = ( (JTable) e.getSource() ).rowAtPoint(e.getPoint());
int column = ( (JTable) e.getSource() ).columnAtPoint(e.getPoint());
, чтобы включить F2, вы можете добавить пользовательские записи inputMap и actionMap
similar too
table.getInputMap().put(KeyStroke.getKeyStroke("DOWN"), "doMyArrowDown");
table.getTable().getActionMap().put("doMyArrowDown", new ArrowDownAction());
, а затем из своего действия вы можете запустить ячейку самостоятельно
table.editCellAt(row, column );
DefaultCellEditor имеет метод setClickCountToStart () для управления щелчками мыши для редактирование. Значение по умолчанию - 2. Изменение этого параметра не повлияет на функциональность F2.
Таким образом, вы можете настроить редактирование как тройной щелчок.
Не знаю, как именно обрабатывать два одиночных щелчка, чтобы начать редактирование, но я думаю, вы бы использовали Таймер для отслеживания первого щелчка и последующего редактирования, если второй щелчок находится в пределах вашего временного интервала.
Я решил эту проблему, обернув существующий CellEditor
прокси
и перехватив вызовы к isCellEditable
, вернув false для всех события мыши и делегирование всех других вызовов исходному CellEditor
.
Это немного сложнее, чем решение camickr, но работает для всех редакторов (у меня их всего 4).