如何使用Java将系统剪贴板内容粘贴到任意窗口

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

我想写一个有按钮的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() );