有 Java 编程相关的问题?

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

swing当剪贴板内容在java之外发生更改时,是否可以得到通知

我想做的事情是,当用户在任何程序(firefox、记事本、pdfReader等)中复制文本时,我已经运行的java应用程序将被通知,并立即显示一个弹出窗口

我认为,为了能够做到这一点,每当系统剪贴板发生更改时,都应该调用我的java应用程序

java有可能做到这一点吗?如果有,在哪个版本中?我知道我们可以访问和操作系统剪贴板内容,但我的具体问题是调用java应用程序。当剪贴板内容更改时

谢谢


共 (1) 个答案

  1. # 1 楼答案

    我会天真地假装这是JDIC的工作,但interwebz告诉了我真相。让我解释一下

    使用^{},可以访问本机系统剪贴板。和任何Java对象一样,这个剪贴板也可以被监听。准确地说,你可以打电话给^{}^{}。它们是什么They're the metal kings !。。。。不,不,我完全离题了。让我回来。根据文件,一个事件表明

    that available DataFlavors have changed in the Clipboard (the event source).

    这意味着剪贴板内容已更改。然而,如果没有第一个原型,我不会直接进行

    编辑来自AlexR手指的原型示例

    import java.awt.Toolkit;
    import java.awt.datatransfer.FlavorEvent;
    import java.awt.datatransfer.FlavorListener;
    
    public class Main {
        public static void main(String[] args) throws Exception { 
            Toolkit.getDefaultToolkit().getSystemClipboard().addFlavorListener(new FlavorListener() { 
                @Override 
                public void flavorsChanged(FlavorEvent e) { 
                    System.out.println("changed!!! " + e.getSource() + " " + e.toString()); 
                } 
            }); 
            Thread.sleep(100000L); 
        }
    }