Обновление графического интерфейса с помощью JNativeHook?

Я пытаюсь обновить свой графический интерфейс (например, изменить текст / цвет jButton и jLabel с помощью горячей клавиши) с помощью jnativehooks, чтобы он обновлял мой графический интерфейс при нажатии горячей клавиши, однако после нескольких часов поиска и попыток у меня все еще не возникает никаких удачи.

Я попытался переоценить / проверить / перекрасить и т. Д., Но, похоже, не работает (его вызов горячей клавиши f9 и запуск сценария в этом разделе хорошо, поскольку он выводит system.out), я новичок, поэтому я должен быть пропустить что-то простое:(

Вот мой проект (с нуля, поэтому только основы, с библиотекой jnativehook): https://www.dropbox.com/sh/keyp0tb2nobjg8t/AABOUQFqBWETRoX9D1vtcZe2a?dl=0

main.java: https://www.dropbox.com/sh/keyp0tb2nobjg8t/AAA0aib7y_k0uKtJ4sbnYHN7a/src?dl=0&preview=Main.java

Любая помощь будет оценена.

Код основного класса для тех, кто не может просмотреть Dropbox: https://hastebin.com/uqarilawop.java (слишком много отступов для публикации в stackru, так как я не знаю, что мне не хватает)

1 ответ

Вы не используете библиотеку потокобезопасным способом для Swing. Все события пользовательского интерфейса происходят в потоке Swing Dispatch, поэтому вам нужно переключить собственную библиотеку на использование Swing вместо встроенного диспетчера! Пожалуйста, смотрите https://github.com/kwhat/jnativehook/wiki/Swing

// Set the event dispatcher to a swing safe executor service. GlobalScreen.setEventDispatcher(new SwingDispatchService());

Другие вопросы по тегам