Java剪贴簿所有者的用途?

Java剪贴簿所有者的用途?,java,clipboard,Java,Clipboard,我编写了一个Java应用程序,将字符串复制到系统剪贴板。构造函数使用 Clipboard.setContents(Transferable contents, ClipboardOwner owner) 我让它工作得很好,但我不确定剪贴簿所有者是做什么的?查看JavaAPI并不能提供太多信息 奇怪的是,即使传递ClippboardOwner=null也能起作用。所以我不确定这到底是什么意思?有人知道吗?当下一个人将某个东西放入剪贴板时,你交给剪贴板的所有者将被告知它们已不在剪贴板上。只有一

我编写了一个Java应用程序,将字符串复制到系统剪贴板。构造函数使用

Clipboard.setContents(Transferable contents, ClipboardOwner owner)

我让它工作得很好,但我不确定剪贴簿所有者是做什么的?查看JavaAPI并不能提供太多信息


奇怪的是,即使传递ClippboardOwner=null也能起作用。所以我不确定这到底是什么意思?有人知道吗?

当下一个人将某个东西放入剪贴板时,你交给剪贴板的所有者将被告知它们已不在剪贴板上。只有一个已知的实现,根据定义它是空的。因此,它看起来像是一条残留的尾巴,只是有点悬在外面。

如果您的应用程序或它的一个组件以适当的方式实现了
ClipboardOwner
接口,它可以向您显示用户从另一个应用程序或您自己的应用程序的另一个组件复制了一些数据到系统剪贴板。
.

一个示例用例是终端窗口实现,其中任何选择都会自动复制到剪贴板。
lostOwnership(..)
回调可用于取消选择,以便用户知道当且仅当选择当前在剪贴板上时才会显示该选择。例如,在
rxvt
中使用了这个成语(但它不是用Java编写的)。

+1个好问题。也许Oracle/Java已经为未来做好了准备,但我经常想知道这一点——我认为这是因为JVM中可以有许多本地剪贴板,但是@Sign似乎有不同的想法?!如果标准API没有实现,没有什么能阻止你自己实现。我认为std库不提供任何其他实现的原因是应用程序通常需要不同的行为。事件侦听接口通常是这种情况,例如AncestorListener在std库中没有实现。它的提供使得std库可以与特定于应用程序的代码交互。在
ClipboardOwner
界面中只有一个方法,即
lostOwnership(..)
,它被
StringSelection
保留为空。换句话说,ClipboardOwner用于注册所有权丢失事件的回调,即对剪贴板的一些更改。这可能是监视剪贴板复制事件的可靠方法。