2011-07-15 17 views

答えて

200

これは私のために動作し、非常に簡単です:

はこれらをインポートします。その後、

import java.awt.datatransfer.*; 
import java.awt.Toolkit; 

そして、あなたがクリップボードを変更したいのですがどこのコードスニペットを置く:

String myString = "This text will be copied into clipboard when running this code!"; 
StringSelection stringSelection = new StringSelection(myString); 
Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard(); 
clpbrd.setContents(stringSelection, null); 

私はちょうどそれを試して、それは動作します。しかし、いくつかの「良い練習」の欠陥があるかどうかは分かりませんが、それはあなたの問題を解決します!

LHは

+1

私たちもhttp://stackoverflow.com/questions/3591945/copying-to-clipboard-in-java –

+0

@AquariusPowerへの第二引数として 'stringSelection'を渡すことを所有者とsetContentsを()と思われることができます'setContents(..)'も、リンクされた答えのように 'ClipboardOwner'にすることは意味がありません:[source](http://grepcode.com/file/repository.grepcode.com/java /root/jdk/openjdk/8u40-b25/java/awt/datatransfer/StringSelection.java#StringSelection.lostOwnership%28java.awt.datatransfer.Clipboard%2Cjava.awt.datatransfer.Transferable%29)、「ClipboardOwner」の唯一のメソッド'つまり、' lostOwnership(..) 'は空です。したがって、第2引数は完全にオプションのコールバックのようです。 –

+0

@EvgeniSergeev StringSelectionを拡張すると便利です:) –

10

次のクラスを使用すると、クリップボードへ/から文字列をコピー/ペーストすることができます。

import java.awt.AWTException; 
import java.awt.HeadlessException; 
import java.awt.Robot; 
import java.awt.Toolkit; 
import java.awt.datatransfer.Clipboard; 
import java.awt.datatransfer.DataFlavor; 
import java.awt.datatransfer.StringSelection; 
import java.awt.datatransfer.UnsupportedFlavorException; 
import java.awt.event.KeyEvent; 
import java.io.IOException; 

public class SystemClipboard 
{ 
    public static void copy(String text) 
    { 
     Clipboard clipboard = getSystemClipboard(); 

     clipboard.setContents(new StringSelection(text), null); 
    } 

    public static void paste() throws AWTException 
    { 
     Robot robot = new Robot(); 

     robot.keyPress(KeyEvent.VK_CONTROL); 
     robot.keyPress(KeyEvent.VK_V); 
     robot.keyRelease(KeyEvent.VK_CONTROL); 
     robot.keyRelease(KeyEvent.VK_V); 
    } 

    public static String get() throws Exception 
    { 
     Clipboard systemClipboard = getSystemClipboard(); 
     DataFlavor dataFlavor = DataFlavor.stringFlavor; 

     if (systemClipboard.isDataFlavorAvailable(dataFlavor)) 
     { 
      Object text = systemClipboard.getData(dataFlavor); 
      return (String) text; 
     } 

     return null; 
    } 

    private static Clipboard getSystemClipboard() 
    { 
     Toolkit defaultToolkit = Toolkit.getDefaultToolkit(); 
     Clipboard systemClipboard = defaultToolkit.getSystemClipboard(); 

     return systemClipboard; 
    } 
} 
+1

特別なので、OS Xに貼り付けるためのロジックが必要になることがあります。 –

3

これは装飾的な方法で書か受け入れ答えです:

Toolkit.getDefaultToolkit() 
     .getSystemClipboard() 
     .setContents(
       new StringSelection(txtMySQLScript.getText()), 
       null 
     ); 
1

あなたはtxtboxからの入力を取得したり、何かがそのテキストで生成することができますので、私はそれを行うためのより良い方法を発見しましたボタンをクリックしてそれを行うことができるようにします。クリップボードにコピーするコードは次のとおりです(2017/2018)!

import java.awt.datatransfer.*; 
import java.awt.Toolkit; 

private void /* Action performed when the copy to clipboard button is clicked */ { 
    String ctc = txtCommand.getText().toString(); 
    StringSelection stringSelection = new StringSelection(ctc); 
    Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard(); 
    clpbrd.setContents(stringSelection, null); 
} 

// txtCommand is the variable of a text box 
+1

これが役立つことを願っています! – ElementCodez

+0

「2017/2018」とはどういう意味ですか?特定のバージョンのJava?どのバージョン*を使用しましたか? –

関連する問題