【发布时间】:2014-09-06 04:24:28
【问题描述】:
我使用 StringSelection 和 clipbaord 方法粘贴字符串。
StringSelection selection = new StringSelection("myString");
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selection, selection);
这将剪贴板的所有权授予选择。然后我使用机器人粘贴有效的内容,但后来当我使用机器人尝试在我的屏幕上复制选定的文本时,通过模拟 CTRL+C,它似乎失败了。然后我为剪贴板的内容设置了一个字符串,我得到了“mystring”。
//Control+c
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyType(KeyEvent.VK_C);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.delay(3000);
//save clipboard into string
String newString = "";
try {
newString = (String) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);
} catch (HeadlessException e) {
e.printStackTrace();
} catch (UnsupportedFlavorException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.err.println(newString);//prints "myString"
我认为这可能是由类剪贴板的 setContents 方法的第二个参数引起的,其中剪贴板的所有权被赋予了选择。我不知道如何重置剪贴板的所有权。 Java 文档说 lostOwnership 方法“将在另一个应用程序或该应用程序中的另一个对象断言剪贴板的所有权时被调用。”所以我不认为这是因为它不会释放所有权。
手动使用 ctrl+c 也无法复制到剪贴板。
【问题讨论】:
标签: java clipboard copy-paste