JTable: двойной щелчок должен сохранить предыдущий выбор

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

EDIT:
Относится к этому вопросу:
Java: игнорировать одиночный щелчок при двойном щелчке?
Но я надеюсь, что для моего случая есть лучшее/более простое решение.


person SpeziFish    schedule 21.12.2011    source источник
comment
Остерегайтесь - это считается плохим удобством использования: второй щелчок должен дополнять то, что было сделано в первый раз, а не что-то совершенно другое.   -  person kleopatra    schedule 21.12.2011
comment
Лучшим дизайном было бы наличие кнопки обработки, такой как «Обработать выбранные ячейки», чтобы пользователь мог щелкнуть ее вместо двойного щелчка. Или вы можете использовать всплывающее меню, чтобы предоставить пользователю различные варианты обработки.   -  person camickr    schedule 21.12.2011


Ответы (2)


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

Что также можно сделать, так это при первом щелчке ничего не выбирать, но чуть позже вызвать специальное событие выбора.

SwingUtilities.invokeLater(myRunnable);

и при обработке двойного щелчка/myRunnable истинный выбор. Хотя время может быть неизбежным.

person Joop Eggen    schedule 21.12.2011
comment
Хорошо, кажется, я не могу избежать таймера. - person SpeziFish; 21.12.2011
comment
Нужна как минимум задержка и измерение времени. myRunnable при слишком раннем вызове может повториться с invokeLater. Таймер кажется проще. - person Joop Eggen; 21.12.2011
comment
Но как остановить выделение по первому клику? - person SpeziFish; 21.12.2011
comment
Затем сохраните выбор и двойным щелчком восстановите его. Не приятно, так как это мерцает выбор. Вероятно, выделение можно подавить другим способом. - person Joop Eggen; 21.12.2011

вы можете использовать setClickCountToStart() для XxxCellEditor: я ничего не знаю о вашем JTable

person mKorbel    schedule 21.12.2011
comment
Это только изменяет необходимые клики для начала редактирования, но не затрагивает поведение выбора. Бесполезно для моего вопроса. - person SpeziFish; 21.12.2011