Не уверен, что это именно то, что вы ищете, но, в качестве альтернативы, вы можете подумать о том, чтобы сделать что-то вроде этого, если вы хотите оставаться достаточно близко к исходному примеру:
public static void main(String[] args) {
frame.setSize(500,300);
frame.setLocation(300,200);
frame.setVisible(true);
frame.setBackground(Color.black);
try {
final Robot robot = new Robot();
handleMouse(robot);
} catch (final AWTException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void handleMouse(final Robot robot) {
int mouseX = 1;
int mouseY = 1;
while (mouseX !=0 || mouseY !=0) {
final Point mouseLocation = MouseInfo.getPointerInfo().getLocation();
mouseX = mouseLocation.x;
mouseY = mouseLocation.y;
final Color currentColor = robot.getPixelColor(mouseX, mouseY);
System.out.println(String.format("x: %d, y: %d, c: %s", mouseX, mouseY, currentColor));
}
}
ПримечаниеcurrentColor
обновляется каждый раз, когда mouseX
и mouseY
;это было не так в вашем исходном фрагменте.
Еще одна вещь, на которую следует обратить внимание, если вы смотрите вывод на терминале - цвет будет изменяться только в том случае, если mouseX
и mouseY
остаются <= 255;за пределами этого значения вы, скорее всего, увидите только этот вывод: </p>
java.awt.Color[r=255,g=255,b=255]