Приложение Java Swing блокирует фокус и блокирует ввод мыши в других приложениях после взаимодействия с полями редактироJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Приложение Java Swing блокирует фокус и блокирует ввод мыши в других приложениях после взаимодействия с полями редактиро

Сообщение Anonymous »

У меня возникла критическая проблема с приложением Java Web Start Swing/AWT, в котором после взаимодействия с определенными полями редактирования (например, JTextField, JTextArea) небольшая группа пользователей (около 15 человек) из 1500 этого приложения) не могут взаимодействовать с другими приложениями, такими как Google Chrome (поле поиска) или Блокнот (там нет курсора для ввода). Похоже, что приложение Java фиксирует фокус внутри поля редактирования приложения Java и блокирует (левые) щелчки мыши и ввод с клавиатуры во всех внешних приложениях Windows 10/11. Но я могу одновременно печатать внутри поля редактирования Swing. Если я сверну максимальное приложение Windows (не Java), я смогу снова ввести поле редактирования.
Подробности:
Приложение использует специальные классы управления фокусом :

Код: Выделить всё

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-приложения.
Я искал способ воспроизвести эту проблему с блокировкой фокуса и блокировкой ввода мыши в отдельном приложении Java Swing. без использования JNA или AWT Robot. Существуют ли в Swing особые методы обработки фокуса или событий, которые могут привести к тому, что приложение блокирует ввод в других приложениях (за пределами Java-фрейма)? Что может вызывать эту проблему только для определенных пользователей, несмотря на идентичные среды?
Желаемое поведение — не блокировать внешнее приложение (например, Google Chrome) и не позволять фокусироваться на полях редактирования там и не блокировать принудительно фокус внутри Java-приложения. Теоретически это выглядит невозможным, поскольку Swing/AWT не должен влиять на поведение внешних приложений Windows, но каким-то образом это произошло..

Подробнее здесь: https://stackoverflow.com/questions/790 ... plications
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»