Copier dans le presse-papier en Java

Je souhaite définir le presse-papiers de l’utilisateur sur une chaîne dans une application de console Java. Des idées?

Utilisez le Toolkit pour obtenir le presse-papier du système . Créez un SsortingngSelection avec la Ssortingng et ajoutez-le au ClipboardClipboard .

Simplifié:

 SsortingngSelection selection = new SsortingngSelection(theSsortingng); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(selection, selection); 

Voici un simple SSCCE pour accomplir ceci:

 import java.awt.*; import java.awt.datatransfer.*; import java.io.*; class ClipboardTest { public static void main(Ssortingng[] args) throws UnsupportedFlavorException, IOException { Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard(); SsortingngSelection testData; // Add some test data if (args.length > 0) testData = new SsortingngSelection( args[0] ); else testData = new SsortingngSelection( "Test Data" ); c.setContents(testData, testData); // Get clipboard contents, as a Ssortingng Transferable t = c.getContents( null ); if ( t.isDataFlavorSupported(DataFlavor.ssortingngFlavor) ) { Object o = t.getTransferData( DataFlavor.ssortingngFlavor ); Ssortingng data = (Ssortingng)t.getTransferData( DataFlavor.ssortingngFlavor ); System.out.println( "Clipboard contents: " + data ); } System.exit(0); } } 

Si vous utilisez Linux et utilisez OpenJDK, cela ne fonctionnera pas. Vous devez utiliser Sun JDK sous Linux pour que cela fonctionne.

Pour quiconque est encore en train de tomber sur ce post en cherchant le moyen JavaFX pour y parvenir, voici:

 ClipboardContent content = new ClipboardContent(); content.putSsortingng("Some text"); content.putHtml("Bold text"); Clipboard.getSystemClipboard().setContent(content); 

Pour plus d’informations, lisez la documentation .

Sous Linux avec xclip:

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

Cela fonctionne comme un champion;

  Ssortingng get = text.getText(); SsortingngSelection selec = new SsortingngSelection(get); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(selec, selec);