Я создал класс клавиатуры для работы с роботом. Но когда я начинаю использовать методы из этого класса, у меня ошибка в журналах.Класс класса Робот класса
Вот мой Keyboard.java
методом pressEscape()
:
public class Keyboard {
private static Robot robot;
private static int time = 1000;
public Keyboard(){
try {
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
}
public void pressEscape() throws TestException {
if (!getSession().CanRun())
throw new TestException(InvalidStateMessage);
robot.delay(time);
robot.keyPress(KeyEvent.VK_ESCAPE);
robot.delay(time);
robot.keyRelease(KeyEvent.VK_ESCAPE);
robot.delay(time);
}
}
А вот ошибка из журнала:
[2015/08/13 15:43:29] [ID: 7F4315A] [Селен] : java.lang.NullPointerException
[2015/08/13 15:43:29] [ID: 7F4315A] [Селен]: в Kodak.AutoTest.Framework.Keyboard.pressEscape (Keyboard.java:128)
Изменение немного метод:
public void pressEscape() throws TestException {
if (!getSession().CanRun())
throw new TestException(InvalidStateMessage);
try {
new Robot();
robot.setAutoDelay(time);
robot.keyPress(KeyEvent.VK_ESCAPE);
robot.setAutoDelay(time);
robot.keyRelease(KeyEvent.VK_ESCAPE);
} catch (AWTException e) {
e.printStackTrace();
}
}
, но по-прежнему имеет ту же самую ошибку на линии:
robot.keyPress(KeyEvent.VK_ESCAPE);
что линия 128 в коде? Где вы получаете функцию 'getSession()'? – Jakuje
Вы не должны поддерживать ссылку 'static' для полей для класса, если вы не собираетесь сделать ее классом утилиты и также сделать методы' static' – MadProgrammer
. Вы также можете использовать ['Robot # setAutoDelay'] (http : //docs.oracle.com/javase/7/docs/api/java/awt/Robot.html#setAutoDelay (int)), который 'Robot' будет использовать между командами выполнения – MadProgrammer