[英]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.