我想编写一个带有按钮的 Java 程序。当按下按钮时,它会将系统剪贴板的内容粘贴/拖放到当前在任意可能非 Java 应用程序(例如 MS Word)中具有焦点的文本字段中。本质上,按钮操作必须以某种方式模拟发送 CTRL-V(粘贴)操作。
有人有什么建议吗?
最佳答案
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;
}
关于java - 如何使用 Java 将系统剪贴板内容粘贴到任意窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6376975/