2009-06-18 6 views
2

есть проблема во время обработки Robot.KeyPress (KeyEvent ...), это необязательно указывать все ключи каждый раз .... например Robot.KeyPress (KeyEvent.VK_A); Robot.KeyPress (KeyEvent.VK_B); Robot.KeyPress (KeyEvent.VK_C); если есть какая-нибудь короткая стрелка для того, чтобы не повторять это каждый раз ... plz скажите мне .....ключевые события с классом робота

и интерпретация ключей, которые получены на стороне клиента, отличается от того, который отправляется со стороны сервера. ..

поэтому, пожалуйста, помогите мне ...

+0

Проблемы вы видите с расшифровкой ключей, вероятно, тот же вопрос, как поднятая этим вопросом: Http: // StackOverflow .com/questions/915581/how-to-enter-text-in-a-cross-platform-way-with-the-awt-robot – Nat

ответ

1

Там нет метода, который принимает одновременно нажатие клавиш от большого количества ключей, так как большинство клавиатур имеют ограничение на максимальное количество нажатых клавиш в определенный момент времени, и редко возникает причина одновременного нажатия более трех клавиш одновременно.

Если у вас есть конкретная последовательность клавиш, которые вы хотите отправить несколько раз, вы можете поместить его в массив и итерацию через него:

 int[] events = {KeyEvent.VK_A, KeyEvent.VK_B, KeyEvent.VK_C}; 
    Robot robot; 
    try { 
     robot = new Robot(); 
     for (int i = 0; i < events.length; i++) { 
      robot.keyPress(events[i]); 
      robot.keyRelease(events[i]); 
     } 
    } catch (AWTException e) { 
     e.printStackTrace(); 
    } 

Или вы можете поместить его в функцию вместо этого.

Что касается интерпретации ключей, я предполагаю, что вы забываете вызов keyRelease(), если нет, можете ли вы точно разместить то, что вы получаете на стороне клиента/сервера?

+1

Это было бы хорошим местом для использования каждого цикла: для (int key: события) { ... } – James

1

Я написал высокоуровневый, удобный API для использования AWT Robot. Посмотрите на API Gestures в библиотеке Window Licker.

Решает проблему key events are interpreted as different symbols in different locales, но только с помощью файлов конфигурации для описания раскладок клавиатуры. Я не нашел способ сделать это автоматически, просто используя Java API.

0

Вы можете посмотреть на этом SmartRobot классе, который реализует именно то, что вам нужно

Смежные вопросы