GWT - обрабатывать как двойной щелчок, так и одиночный клик на одном элементе
У меня есть собственный виджет с обработчиком onClick. Проблема заключается в том, что когда пользователь дважды щелкает элемент, для второго щелчка также запускается повторный вызов. Пытался избежать этого с помощью обработчика onDoubleClick, при двойном щелчке вызов переходит в этот обработчик, но он происходит только после выполнения onClick. Так что все еще происходит повторный вызов.
Видел решения с использованием таймера в Javascript, чтобы избежать дублирования запросов на двойной. Возможно ли иметь подобное в GWT?
Или есть какой-то другой лучший способ избежать дублирования запроса на двойной щелчок для элементов в GWT?
3 ответа
Как предотвратить DoubleSubmit в GWT-приложении?
Ответ, приведенный в приведенной выше ссылке, поможет в обработке двойного щелчка по кнопке.
Но если его пользовательский виджет и .setEnabled (false) не работают, мы можем иметь статическую логическую переменную, проверить условие, если ее значение false, затем разрешить и установить ее в значение true, если щелкнуть один раз, а затем вернуть ее в состояние false в случае успеха. В случае двойного щелчка логическое значение будет истинным, а условие if не выполнится.
Я предотвращаю двойной щелчок, беря текущее время в миллисекундах, и проверяю его при последней обработке этого метода. Если между первым и вторым кликом меньше одной секунды, второй будет заблокирован.
long lastClick = 0;
if (lastClick < System.currentTimeMillis() - 1000)
{
// do logic
}
lastClick = System.currentTimeMillis();
Замените виджет "загрузкой анимированного изображения счетчика", пока виджет все делает. Когда все будет готово, замените его обратно на виджет.
Поскольку изображение не содержит обработчик кликов, второй клик не будет получен.