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

标签 java clipboard

我想编写一个带有按钮的 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/

相关文章:

java - 在 Java 中使用 FUSE 库;尝试复制 hello.c 示例

c# - 将格式化文本复制到剪贴板

Python3模块将字符串复制到系统剪贴板

java - "this"在这个程序中是什么意思?

java - 检查 T 的实例并有条件地调用相应的构造函数

javascript - 使用 Javascript 访问剪贴板 - 没有 Flash?

android - 在 Android 中的 Textview 上剪切复制粘贴

javascript - 如何检测剪贴板是否可以在 Firefox 中访问?

java - Struts 2 Spring 3 集成,未找到操作类

java - 扫描仪 nextInt() 和 hasNextInt() 问题