我使用StringSelection和clipbaord方法粘貼字符串。將剪貼板的所有權設置爲StringSelection後,CTRL + C不復制到剪貼板
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也無法複製到剪貼板。