Java: как отправить акселератор ключ - PullRequest
1 голос
/ 05 сентября 2011

Я использую Junit4 при затмении.Я хотел бы написать тест, который может быть в состоянии отправить действие: ctrl+shift+P

Я пробовал это с использованием JTable, так как я не знаю, для какого компонента я мог бы использовать sendAcceleratorKey:

myTable.sendAcceleratorKey(InputEvent.CTRL, InputEvent.SHIFT_DOWN_MASK)

но я не могу добавить третий аргумент, чтобы сказать KeyEvent.P.

Как я могу отправить это действие, которое меняет меню?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 05 сентября 2011

Полагаю, вы можете использовать Робот класс.

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_P);

Thread.sleep(1000); // Time for your code to react to the event

assert(...);

robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_SHIFT);
robot.keyRelease(KeyEvent.VK_P);
1 голос
/ 05 сентября 2011

Я не могу найти ссылку на sendAcceleratorKey(). Но если он действительно существует и делает то, что вы хотите, мне кажется логичным использовать метод таким образом, используя ключевые модификаторы:

myTable.sendAcceleratorKey(InputEvent.CTRL | InputEvent.SHIFT_DOWN_MASK,
                           KeyEvent.VK_P);

В противном случае попробуйте поменять параметры в зависимости от сигнатуры методов.

myTable.sendAcceleratorKey(KeyEvent.VK_P,
                           InputEvent.CTRL | InputEvent.SHIFT_DOWN_MASK);
...