2014-01-11 1 views
10

Я разрабатываю приложение Swing на Java. Программа должна запускаться на специализированных машинах с сенсорным экраном Windows 7, и, насколько я знаю, эта программа должна работать только на них при нормальной работе.Windows 7 Touch Screen + Java Swing = События с задержкой мыши

Я заметил, что интерфейс сенсорного экрана Windows 7 имеет эту вещь, где он будет удерживать события mousedown. Из-за «нажмите и удерживайте правой кнопкой мыши» жест, Windows 7 не будет на самом деле отправить заявку мыши вниз событие до:

  • пользователя «Touch Ups» (не поднять палец от прикосновения, в которые указывают как вниз и вверх посылаются)
  • перемещает палец (в какой момент щелчка становится перетаскивание)
  • или правой кнопкой мыши раз круг жест (приблизительно через 5-6 секунд)

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

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

Да, я попытался просто отключить жестом нажатия и удерживания. К сожалению, это просто отключает рисование круга, указывающего жест правой кнопкой мыши вокруг вашего пальца и огонь последующего щелчка правой кнопкой мыши. Он НЕ удаляет основную проблему: событие задержки с нажатием мыши до шесть секунд.

Моего вопрос: Есть ли способ:

  • В идеале, указать Windows, что мое приложение является сенсорным готовым приложением, поэтому он посылает события немедленно (но, я полагаю, все-таки отправить события мыши вместо событий касания)? Я вижу, что встроенная мягкая клавиатура работает правильно, похоже. Я просто хочу, чтобы мое приложение Java делало то же самое.
  • Отключить задержку полностью на компьютере, но при этом обеспечить базовые сенсорные функции?
  • Потенциально что-то простое, как this question, which seems to be asking about the same phenomenon, но в Java?
+0

У меня такая же проблема, вы нашли решение тем временем? –

+2

Нет, я не нашел решения, к сожалению; если бы был один, я бы разместил его здесь. Мне пришлось отказаться от функциональности нажатия и удержания кнопки. Самое большее, что я могу предложить, это заставить элемент UI, о котором идет речь, потребовать перетаскивания вместо нажатия и удержания, так как действие перетаскивания по крайней мере позволяет щелчку вниз. :/ – Tustin2121

+0

Спасибо. Я работаю над приложением OpenGL, используя JOGL2. Когда я использую окно Swing, у меня такое же проблемное поведение мыши, как и вы. Однако, если я использую окно NEWT вместо этого, он сообщает о нажатиях мыши без каких-либо задержек, поэтому, я думаю, NEWT имеет способ сообщить ОС безотлагательно сообщать о событиях. –

ответ

1

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

Смежные вопросы