我目前正在开发一个项目,我希望这个项目有一个功能就是当屏幕的特定和小区域(100 * 100像素)发生变化时做X.
为了做到这一点,我计划拍摄该区域的屏幕截图并将其存储在一个变量中,然后我将每隔x秒拍摄同一区域的新屏幕截图并进行比较。
要定义我想要截屏的区域,我将程序窗口外的点击存储为左上角。 这些是我正在使用的方法:
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”at project.v2.pkg0.Safety.TakeShot(Safety.java:24)
我正在做的是创建此错误?