我想编写一个带有按钮的Java程序。当按下该按钮时,它会将系统剪贴板的内容粘贴/拖放到当前在任意(可能是非 Java)应用程序(例如 MS Word)中具有焦点的文本字段。本质上,按钮操作必须以某种方式模拟 CTRL-V(粘贴)操作的发送。
有没有人有什么建议?
套餐java.awt.datatransfer
似乎是一个解决方案,根据这篇文章 http://www.jguru.com/faq/view.jsp?EID=39779。这是另一篇文章 http://www.javapractices.com/topic/TopicAction.do?Id=82.
从后一页,需要导入:
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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)