![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| igon |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 7 Всего: 21 |
В документации на JTree в JDK 1.4 приводится код для "отлавливания"
DoubleClick
Использовал эту рекомендацию, однако отладочная печать при любых кликах, в том числе и двойных, выдает
При этом дерево на DoubleClick разворачивает/сворачивает узел, как и положено. DoubleClick, собственно, нужно игнорировать.Что посоветуете? -------------------- Хотите поговорить об этом? |
||||
|
|||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
Попробуй смотреть не в mousePressed a в mouseClicked.
-------------------- |
|||
|
||||
| igon |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 7 Всего: 21 |
Пробовал, это был даже начальный вариант - не помогат [offtop] Domestic Cat, с новой "шкуркой" тебя [/offtop] -------------------- Хотите поговорить об этом? |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
Может код тогда дашь?
Пасип -------------------- |
|||
|
||||
| igon |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 7 Всего: 21 |
-------------------- Хотите поговорить об этом? |
||||
|
|||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 7 Всего: 151 |
В смысле? По ClickCount'у и различать... -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
А если быстро кликать то и 20 клик каунтов можно получить. Никто ж не знает, сколько кликов ты намереваешься сделать, потому и ловится сначала первый клик.
-------------------- |
|||
|
||||
| igon |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 7 Всего: 21 |
to Lamer George
во фрагменте кода, приведенном в первом посте, на DoubleClick будет вызываться И mySingleClick, И myDoubleClick (закомментированные строчки). А мне нужно, чтобы mySingleClick НЕ вызывался. Это я и называю различением. to Domestic Cat
Т.е. 20 быстрых кликов == 20 событий. Мне казалось более логичным: SingleClick == одно событие DoubleClick == одно событие TripleClick == одно событие ... TwentyClick == одно событие Что ж, придется принять во внимание Итак, имеем на DoubleClick два вызова листенера 1) При первом вызове выставляем флаг, что-то делаем, запускаем таймер 2) При втором вызове, если флаг выставлен, сбрасываем его и откатываем сделанное 3) таймер просто сбрасывает флаг или 1) При первом вызове выставляем флаг, готовим задание, запускаем таймер 2) При втором вызове, если флаг выставлен, сбрасываем его 3) таймер выполняет задание, если флаг выставлен, и сбрасывает флаг Просто и...эта...удобно По другому - никак? -------------------- Хотите поговорить об этом? |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 13 Всего: 172 |
Ну я не знаю что сделать нужно, но разве нельзя просто игнорировать двойные клики, то есть приравнять их к одинарным?
Ну а как например? 1. При первом вызове не знаем, будут другие или нет, потому ждем. 1.1. Событий нет, посылаем юзеру. Юзер получает событие с заметным запозданием Х. 2. Был двойной клик, ждем, а вдруг нужно 3 клика? 2.1. Событий нет, посылаем юзеру. Юзер получает событие с заметным запозданием 2Х. 3. Был тройной клик, ждем, а вдруг нужно 4 клика? 3.1. Событий нет, посылаем юзеру. Юзер получает событие с заметным запозданием 3Х. ............. -------------------- |
|||
|
||||
| Stampede |
|
||||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 1 Всего: 144 |
Смеялся Вопрос действительно интересный. С одной стороны, действительно, мы не можем знать, что последний из кликов был на самом деле последним, пока не истечет тайм-аут (кстати, Коть, не 3Х, а время первых двух кликов + Х; что не есть одно и то же - тщательнЕе надо Встроенной поддержки такого поведения в Java, похоже, нету. Я тут щас погуглил маленько и нарыл топик на форуме Sun. Там один дятел типа думает, что он такой блин умный:
Но шутки шутками, а выходов, похоже, только два: таки реагировать на каждый первый клик или городить ту фиговину с таймерами. Да, и если выберешь первое, то можно маленько упростить код, не завязываясь на мышиных событиях, а доверив это дело JTree - посредством установки setToggleClickCount(2). Тогда отрабатывать уже нужно будет treeWillExpand() и treeWillCollapse() методы, а в них информация об узле уже включена в объект события. |
||||
|
|||||
| igon |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 7 Всего: 21 |
Всем спасибо за комментарии!
В моем конкретном случае (CheckBox в нодах) решил отказаться от анализа числа кликов. Теперь на DoubleClick CheckBox просто дважды инвертирует selected. Побочный эффект - при expand/collapse ветки кратковременно появляется/пропадает галка в CheckBox ветки -------------------- Хотите поговорить об этом? |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |