【发布时间】:2021-12-07 09:23:44
【问题描述】:
我正在创建一个简单的测试程序来截取整个屏幕,经过一些研究,我创建了以下代码:
public class PrintScreenCatcher {
public String capture(){
try {
Rectangle rectangle = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
Robot robot = new Robot();
BufferedImage screenShot = robot.createScreenCapture(rectangle);
File file=createTempFilePath();
ImageIO.write(screenShot, "jpg", file);
return file.getAbsolutePath();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private File createTempFilePath() throws IOException {
DateTimeFormatter formatter=DateTimeFormatter.ofPattern("yyyyMMddHHmmssS");
return File.createTempFile("screen-"+LocalDateTime.now().format(formatter),".jpg");
}
}
运行此程序后,我期待一个带有整个屏幕的图像(MacOS 菜单、Intellij 等):
我得到了一张只包含我桌面背景的图片:
我认为机器人试图只截取我的程序的屏幕截图。我应该怎么做才能对打开的屏幕进行截图?
【问题讨论】:
-
你是如何运行你的代码的?主要方法在哪里?
-
@GilbertLeBlanc 我正在通过 junit 运行它
标签: java awt screenshot macos-big-sur awtrobot