webentwicklung-frage-antwort-db.com.de

Kopieren in die Zwischenablage in Java

Ich möchte die Zwischenablage des Benutzers auf eine Zeichenfolge in einer Java Konsolenanwendung festlegen. Irgendwelche Ideen?

69
clone1018

Verwenden Sie Toolkit , um die System-Zwischenablage abzurufen. Erstellen Sie ein StringSelection mit dem String und fügen Sie es dem Clipboard hinzu.

Vereinfacht:

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

Hier ist ein einfaches SSCCE , um dies zu erreichen:

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

Wenn Sie unter Linux arbeiten und OpenJDK verwenden, funktioniert dies nicht. Sie müssen das Sun JDK unter Linux verwenden, damit es funktioniert.

5
rado

Wer immer noch auf diesen Beitrag stößt und nach dem JavaFX Weg sucht, um dies zu erreichen, hier ist es:

ClipboardContent content = new ClipboardContent();
content.putString("Some text");
content.putHtml("<b>Bold</b> text");
Clipboard.getSystemClipboard().setContent(content);

Weitere Informationen finden Sie in der Dokumentation .

2
Xerus

Unter Linux mit 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);
}