java - 捕获重量级java组件?

标签 java user-interface screenshot jxbrowser

我有一个桌面应用程序,在 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/

相关文章:

QTableWidget::item() QTableWidget::cellWidget()?

objective-c - iOS 相机 Controller 捕获 "screenshot"

java - 项目中突然出现的奇怪错误

c++ - 在第二个屏幕上显示对话框/框架全屏唱 QT/c++

java - 缺少属性 'type',而映射的反序列化包含混合子类型 - 多态性

Java - 在 GUI 中使用线程

macos - 如何在 Mac OS X 上拍摄忽略应用程序窗口的区域的屏幕截图

java - 如何使用 Java 获取显示的 HTML 的 "screenshot"?

java - 学习android ...为什么类中存在类

java - 动态替换 Java Servlet 中的 HTML 代码