我想編寫一個帶有按鈕的Java程序。按下按鈕時,它將系統剪貼板的內容粘貼到當前具有焦點的文本字段中,該文本字段位於任意的,可能不是非Java的應用程序(如MS Word)中。本質上,按鈕動作必須模擬CTRL-V(粘貼)動作的發送。如何使用Java從系統剪貼板內容粘貼到任意窗口
有沒有人有任何建議?
我想編寫一個帶有按鈕的Java程序。按下按鈕時,它將系統剪貼板的內容粘貼到當前具有焦點的文本字段中,該文本字段位於任意的,可能不是非Java的應用程序(如MS Word)中。本質上,按鈕動作必須模擬CTRL-V(粘貼)動作的發送。如何使用Java從系統剪貼板內容粘貼到任意窗口
有沒有人有任何建議?
包java.awt.datatransfer
似乎是一個解決方案,according to this article。這裏是another article。
從後者頁面,所需的進口:
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());