マルチモニター環境で、すべてのモニターのスクリーンショットを取得し、1つのファイルscreenshot.pngに保存するサンプルです。
public void screenShot() throws AWTException, IOException {
Rectangle rectangle = new Rectangle();
for (GraphicsDevice graphicsDevice : GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()) {
for (GraphicsConfiguration graphicsConfiguration : graphicsDevice.getConfigurations()) {
rectangle = rectangle.union(graphicsConfiguration.getBounds());
}
}
Robot robot = new Robot();
ImageIO.write(robot.createScreenCapture(rectangle), "png", new File("screenshot.png"));
}
環境情報
D:\>java -version
openjdk version "21.0.3" 2024-04-16 LTS
OpenJDK Runtime Environment Temurin-21.0.3+9 (build 21.0.3+9-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.3+9 (build 21.0.3+9-LTS, mixed mode, sharing)
D:\>javac -version
javac 21.0.3
D:\>ver
Microsoft Windows [Version 10.0.22631.3880]