2010-08-28 13 views
58

में क्लिपबोर्ड पर कॉपी करना मैं जावा कंसोल एप्लिकेशन में एक स्ट्रिंग पर उपयोगकर्ता का क्लिपबोर्ड सेट करना चाहता हूं। कोई विचार?जावा

+0

मैंने एडब्ल्यूटी का उपयोग करने का कोई फायदा नहीं लिया। – clone1018

+1

फिर दिखाएं कि आपने क्या प्रयास किया है और हमें बताएं कि वास्तव में – unbeli

उत्तर

109

system clipboard प्राप्त करने के लिए Toolkit का उपयोग करें। स्ट्रिंग के साथ StringSelection बनाएं और इसे क्लिपबोर्ड पर जोड़ें।

सरलीकृत:

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

यहाँ एक सरल 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); 
    } 
} 
3

आप लिनक्स पर और OpenJDK का उपयोग कर रहे हैं, यह काम नहीं करेगा। काम करने के लिए आपको लिनक्स पर सूर्य जेडीके का उपयोग करना होगा।

+3

क्यों काम नहीं किया? क्या आपके पास इसके बारे में अधिक जानकारी है? एक बग रिपोर्ट? आप कुछ प्रतिष्ठा प्राप्त कर सकते हैं;) http://stackoverflow.com/q/14242719/194609 – Karussell

+0

क्या काम नहीं करेगा? क्या यह अन्य उत्तरों में से एक का जवाब है? –

-4

यह काम एक चैंप की तरह;

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

यह बिल्कुल वैसा ही है जैसा कि कार्लोस ने 5 साल पहले – fishinear

1

लिनक्स में 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

लिखा था यदि स्ट्रिंग में अंतराल के वर्ण हैं? क्या यह तब काम करेगा? –

1

किसी को अब भी इस पोस्ट JavaFX रास्ता के लिए खोज पर ठोकर के लिए यह पूरा करने के, ये रहा:

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

अधिक जानकारी के लिए read the documentation