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

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

我认为为了能够做到这一点,只要系统剪贴板发生变化,就应该调用我的java应用程序。

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

谢谢

我天真地假装它是JDIC的工作,但是interwebz告诉了我实情。 所以,让我解释一下。

使用Toolkit.getSystemClipboard() ,您可以访问本机系统剪贴板。 与任何Java对象一样,可以监听此剪贴板。 确切地说,您可以调用Clipboard.addFlavorListener(...)来收听FlavorEvents 。 这些是什么 ? 他们是金属国王! ….不,不,我完全彻底离题。 让我回来吧。 因此,根据文件,FlavorEvent表明了这一点

可用的DataFlavor在剪贴板(事件源)中已更改。

可能意味着剪贴板内容已更改。 但是,如果没有第一个原型,我就不会直接使用它。

编辑来自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); } }