java.awt.Robot.createScreenCapture 在最后一个 JRE (8) 的多屏幕配置上不起作用

标签 java awtrobot

我的电脑上有两个屏幕。 我尝试在每个屏幕上进行屏幕截图。 我正在使用以下代码:

GraphicsDevice[] screens = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();  //same screens[] with JRE7 and JRE8

Robot rbt0 = new Robot(screens[0]);
BufferedImage image0 = rbt0.createScreenCapture(new Rectangle(0,0,1024,1024));

Robot rbt1 = new Robot(screens[1]);
BufferedImage image1 = rbt1.createScreenCapture(new Rectangle(0,0,1024,1024));
  • 在 JRE7 上,每次捕获都在右侧屏幕上执行:image0 和 image1 不同。
  • 在 JRE8 上,两个屏幕的捕获是相同的:image0 和 image1 是相同的视觉图像(它们都是屏幕 0 的图像)。

javadoc 没有提到 JRE8 上有一个关于 Robot 类的新特性。 这是 JRE8 的错误吗?有人有同样的问题吗? 如果此错误得到确认,我该如何将此问题传达给 Oracle?

谢谢大家,

问候,

最佳答案

机器人计算屏幕坐标的方式似乎发生了变化。

针对 Java 8 的 javadoc 提出了以下错误,这可能解释了您的问题。

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8033128

看起来更改是故意进行的,而不是错误。

要捕获第二个屏幕,您可能需要将位置偏移第一个屏幕的大小。

Robot rbt1 = new Robot(screens[1]);
BufferedImage image1 = rbt1.createScreenCapture(new Rectangle(1024,0,1024,1024));

关于java.awt.Robot.createScreenCapture 在最后一个 JRE (8) 的多屏幕配置上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22866985/

相关文章:

Java机器人类在笔记本电脑上工作但在电脑上不工作

java - 如何在Java中尽可能快地模拟鼠标点击?

java - 机器人类,鼠标做圆周运动

java.awt.Robot 未按预期运行

java.lang.NoSuchMethodError : org. apache.commons.io.FileUtils.readFileToByteArray 错误

java - 如何在 jclouds 中启用 s3 路径样式访问

java - 如何多态地使用 java.lang.Number

java - 如何使用 JavaMail API 通过 Java 发送电子邮件中的二进制附件?

java - 尝试通过 hector API 连接到 cassandra 时出错

Java机器人: Repeating every 30 minutes