Java-робот не работает

Я работаю над простым проектом распознавания речи. У меня есть команда под названием scroll up, где я хочу использовать класс для нажатия клавиши ВВЕРХ.

Это код:

        else if(resultText.equalsIgnoreCase("scroll up"))
        {
            try {
                Robot robot = new Robot();
                robot.delay(5000);
                robot.keyPress(KeyEvent.VK_UP);
                robot.delay(1000);
                robot.keyPress(KeyEvent.VK_UP);
                robot.delay(1000);
                robot.keyPress(KeyEvent.VK_UP);
            }
            catch (AWTException e){
                e.printStackTrace();
            }
        }

Я уже импортировал эти

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;

Теперь тот же код хорошо работает в другом проекте, но не в текущем. Что я делаю не так?


person Robin    schedule 08.03.2015    source источник
comment
Что именно не работает? синтаксис или время выполнения?   -  person Mordechai    schedule 08.03.2015
comment
@MouseEvent Когда я говорю «прокрутить вверх», в консоли отображается «прокрутка вверх», но ничего не происходит, я имею в виду, что кнопка «Вверх» не нажимается.   -  person Robin    schedule 08.03.2015
comment
События Келси будут отправлены компонентам, на которые в данный момент сфокусированы. Также убедитесь, что вы также вызываете keyRelease   -  person MadProgrammer    schedule 08.03.2015


Ответы (2)


Попробуй это:

else if (resultText.equalsIgnoreCase("scroll up")) {
    try {
        Robot robot = new Robot();
        robot.delay(5000);
        robot.keyPress(KeyEvent.VK_UP);

        robot.delay(1000);
        robot.keyRelease(KeyEvent.VK_UP);
        robot.keyPress(KeyEvent.VK_UP);
        robot.delay(1000);
        robot.keyRelease(KeyEvent.VK_UP);
        robot.keyPress(KeyEvent.VK_UP);
        robot.delay(1000);
        robot.keyRelease(KeyEvent.VK_UP);

Вы должны отпустить ту же кнопку.

person Mayur Beldar    schedule 08.03.2015

Из вашего комментария я понял, что ввод осуществляется из командной строки (очень важный факт, который всегда нужно включать в свой пост). это означает, что командное окно (или консольная панель - в IDE) содержит системный фокус, их перед UP ничего не делает.

Добавьте requestFocus() в свой код, это должно помочь.

person Mordechai    schedule 08.03.2015