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();

Замените виджет "загрузкой анимированного изображения счетчика", пока виджет все делает. Когда все будет готово, замените его обратно на виджет.

Поскольку изображение не содержит обработчик кликов, второй клик не будет получен.

Другие вопросы по тегам