Я разрабатываю приложение Swing на Java. Программа должна запускаться на специализированных машинах с сенсорным экраном Windows 7, и, насколько я знаю, эта программа должна работать только на них при нормальной работе.
Я заметил, что интерфейс сенсорного экрана Windows 7 имеет эту вещь, где он будет удерживать события mousedown. Из-за жестов "нажмите и удерживайте нажатие правой кнопки мыши" Windows 7 фактически не отправит приложению событие мыши вниз:
- пользователь "прикасается" (поднимите палец с касания, после чего отправляется как вниз, так и вверх).
- перемещает палец (в этот момент клик становится перетаскиванием)
- или время ожидания жестов в правом клике (примерно через 5-6 секунд)
Тривиально это означает, что кнопки не выглядят подавленными в приложении до тех пор, пока не будет отправлено событие мыши (и никогда не будет нажата нажатием на кнопку быстрого нажатия). Но, в последнее время, что более серьезно, это означает, что функциональность, требующая нажатия и удержания, не может произойти без значительного путаницы со средним пользователем.
На этом этапе разработки далеко слишком поздно развернуться и начать с нуля с помощью одной из многочисленных сенсорных библиотек, предлагаемых по другим вопросам. (Они требуют повторного ввода всего приложения в свою иерархию компонентов, и это просто невозможно. Плюс все, что закодировано для использования событий мыши, затем должно быть перекодировано с помощью событий касания, и нам действительно не нужно использовать multi-touch... )
Да, я попытался просто отключить жестов нажатия и удерживания. К сожалению, это просто отключает рисование круга, указывающего жест правой кнопкой мыши вокруг вашего пальца и огонь последующего щелчка правой кнопкой мыши. Он НЕ удаляет основную проблему: событие задержки с нажатием мыши на срок до шести секунд.
Мой вопрос. Есть ли способ:
- В идеале укажите в Windows, что мое приложение - приложение, готовое к касанию, поэтому оно немедленно отправляет события (но, я полагаю, все еще посылает события мыши вместо событий касания)? Я вижу, что встроенная мягкая клавиатура работает правильно, похоже. Я просто хочу, чтобы мое приложение Java делало то же самое.
- Отключить задержку полностью на компьютере, но при этом обеспечить базовые функции касания?
- Потенциально что-то просто, как этот вопрос, который, кажется, спрашивает об одном и том же явлении, но на Java?