Итак, у меня есть JFrame, к которому я добавил KeyListener, и я устанавливаю фокус равным true. С KeyListener проблем нет, но он прослушивает клавиши только в том случае, если окно находится сверху. То, что я пытаюсь сделать, это слушать нажатия клавиш, если окно не сверху. По сути, я пытаюсь создать программу, которая выполняет код, когда пользователь нажимает F10, и прекращает выполнение кода, когда пользователь снова нажимает F10. Окно не должно быть сверху, чтобы эта программа работала, а это означает, что если я нажму F10, а JFrame не будет сверху, оно все равно будет выполняться. Любая помощь будет принята с благодарностью! Спасибо.
Слушайте нажатия клавиш, если окно не сверху
21.05.2012
- Вы пытались поставить один и тот же KeyListener на разные кадры? Возможно, вы захотите изучить KeyBindings вместо KeyListener. KeyListener, если низкоуровневый интерфейс, а KeyBindings — OO. 22.05.2012
- Не могли бы вы прислать мне пример KeyBindings? Я уже немного изучил это, но я чувствую, что вы можете знать очень простой учебник по этому вопросу. Спасибо. 22.05.2012
- Google — ваш друг: docs.oracle.com/javase/tutorial/uiswing /misc/keybinding.html Основная идея заключается в том, что вы отделяете действие (сделайте что-то) от того, что запускает действие (в данном случае KeyStroke). 22.05.2012
- Джош, если ты найдешь ответ, пожалуйста, опубликуй его, я некоторое время думал, как это сделать... 22.05.2012
- Я провел некоторое исследование и прочитал сценарии, когда я хотел бы использовать KeyBinding, и я не уверен, что это то, что я хочу? В основном я хочу, чтобы моя программа работала, когда пользователь нажимает клавиши на своей клавиатуре, независимо от того, находится ли JFrame сверху или нет. Работают ли KeyBindings в этом случае? 22.05.2012
- @JoshM Вы говорите о других JFrame, которыми вы управляете, которые находятся сверху? или вы про другие программы, которые сверху? В первом случае это можно сделать, во втором нельзя в Java (или, по крайней мере, в JVM это не предусмотрено изначально) 22.05.2012
- Похоже на кейлоггер. Какую функцию приложения это предоставляет пользователю? 22.05.2012
Ответы:
1
Нет, Key Bindings/KeyListeners/любое чистое Java-приложение не будет работать, так как приложение должно быть сверху, чтобы они работали.
Вы ищете клавиатурный хук, а Java сама по себе не может этого сделать. Вам придется использовать либо JNI, JNA, которые связаны с собственным приложением, таким как приложение C/C++, либо еще проще связать Java с утилитой сценариев, такой как AutoIt (если Windows, или аналогичную утилиту, если нет). Обратите внимание, что все эти решения должны зависеть от платформы.
21.05.2012
Новые материалы
Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..
Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально
Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..
Частный метод Python: улучшение инкапсуляции и безопасности
Введение
Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..
Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования
Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..
Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv)
Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..
Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..
Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..