如何拦截剪贴板操作并将它们添加到 JList 中?

发布于 2024-12-05 02:39:33 字数 336 浏览 1 评论 0原文

每当按下 Ctrl+C 时,我想将剪贴板内容作为元素添加到 JList 中。基本上,我希望在按下 Ctrl+C 时执行下面的代码。

我该怎么做?

current=getClipboardContents();
model.addElement(current);

current 是 Clip 类中的 StringmodelJList 的默认模型

Whenever Ctrl+C is pressed, I would like to add the clipboard contents to a JList as an element. Basically, I want the code below to execute when Ctrl+C is pressed.

How can I do this?

current=getClipboardContents();
model.addElement(current);

current is a String in Clip class and model is the default model for JList

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

有木有妳兜一样 2024-12-12 02:39:33

您可能会为此使用按键绑定

KeyStroke 的操作类似于:

Transferable t = c.getContents( null );

if ( t.isDataFlavorSupported(DataFlavor.stringFlavor) )
{
    Object o = t.getTransferData( DataFlavor.stringFlavor );
    String data = (String)t.getTransferData( DataFlavor.stringFlavor );
}

是的,我正在不断读取系统剪贴板

这听起来不是一个很好的设计。如果在复制内容并将其添加到 JList 之前剪贴板中的某些内容被替换怎么办?

无论如何,您已经获得了从剪贴板复制文本的代码。我将使用计时器来安排轮询,以便在 EDT 上完成对 ListModel 的更新。

You would probably use Key Bindings for this.

The Action for the KeyStroke would look something like:

Transferable t = c.getContents( null );

if ( t.isDataFlavorSupported(DataFlavor.stringFlavor) )
{
    Object o = t.getTransferData( DataFlavor.stringFlavor );
    String data = (String)t.getTransferData( DataFlavor.stringFlavor );
}

yes i m continuously reading the system clipboard

Doesn't sound like a very good design. What if something gets replaced in the clipboard before you copy the contents and add it to your JList?

Anyway you've already been given code to copy text from the clipboard. I would use a Timer to schedule the polling so that the update to the ListModel is done on the EDT.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文