我有一个桌面应用程序,在 JFrame 中包含重量级组件 (JxBrowser)。如何从 GUI 制作快照并将其保存为 png 文件等?
注意:使用 Graphics2d 和 Component.paint()/paintAll()/print/printAll 的方法仅适用于轻量级组件。
感谢任何答案!
编辑
我已经尝试过这个:
robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
但我希望捕获内部组件...
编辑
情况似乎收敛到这个解决方案:如果我的 JFrame 中有一个更大的重量级组件,因此它在 JScrollPane 上呈现,那么不存在其他方法可以以编程方式获取它的快照,然后滚动它/对其进行屏幕截图带有屏幕截图?
最佳答案
我叫 Roman,是 TeamDev 的开发人员。
JxBrowser 组件是一个重量级组件,嵌入 native mozilla 窗口来显示网页。要从 JxBrowser 组件获取完整网页的屏幕截图,您实际上可以使用具有网页滚动功能的 Java Robot 功能。对于小网页来说,这个解决方案是可以的。但接收大网页的屏幕截图将花费大量时间。另请注意,Java Robot 只允许捕获屏幕。因此,如果某个窗口出现在 JxBroser 组件上,那么它也会被捕获。
我们已经开始在 JxBrowser 项目中开发此功能。允许捕获完整网页(包括其不可见部分)的解决方案基于 Mozilla 内部内容。您将能够轻松捕获完整的网页并将其保存为图像。
我们将在 JxBrowser 库的下一版本中添加此功能,但发布日期尚未确定。如果您愿意,可以订阅 TeamDev 的 RSS 源:http://support.teamdev.com/blogs/feeds/tags/company_news
或者请告诉我,我会通知您此功能何时可用。如果您还有任何疑问,请告诉我。我很乐意提供帮助。
问候, 罗马
关于java - 捕获重量级java组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/332758/