Java剪贴板在Robot执行期间未更新
我正在尝试做一个应用程序,复制一个网站的文本。问题是我无法获得剪贴板更新,我有以下代码:Java剪贴板在Robot执行期间未更新,java,clipboard,updating,awtrobot,Java,Clipboard,Updating,Awtrobot,我正在尝试做一个应用程序,复制一个网站的文本。问题是我无法获得剪贴板更新,我有以下代码: // Ctrl+A > right click > click on copy Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); StringSelection data = new StringSelection("https://www.di
// Ctrl+A > right click > click on copy
Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection data = new StringSelection("https://www.discogs.com/");
cb.setContents(data, data);
Robot robo = new Robot();
robo.delay(500);
robo.keyPress(KeyEvent.VK_CONTROL);
robo.keyPress(KeyEvent.VK_A);
robo.keyRelease(KeyEvent.VK_A);
robo.keyRelease(KeyEvent.VK_CONTROL);
robo.mouseMove(136, 874);
robo.mousePress(InputEvent.BUTTON3_MASK);
robo.mouseRelease(InputEvent.BUTTON3_MASK);
robo.delay(500);
robo.mouseMove(323, 890);
robo.mousePress(InputEvent.BUTTON1_MASK);
robo.mouseRelease(InputEvent.BUTTON1_MASK);
robo.delay(5000);
//Run to update the clipboard
new Thread(t1).start();
。。。到目前为止,一切顺利
private static Runnable t1 = new Runnable() {
public void run() {
try{
Thread.sleep(500);
Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
String paste = c.getContents(null).getTransferData(DataFlavor.stringFlavor).toString();
System.out.println(paste);
Thread.sleep(500);
} catch (Exception e){
}
}
};
所发生的事情是,它确实按照我的意愿进行选择和复制,java执行中的剪贴板始终为“”,如果执行后我在记事本上按ctrl+V,它就是我想要的网站内容,我已经一步一步地调试,没有线程,CRTL+C而不是右键单击和复制,增加并添加robo.delay,我无法获得实际的Windows剪贴板,结果总是一样的
谢谢您的建议。您正在将字符串复制到系统剪贴板。你认为粘贴该字符串会导致网页内容下载到你的计算机上吗?不,我传递的字符串只是为了进入网站,它可以工作,我希望在右键单击并复制后能够在java上阅读该字符串,但我总是得到我以前传递的旧网站,而不是复制的内容。在复制之前已经清理了剪贴板,它将保持为空。谢谢。所以,我发现问题出在cb.setContents(data,data);给定,java无法再读取我的新剪贴板条目,它始终保持设置状态,无论我是否在系统中重写它,java显示我之前设置的状态。。。有人能帮忙吗?