2017-04-20 14 views
1

ダブルクリックするとどこからでも単語をコピーしようとしています(MSワード、pdf、Javaコンポーネントからではなく)からクリップボードにコピーしようとしています。したがって、私はを使用して、選択した単語をダブルクリックしてクリップボードにコピーします。コピー後、単語が返されます。したがって、私はcopy_From_Originalcopy_From_ClipBoardという2つの方法を使用します。ダブルクリックで単語をクリップボードにコピー

問題は、私が単語をコピーすると、クリップボードの内容が現在コピーされていないという前の単語が表示されることです。

ある場合は、このプロセスを実行する別の方法は自由に言うことができます。

ありがとうございます。私の悪い英語を申し訳ありません。

public class copyWord { 

public static String copy_From_Original() { 
    try { 
     Robot robot = new Robot(); 
     robot.keyPress(KeyEvent.VK_CONTROL); 
     robot.keyPress(KeyEvent.VK_C); 
     robot.keyRelease(KeyEvent.VK_C); 
     robot.keyRelease(KeyEvent.VK_CONTROL); 
    } catch (AWTException ex) { 
     Logger.getLogger(copyWord.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    String word = copy_From_ClipBoard(); 
    return word; 
} 

private static String copy_From_ClipBoard() { 

    Toolkit toolkit = Toolkit.getDefaultToolkit(); 
    Clipboard clipboard = toolkit.getSystemClipboard(); 
    try { 
     String result = (String) clipboard.getData(DataFlavor.stringFlavor); 
     return result; 
    } catch (Exception e) { 
     System.out.println("ERROR"); 
     return null; 
    } 
} } 

答えて

1

ロボットには使用しないでください。どのタイプのコンポーネントにダブルクリックされたテキストが含まれているかは述べていませんが、JTextFieldまたはJTextAreaまたはJTextComponentの他のサブクラスの場合は、単にcopy()を呼び出すことができます。回答VGR用

String text = textField.getSelectedText(); 

Clipboard clipboard = textField.getToolkit().getSystemClipboard(); 
clipboard.setContents(new StringSelection(text), null); 
+0

ありがとう:それはAWTのTextFieldのか、TextAreaのだ場合

、あなたは場所にクリップボード自分の選択を使用することができます。選択されたテキストは、どのコンポーネントにも属しません。別の場所から来たものです。 MSの言葉のようなもの。だから、私はロボットを使うのです。 –

+0

それは挑戦を提示します。 Javaでは、他のアプリケーションのアクティビティを実際に監視または制御することはできません。 – VGR

+0

それは悪いです。私は選択された単語をコピーするだけの単語を選択する必要はありません。これを行うには、別のアプリケーションを制御または監視する必要はありません。ウィンドウの通常のコピー信号を送信し、クリップボードに取り込みます。ちょうどすべて。ロボットがそれを行います。 –

関連する問題