我们如何收到有关系统剪贴板事件的通知?

时间:2011-12-29 06:34:47

标签: java system

大家好我想写一个简单的程序(仅用于学习目的),它监视系统剪贴板数据并序列化其内容。

例如,只要用户将某些数据复制到系统剪贴板(Ctrl-C etc ),我的程序就会收到“通知”并序列化剪贴板数据到文件中。

我已经研究过java.awt.datatransfer但是,无论何时将数据复制到剪贴板,我都无法将回调挂钩到系统事件上。

我们如何收到有关系统剪贴板事件的通知?

如果该解决方案仅适用于Windows,则可以,但操作系统互操作性当然是加分。

1 个答案:

答案 0 :(得分:3)

尝试通过调用FlavorListenerClipboard.addFlavorListener附加到Clipboard

请参阅此SO问题,其中包含代码示例和已接受的答案:Is it possible to be informed when clipboard content changes outside of java

<强>更新

这不起作用 - 正如卡米克所指出的那样,只有在DataFlavor改变时才会发射。看来有两种选择:

  1. 收听WindowEvent s,当您的应用获得焦点时,请检查剪贴板的内容。如果您不要求您的应用程序在后台执行剪贴板内容,这将是合适的,换句话说,用户必须使用剪贴板上的内容切换到您的应用程序。

  2. 关注this example并定期轮询剪贴板。显然你会忽略特定于Mac的东西(以及可怜的单例实现),但这个想法是一样的。