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

时间:2011-06-16 18:47:21

标签: java clipboard

我想编写一个带有按钮的Java程序。按下按钮时,它会将系统剪贴板的内容粘贴/拖放到当前在任意非Java应用程序(例如MS Word)中具有焦点的文本字段中。基本上按钮动作必须模拟以某种方式发送CTRL-V(粘贴)动作。

有人有任何建议吗?

2 个答案:

答案 0 :(得分:1)

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;
}

答案 1 :(得分:0)

使用编辑器工具包提供的操作:

JButton paste = new JButton( new DefaultEditorKit.PasteAction() );