将 JPanel 转换为图像
有没有办法将 JPanel(尚未显示)转换为 BufferedImage?
谢谢,
杰夫
Is there a way to convert a JPanel (that has not yet been displayed) to a BufferedImage?
thanks,
Jeff
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
从 BufferedImage 中,您可以创建一个图形对象,您可以使用它来调用 JPanel 上的绘制,如下所示:
您可能需要确保首先设置面板的大小。
From the BufferedImage you can create a graphics object, which you can use to call paint on the JPanel, something like:
You may need to make sure you set the size of the panel first.
ScreenImage 解释了如何执行您想要的操作。
ScreenImage.java 的相关部分(稍作编辑)。
layoutComponent
强制所有按钮出现在图像中。ScreenImage explains how to do what you want.
Relevant section of ScreenImage.java (slightly edited).
layoutComponent
forces all buttons appear in the image.Tom的回答基本上是正确的,但不建议直接调用
paint()
,因为它是同步调用,可能会中断swing线程上的其他操作。我们应该使用print()
而不是使用paint()
The answer from Tom is basically correct, but invoke
paint()
directly is not recommended, as it is a synchronous call and can interrupt with other operation on the swing thread. Instead of usingpaint()
, we should useprint()
instead看一下BasicTableUI。单元格渲染器绘制在图像上而不显示,然后绘制在可见的表格组件上。
Take a look at BasicTableUI. The cell renderer is drawn on image without showing and then drawn on visible table component.