java 剪贴板错误(错误)?

java Clipboard error (bug)?

我有一个程序,它打开一个程序,然后将一个字符串复制并粘贴到程序中,一段时间后,它使用带有 ctrl+c 的机器人将字符串从程序复制到剪贴板。然后我的程序检查复制的字符串是否包含一个单词,但它没有检查最近复制的字符串,而是使用先前复制的开头字符串。这是一些代码:

new ProcessBuilder("pathToProgram").start();
copy(STRING1);
paste();
Thread.sleep(x);
//Move mouse to a position
//robot uses ctrl+a
copy();
Thread.sleep(100);
clipboardData = (String) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);
system.out.println(clipboardData);
if(clipboardData.contains(String2){
//do some stuff
}

system.out 只输出 String1 的值而不是 string2 的值。感谢您的帮助。

假设您的 copy() 方法设置了剪贴板文本,我遇到了完全相同的问题并且找到了一个奇怪的解决方法。

Java clipboard ignores user copy if not SwingUtilities.invokeLater()

我可以获得剪贴板文本,它将始终显示用户随时复制到那里的任何内容。但是,如果我以编程方式设置剪贴板文本,之后这就是我从剪贴板获得的所有内容 - 除非我推迟一次通过 SwingUtilities.invokeLater() 获取更多剪贴板文本,然后剪贴板文本再次正常工作。然后我也可以再次打破它 - 并再次 "fix" 它。

我不知道为什么会这样,因此我刚刚发布了这个问题(参见 link)。