如何使用Java将系统剪贴板内容粘贴到任意窗口
我想写一个有按钮的Java程序。当按下按钮时,它会将系统剪贴板的内容粘贴/删除到当前在任意可能非Java应用程序(如MS Word)中具有焦点的文本字段中。本质上,按钮操作必须以某种方式模拟CTRL-V(粘贴)操作的发送如何使用Java将系统剪贴板内容粘贴到任意窗口,java,clipboard,Java,Clipboard,我想写一个有按钮的Java程序。当按下按钮时,它会将系统剪贴板的内容粘贴/删除到当前在任意可能非Java应用程序(如MS Word)中具有焦点的文本字段中。本质上,按钮操作必须以某种方式模拟CTRL-V(粘贴)操作的发送 有人有什么建议吗?包java.awt.datatransfer似乎是一个解决方案。这是 从后一页,需要导入: import java.awt.datatransfer.*; import java.awt.Toolkit; 方法代码如下所示。解决方案是创建一个侦听器并将其添加
有人有什么建议吗?包
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() );