В настоящее время я работаю над проектом, и одной из функций, которые я хочу, чтобы этот проект, было выполнение X при изменении определенной и небольшой области экрана (100 * 100 пикселей).
В порядкечтобы сделать это, я планирую сделать снимок экрана с областью и сохранить его в переменной, а затем каждые х секунд буду делать новый снимок экрана с той же областью и сравнивать их.
Чтобы определить область, которую я хочуСнимок экрана: я сохраняю щелчок за пределами окна программы в верхнем левом углу.Вот методы, которые я использую для этого:
public static void MouseLocation() {
Toolkit.getDefaultToolkit().addAWTEventListener(new Listener(),
AWTEvent.MOUSE_EVENT_MASK | AWTEvent.FOCUS_EVENT_MASK);
}
private static class Listener implements AWTEventListener {
@Override
public void eventDispatched(AWTEvent event) {
if (Global.point [1] == null)
{
Global.point[Global.x] = (MouseInfo.getPointerInfo().getLocation());
Global.x++;
}
}
}
Как только верхний левый угол задан, я использую следующий метод, чтобы сделать снимок экрана:
public static void TakeShot(){
int x = (int)(Global.point[1].getX());
int y = (int)(Global.point[1].getY());
try {
Robot robot = new Robot();
Rectangle captureSize = new Rectangle(x,y, 100, 100);
Global.bufferedImage = robot.createScreenCapture(captureSize);
}
catch(AWTException e) {
}
}
ЭТО ОШИБКА Когда я вызываю метод TakeShot (), я получаю сообщение об ошибке: "Исключение в потоке" AWT-EventQueue-0 "java.lang.NullPointerException" в project.v2.pkg0.Safety.TakeShot(Safety.java:24)
Что я делаю, что создает эту ошибку?