2016-11-21 40 views
1

当记事本中的文本通过Ctrl + C复制时,我想自动将内容放入textArea。我想知道如何听记事本的钥匙。是否有可能听记事本或任何其他程序的钥匙?Keylistener从另一个程序的Ctrl + C

+2

收听到剪贴板来代替。 http://stackoverflow.com/q/14226064/2855515 – brian

+0

全球可以听到“Ctrl + C”。它被称为键盘记录器,它绝对没有你想在你的Java应用程序中实现的东西。正如@brian已经指出的,更好的方法是听取系统剪贴板。 – Paul

回答

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中获得所有应用程序的所有keyevent。

所以你有2个可能的解决方案。

  1. 您只能通过剪贴板侦听器获取剪贴板的更改。 SO example

  2. 使用JNA,JNI,jintellitype,...的听系统的KeyEvents SO example