java - 使用 JavaFx 监听系统剪贴板

标签 java javafx clipboard javafx-8

正如这个问题的答案中所述,可以设置一个时间线来检查系统剪贴板中是否有变化:

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/

相关文章:

java 将 HBox 对齐到左下角

c++ - 使用 OLE 剪贴板和经典剪贴板时出现意外/奇怪的结果,还是我错过了什么?

java - Java Spring中的ActiveMQ数据持久化问题

java - 淡出 JButton 直到选择 JCheckbox

JavaFX ControlsFX 自动完成 : How to get popup result into a new ObservableList

linux - 在 Gnome (linux) 中突出显示文本时如何禁用自动复制到剪贴板?

ios - UIimage 到 NSData 返回 Null

java - Java 的 for-each 循环 init 中抑制警告?

c# - 什么时候(不)两个具有相同内容的字符串共享相同的内存?

JavaFX - 键盘事件不处理