gpt4 book ai didi

java - 当剪贴板内容在java之外发生变化时是否可以得到通知

转载 作者:太空狗 更新时间:2023-10-29 22:57:40 25 4
gpt4 key购买 nike

我想做的是,当用户在任何程序(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com