Я разрабатываю приложение 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?
У меня такая же проблема, вы нашли решение тем временем? –
Нет, я не нашел решения, к сожалению; если бы был один, я бы разместил его здесь. Мне пришлось отказаться от функциональности нажатия и удержания кнопки. Самое большее, что я могу предложить, это заставить элемент UI, о котором идет речь, потребовать перетаскивания вместо нажатия и удержания, так как действие перетаскивания по крайней мере позволяет щелчку вниз. :/ – Tustin2121
Спасибо. Я работаю над приложением OpenGL, используя JOGL2. Когда я использую окно Swing, у меня такое же проблемное поведение мыши, как и вы. Однако, если я использую окно NEWT вместо этого, он сообщает о нажатиях мыши без каких-либо задержек, поэтому, я думаю, NEWT имеет способ сообщить ОС безотлагательно сообщать о событиях. –