2010-08-28 31 views
58

Desidero impostare gli appunti dell'utente su una stringa in un'applicazione console Java. Qualche idea?Copia negli appunti in Java

+0

Ho provato a utilizzare AWT senza alcun risultato. – clone1018

+1

quindi mostra cosa hai provato e dicci cosa esattamente non ha funzionato – unbeli

risposta

109

Utilizzare Toolkit per ottenere system clipboard. Creare un StringSelection con la stringa e aggiungerlo negli Appunti.

semplificato:

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

Ecco un semplice SSCCE per raggiungere questo obiettivo:

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

Se siete su Linux e l'utilizzo di OpenJDK, non funzionerà. È necessario utilizzare Sun JDK su Linux affinché funzioni.

+3

Perché? hai più informazioni a riguardo? Un bug report? Potresti ottenere una certa reputazione;) http://stackoverflow.com/q/14242719/194609 – Karussell

+0

Che cosa non funzionerà? Questa è una risposta a una delle altre risposte? –

-4

Questo lavoro come un campione;

String get= text.getText(); 
    StringSelection selec= new StringSelection(get); 
    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); 
    clipboard.setContents(selec, selec); 
+5

Questo è esattamente lo stesso che Carlos ha scritto 5 anni prima – fishinear

1

In Linux con 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); 
} 
+0

Cosa succede se la stringa contiene caratteri di fine riga? Funzionerà allora? –

1

Per chiunque ancora inciampare su questo post cercando il modo JavaFX per raggiungere questo obiettivo, qui si va:

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

Per ulteriori informazioni, read the documentation.

Problemi correlati