大家好我想写一个简单的程序(仅用于学习目的),它监视系统剪贴板数据并序列化其内容。
例如,只要用户将某些数据复制到系统剪贴板(Ctrl-C etc ),我的程序就会收到“通知”并序列化剪贴板数据到文件中。
我已经研究过java.awt.datatransfer但是,无论何时将数据复制到剪贴板,我都无法将回调挂钩到系统事件上。
我们如何收到有关系统剪贴板事件的通知?
如果该解决方案仅适用于Windows,则可以,但操作系统互操作性当然是加分。
答案 0 :(得分:3)
尝试通过调用FlavorListener
将Clipboard.addFlavorListener
附加到Clipboard
。
请参阅此SO问题,其中包含代码示例和已接受的答案:Is it possible to be informed when clipboard content changes outside of java
<强>更新强>
这不起作用 - 正如卡米克所指出的那样,只有在DataFlavor
改变时才会发射。看来有两种选择:
收听WindowEvent
s,当您的应用获得焦点时,请检查剪贴板的内容。如果您不要求您的应用程序在后台执行剪贴板内容,这将是合适的,换句话说,用户必须使用剪贴板上的内容切换到您的应用程序。
关注this example并定期轮询剪贴板。显然你会忽略特定于Mac的东西(以及可怜的单例实现),但这个想法是一样的。