用Java复制到剪贴板

时间:2010-08-28 18:32:25

标签: java string clipboard awt

我想将用户的剪贴板设置为Java控制台应用程序中的字符串。有什么想法吗?

5 个答案:

答案 0 :(得分:126)

使用Toolkit获取system clipboard。使用String创建StringSelection并将其添加到Clipboard

简化为:

StringSelection selection = new StringSelection(theString);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selection, selection);

答案 1 :(得分:32)

这是一个简单的SSCCE来实现这个目标:

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

class ClipboardTest
{
    public static void main(String[] args)
        throws UnsupportedFlavorException, IOException
    {
        Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
        StringSelection testData;

        //  Add some test data

        if (args.length > 0)
            testData = new StringSelection( args[0] );
        else
            testData = new StringSelection( "Test Data" );

        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 );
        }

        System.exit(0);
    }
}

答案 2 :(得分:5)

如果您使用的是Linux并使用OpenJDK,则无法使用。您必须在Linux上使用Sun JDK才能使用它。

答案 3 :(得分:2)

对于任何仍然在寻找JavaFX方法来完成此任务的帖子仍然磕磕绊绊的人,请点击此处:

wp_insert_post

有关详细信息,请read the documentation

答案 4 :(得分:1)

在Linux中使用xclip:

Runtime run = Runtime.getRuntime();
Process p = null;
String str = "hello";
try {
        p = run.exec(new String[]{"sh", "-c", "echo " + str + " | xclip -selection clipboard"});
}
catch (Exception e) {
    System.out.println(e);
}