簡體   English   中英

如何使用Java將系統剪貼板內容粘貼到任意窗口

[英]How to paste from system clipboard content to an arbitrary window using Java

我想編寫一個帶有按鈕的Java程序。 當按下按鈕時,它將系統剪貼板的內容粘貼/拖放到當前在任意(可能是非Java)應用程序(例如MS Word)中具有焦點的文本字段。 本質上,按鈕動作必須以某種方式模擬CTRL-V(粘貼)動作的發送。

有沒有人有什么建議?

根據本文的介紹 ,包java.awt.datatransfer似乎是一個解決方案。 這是另一篇文章

在后一頁中,所需的導入:

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

方法代碼如下。 解決方案是創建一個偵聽器並將其添加到按鈕。 偵聽器應僅獲取剪貼板的內容,並將其插入所需的任何組件。

public void setClipboardContents( String aString ){
  StringSelection stringSelection = new StringSelection( aString );
  Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
  clipboard.setContents( stringSelection, this );
}

public String getClipboardContents() {
  String result = "";
  Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
  //odd: the Object param of getContents is not currently used
  Transferable contents = clipboard.getContents(null);
  boolean hasTransferableText =
    (contents != null) &&
    contents.isDataFlavorSupported(DataFlavor.stringFlavor)
  ;
  if ( hasTransferableText ) {
    try {
      result = (String)contents.getTransferData(DataFlavor.stringFlavor);
    }
    catch (UnsupportedFlavorException ex){
      //highly unlikely since we are using a standard DataFlavor
      System.out.println(ex);
      ex.printStackTrace();
    }
    catch (IOException ex) {
      System.out.println(ex);
      ex.printStackTrace();
    }
  }
  return result;
}

使用編輯器工具包提供的操作:

JButton paste = new JButton( new DefaultEditorKit.PasteAction() );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM