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

2024-06-23

我想编写一个带有按钮的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(使用前将#替换为@)

如何使用 Java 将系统剪贴板内容粘贴到任意窗口 的相关文章

随机推荐

  • Amazon Lex 中的响应卡按钮中的超链接

    我正在尝试在 amazon lex 中制作一张响应卡 以发出一张响应卡 其中有一个可通往另一个网站的按钮 下面是我在 aws lambda python 中使用的代码 我已经在 Facebook Messenger 上发布了聊天机器人 但每
  • 如何在 ASP.NET Core Web API 中启用 BSON 序列化?

    我是 ASP NET Core 和一般网络编程的新手 我刚刚成功完成了我的第一个基于 RESTfull 设计原则的 ASP NET Core Web API 它当前使用 JSON 序列化来发送响应 Visual Studio 默认值 但我想
  • Pandas 绘制 Timedelta 系列,在选定时间带有垂直线

    我有一个与此非常相似的问题 Pandas 绘制时间序列 在选定日期处带有垂直线 https stackoverflow com questions 21488085 pandas graphing a timeseries with ver
  • EF CF:带有附加信息的多对多关系

    我们有遗留数据库 并将新对象和道具映射到旧表和列 到目前为止 一切都很好 我们有已成功映射的多对多关系 中间表包含附加数据 当我们尝试将中间表映射到对象时 我们会得到映射已定义的异常 如果我们从关系的任何一侧删除映射 我们都会收到表丢失的错
  • NSCollectionView 拖放:大多数委托事件未被调用

    我有一个 NSCollectionView 绑定到一个 NSArrayController 我想让拖放工作 所以我创建一个委托并实现方法 BOOL collectionView NSCollectionView collectionView
  • 允许 DialogFragment 的外部触摸

    我有一个Fragment在我的应用程序中显示DialogFragment 我在片段中有一个关闭对话框的按钮 但是 当我显示dialogFragment时 对话框外部的触摸不起作用 并且我无法单击对话框片段外部的按钮 如何允许 DialogF
  • 如何使用符合“Hashable”协议的 ForEach

    您好 我有一个关于确认协议 Hashable 的问题 实在是太烂了 这是我的模型 struct Page Decodable Identifiable var id String var name String var thumbnail
  • Ember-data和MongoDB,如何处理_id

    我正在将 ember data 与 Rails 和 MongoDB 一起使用 并且在 MongoDB 中的 id 字段中存储 ID 的方式遇到问题 Ember data 将使用 id 作为 ID 的默认字段 所以我尝试像这样覆盖它 App
  • 为什么 J2ME 不能创建递归目录?

    我想创建recursive目录 例如 Connector open file Phone folder 1 folder 2 Connector READ WRITE 问题是两个folders 这里的folder 1和folder 2没有明
  • 在库中实现 Javascript 链接的最佳方法

    我正在创建一个 JavaScript 库 我一直在尝试实现链接 0 我首先想到的是 function V p return add function addend return V p addend sub function subtra
  • 将 Protobuf 消息持久保存到数据库

    保存使用 protobuf3 定义的数据的正确方法是什么 我使用 golang 和 Java 两者都支持 ORM 在 java 中使用 Hibernate 在 golang 中使用 gorm 这两个地方我都需要将生成的代码转换为相应的实体模
  • 合并 JSON 对象而不使用新键

    如何合并两个 JSON 对象但不包含第一个对象中不存在的属性 Input var obj1 x y a b var obj2 x 1 y a 1 b 2 c 3 z Output obj1 x 1 y a 1 b 2 附 对象有一个方法叫做
  • python2.6 中应该使用 OrderedDict 的哪个实现?

    正如你们中的一些人可能知道的那样 在 python2 7 3 2 中我们将得到 OrderedDictPEP372 http www python org dev peps pep 0372 然而 PEP 存在的原因之一是因为每个人都做了自
  • Pascal - 在定义之前使用过程

    我有一段代码 非常简化 如下所示 program helloworld a integer procedure alpha begin writeln This is procedure alpha beta end procedure b
  • Laravel 作业/通知失败

    我正在尝试在我的网站上设置一个联系表单 当有人单击 发送 时 就会运行一个作业 并在该作业中向所有管理员用户发送通知 不过 我在失败的作业表中不断收到此错误 Illuminate Database Eloquent ModelNotFoun
  • Qt,颜色选择器对话框?

    Qt 是否有如下所示的颜色选择器对话框 它还需要有一个 OnColorChanged 信号 当选定的颜色发生变化时会调用该信号 我想在他们改变颜色时提供实时预览 这就是原因 使用谷歌我只能找到这个 它是一个圆边上的三角形 我个人认为它看起来
  • Laravel csrf 令牌与 ajax POST 请求不匹配

    我正在尝试通过ajax从数据库中删除数据 HTML foreach a as lis some code a href class delteadd Delete a click action perform on this link en
  • 如何避免 numpy.random.choice 中的舍入错误?

    假设 x 1 x 2 x n 是 n 个对象 并且想要选择其中一个 以便选择 x i 的概率与某个数字 u i 成正比 Numpy 为此提供了一个函数 x u np array x 1 x 2 x n np array u 1 u n np
  • 在同一站点上使用基本身份验证和表单身份验证

    谁能告诉我 是否可以在我的网站上同时使用基本身份验证和表单身份验证 而两者不会相互干扰 我有一个新网站 出于批准目的 我只希望某些人看到该网站 该网站有一个使用表单身份验证的会员区域 现在当任何人在通过基本身份验证后进入该网站时 他们都会被
  • 如何使用 Java 将系统剪贴板内容粘贴到任意窗口

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