我想做的是,当用户在任何程序(firefox、记事本、pdfReader 等)中复制文本时,我已经在运行的 java 应用程序应该得到通知并立即显示一个弹出窗口。
我认为为了能够做到这一点,我的 java 应用程序应该在系统剪贴板发生变化时被调用。
Java 可以吗,如果可以的话是哪个版本?我知道我们可以访问和操作系统剪贴板内容,但我的具体问题是关于调用 java 应用程序。当剪贴板内容改变时。
谢谢
最佳答案
我会天真地假装这是 JDIC 的工作,但 interwebz 告诉我真相。那么,让我稍微解释一下。
使用 Toolkit.getSystemClipboard()
,您可以访问 native 系统剪贴板。与任何 Java 对象一样,可以监听此剪贴板。准确的说,你可以调用Clipboard.addFlavorListener(...)
听FlavorEvents
.这些是什么 ? They're the metal kings ! ....不不不,我完全离题了。让我回来。因此,根据文档,FlavorEvent 表示
that available DataFlavors have changed in the Clipboard (the event source).
可能表示剪贴板内容已更改。但是,如果没有第一个原型(prototype),我不会直接进行下去。
编辑 AlexR 手指的原型(prototype)示例
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);
}
}
关于java - 当剪贴板内容在java之外发生变化时是否可以得到通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4802982/