Создание доступной для редактирования ячейки JTable - но *не* путем двойного щелчка

Я заставил это работать!

тип данных поле должно быть тип данных . Это чувствительно к регистру.

5
задан Lukas Rotter 14 December 2015 в 17:10
поделиться

3 ответа

Вам нужно будет создать свой собственный 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 );
3
ответ дан 14 December 2019 в 04:44
поделиться

DefaultCellEditor имеет метод setClickCountToStart () для управления щелчками мыши для редактирование. Значение по умолчанию - 2. Изменение этого параметра не повлияет на функциональность F2.

Таким образом, вы можете настроить редактирование как тройной щелчок.

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

4
ответ дан 14 December 2019 в 04:44
поделиться

Я решил эту проблему, обернув существующий CellEditor прокси и перехватив вызовы к isCellEditable , вернув false для всех события мыши и делегирование всех других вызовов исходному CellEditor .

Это немного сложнее, чем решение camickr, но работает для всех редакторов (у меня их всего 4).

1
ответ дан 14 December 2019 в 04:44
поделиться
Другие вопросы по тегам:

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