我想要做的是当用户在任何程序(firefox,notepad,pdfReader等)中复制文本时,我的已经运行的java应用程序将被通知并立即显示弹出窗口。
我认为为了能够做到这一点,只要系统剪贴板发生变化,就应该调用我的java应用程序。
这可能与java,如果是这样在哪个版本?我知道我们可以访问和操作系统剪贴板内容,但我的具体问题是关于调用java应用程序。当剪贴板内容发生变化时。
由于
答案 0 :(得分:9)
我天真地假装它是JDIC的工作,但是interwebz告诉了我实情。所以,让我解释一下。
使用Toolkit.getSystemClipboard()
,您可以访问本机系统剪贴板。与任何Java对象一样,可以监听此剪贴板。确切地说,您可以拨打Clipboard.addFlavorListener(...)
来收听FlavorEvents
。这些是什么 ? They're the metal kings ! ......不,不,我完全彻底地离题了。让我回来吧。因此,根据文档,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);
}
}