Буфер обмена в al oop и только получить текст в первый раз - PullRequest
0 голосов
/ 02 марта 2020

У меня ошибка и я ее не получаю. Я не получаю исключение.

Я должен скопировать текст с помощью робота.

// mark the text
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_A);
robot.delay(1000);
robot.keyRelease(KeyEvent.VK_A);
robot.keyRelease(KeyEvent.VK_CONTROL);


// robot copy the text
robot.keyPress((KeyEvent.VK_CONTROL));
robot.keyPress((KeyEvent.VK_C));
robot.delay(1000);
robot.keyRelease((KeyEvent.VK_C));
robot.keyRelease((KeyEvent.VK_CONTROL));

, затем я получаю текст через буфер обмена

txt = (String) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);

После этого Я хочу установить текст в буфер обмена, чтобы я мог снова поместить его в текстовое поле с помощью робота.

StringSelection stringSelection = new StringSelection(txt);
clipboard.setContents(stringSelection, stringSelection);


// robot mark the hole text
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_A);
robot.delay(1000);
robot.keyRelease(KeyEvent.VK_A);
robot.keyRelease(KeyEvent.VK_CONTROL);


// robot put the text in
robot.keyPress((KeyEvent.VK_CONTROL));
robot.keyPress((KeyEvent.VK_V));
robot.delay(1000);
robot.keyRelease((KeyEvent.VK_V));
robot.keyRelease((KeyEvent.VK_CONTROL));

Это все в oop

 while (j < liUnderElementList.size()) {}

Первый раз, когда он работает как положено, но на втором проходе я получаю первый скопированный текст, а не новый текст. НО в моем буфере обмена новый текст.

Если я жду с

TimeUnit.SECONDS.sleep(2)

, ничего не изменится.

Кто-нибудь может мне помочь?

Я бы быть очень благодарным.

1 Ответ

0 голосов
/ 02 марта 2020

Кажется, проблема с порядком ключей, в том, как вы выполняете. Событие релиза должно быть с последнего. Используйте ниже одного:

robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_A);
robot.delay(1000);
robot.keyRelease(KeyEvent.VK_A);
robot.keyRelease(KeyEvent.VK_CONTROL);
...