Я хочу автоматически помещать содержимое в текстовое поле, когда текст в блокноте копируется через Ctrl + C. Мне интересно, как слушать Ключи блокнота. Можно ли прослушивать клавиши «Блокнот» или любую другую программу?Keylistener для Ctrl + C из другой программы
1
A
ответ
2
Вот версия JavaFX из буфера обмена слушателей, упоминаемых в других ответах и комментариях:
import javafx.animation.AnimationTimer;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.input.Clipboard;
import javafx.stage.Stage;
public class SystemClipboardWatcher extends Application {
@Override
public void start(Stage primaryStage) {
TextArea clipboardView = new TextArea();
AnimationTimer timer = new AnimationTimer() {
Clipboard systemClipboard = Clipboard.getSystemClipboard();
@Override
public void handle(long timestamp) {
String content = systemClipboard.getString();
// do anything you need with this, e.g.:
clipboardView.setText(content);
}
};
timer.start();
primaryStage.setScene(new Scene(clipboardView, 600, 600));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
0
Нет, невозможно получить все ключевые события всего приложения в java.
У вас есть 2 возможных решения.
Вы получаете только изменения в буфере обмена с помощью буфера обмена-слушателя. SO example
Использование ЮНА, JNI, jintellitype, ... слушать системообразующий keyevents SO example
0
Это возможно, но очень плохая практика кодирования. Если вы все еще хотите это сделать: https://github.com/kwhat/jnativehook.
Лучшей идеей было бы следить за изменениями в буфере обмена.
Слушайте в буфер обмена вместо. http://stackoverflow.com/q/14226064/2855515 – brian
Возможно прослушивание 'Ctrl + C' по всему миру. Он называется кейлоггером, и в вашем java-приложении определенно ничего не нужно реализовать. Как уже отмечал @brian, лучшим подходом является прослушивание системного буфера обмена. – Paul