gpt4 book ai didi

java - 使用默认编辑器套件将文本放在系统剪贴板上

转载 作者:行者123 更新时间:2023-12-01 14:52:11 25 4
gpt4 key购买 nike

我已经尝试了一个月来在我的程序中可靠地设置系统剪贴板。目前它的工作次数约为 95/100 次。但我继续寻找。

昨天我发现了这个the Java DefaultEditorKit.copyAction看到已经写了一些可以实现我想要的功能的东西,我心里有点死了。

虽然问题是这是对话框的“操作”?

如何将要复制的文本发布到剪贴板?我不想将此“操作”附加到我的应用程序中的任何按钮/组件。我希望能够做到

DefaultEditorKit.copyAction("Put this on Clipboard");

但是这是未定义的。我不确定如何触发此“操作”并为其提供一些文本以供使用?

编辑:这是我的代码,导致异常。

public void setClip2(String arg)
{
while(true)
{
try
{
sysClip.setContents(new StringSelection(arg), null);
}
catch(Exception e)
{
try {Thread.sleep(20);} catch (InterruptedException e1) {}
continue;
}
break;
}
return;
}

最佳答案

I just wondered if there was a way to reliably set the clipboard. (this method fails if you do not wait long enough trying to set it, which is usually about 1-2 seconds

不知道为什么你必须等待设置剪贴板的内容。

该程序每 200 毫秒刷新一次剪贴板没有任何问题。即每次按预期显示时数字都会加 1:

import java.awt.*;
import java.awt.datatransfer.*;
import java.io.*;

class ClipboardLoopTest
{
public static void main(String[] args)
throws InterruptedException
{
for (int i = 0; i < 100; i++)
{
// add data to clipboard

try
{
Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection testData;
testData = new StringSelection( "Test: " + i );
c.setContents(testData, testData);

// Get clipboard contents, as a String

Transferable t = c.getContents( null );

if ( t.isDataFlavorSupported(DataFlavor.stringFlavor) )
{
Object o = t.getTransferData( DataFlavor.stringFlavor );
String data = (String)t.getTransferData( DataFlavor.stringFlavor );
System.out.println( "Clipboard contents: " + data );
}
}
catch(Exception e)
{
System.out.println(e);
}

Thread.sleep(200);
}

System.exit(0);
}
}

我在 Windows 7 上使用 JDK 7。

也许您可以发布您的 SSCCE 来演示该问题。

关于java - 使用默认编辑器套件将文本放在系统剪贴板上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14731913/

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