正如这个问题的答案中所述,可以设置一个时间线来检查系统剪贴板中是否有变化:
Set and use variables outside timeline in javafx 8
但是有没有更好的办法呢?例如,一个事件监听器?我搜索了 JavaFx 8 文档,但没有发现任何明显有用的信息。
首选使用 JavaFx 的解决方案,但欢迎所有答案。
最佳答案
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.input.Clipboard;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
final Clipboard systemClipboard = Clipboard.getSystemClipboard();
new com.sun.glass.ui.ClipboardAssistance(com.sun.glass.ui.Clipboard.SYSTEM) {
@Override
public void contentChanged() {
System.out.print("System clipboard content changed: ");
if ( systemClipboard.hasImage() ) {
System.out.println("image");
} else if ( systemClipboard.hasString() ) {
System.out.println("string");
} else if ( systemClipboard.hasFiles() ) {
System.out.println("files");
}
}
};
primaryStage.setScene(new Scene(new StackPane()));
primaryStage.show();
}
}
测试:
- 按键打印屏幕
- Ctrl+C 选择字符串
- Ctrl+c 选择文件
关于java - 使用 JavaFx 监听系统剪贴板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25098813/