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

本文介绍如何使用Java编写一个带有按钮的程序,实现按下按钮时将系统剪贴板内容复制到活动文本框,通过`java.awt.datatransfer`包实现类似CTRL+V操作。涉及`StringSelection`、`Clipboard`和`Transferable`的使用。
摘要由CSDN通过智能技术生成

I would like to write a Java program that has a button. When the button is pressed it pastes / drops the content of the system clipboard to the text field that currently has focus within an arbitrary, possibly non-Java app (say MS Word). Essentially the button action has to simulate the sending of CTRL-V (paste) action somehow.

Does any one have any suggestions?

解决方案

The package java.awt.datatransfer seems to be a solution, according to this article. Here is another article.

From the latter page, the needed imports:

import java.awt.datatransfer.*;

import java.awt.Toolkit;

And the method code is below. The solution is to create a listener and add it to the button. The listener should simply get the contents of the clipboard and insert it to whatever component you wish.

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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值