Подробности:
Приложение использует специальные классы управления фокусом :
Код: Выделить всё
public class CustomMouseListener implements MouseListener
public class CustomFocusManager extends DefaultFocusManager
public class CustomFocusListener extends FocusAdapter
KeyboardFocusManager
Окно редактирования в Swing не является модальным.
Мне удалось воспроизвести эту проблему в Swing (тестовое приложение) только двумя способами:
- с помощью com.sun. jna.platform.win32.* Java Windows Native API (блокируя левую кнопку мыши, если она находится за пределами приложения Java)
- С помощью Java .awt.Robot.mouseMove() — перемещение курсора в поле редактирования каждый раз, когда происходит событие windowLostFocus.
Я искал способ воспроизвести эту проблему с блокировкой фокуса и блокировкой ввода мыши в отдельном приложении Java Swing. без использования JNA или AWT Robot. Существуют ли в Swing особые методы обработки фокуса или событий, которые могут привести к тому, что приложение блокирует ввод в других приложениях (за пределами Java-фрейма)? Что может вызывать эту проблему только для определенных пользователей, несмотря на идентичные среды?
Желаемое поведение — не блокировать внешнее приложение (например, Google Chrome) и не позволять фокусироваться на полях редактирования там и не блокировать принудительно фокус внутри Java-приложения. Теоретически это выглядит невозможным, поскольку Swing/AWT не должен влиять на поведение внешних приложений Windows, но каким-то образом это произошло..
Подробнее здесь: https://stackoverflow.com/questions/790 ... plications