有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (2) 个答案

  1. # 1 楼答案

    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键选择所选文件
  2. # 2 楼答案

    不,没有更好的办法了。当剪贴板内容发生变化时(特别是当它来自Java应用程序外部时),不会发送任何事件,因此只有轮询方法是合适的