imageIO制作按钮将JFrame保存为PNG

时间:2017-05-17 08:15:58

标签: java swing jframe javax.imageio

我很困惑imageIO如何工作,我有这个应用程序:

enter image description here

我希望保存按钮将所有内容保存在JFrame中作为PNG。 但是当我尝试这段代码时,它不起作用:

ImageIO.write(JFrame, "PNG", new File("filename.png"));

有任何回复吗?

2 个答案:

答案 0 :(得分:1)

根据JavaDocs,您需要传递ImageIO.write RenderedImage的实例。

如果您查看JFrame的{​​{3}},您会发现它没有实现RenderedImage,因此您的问题就会出现。

如果你只看JavaDocs,你会发现几乎总是使用any example of Image.write,因为它与JFrame不同,会实现RenderedImage < / p>

好的,问题就变成了,&#34;如何将JFrame描绘成BufferedImage?&#34;

如果环顾四周,答案很简单。

BufferedImage img = new BufferedImage(frame.getWidth(), frame.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = img.createGraphics();
frame.printAll(g2d);
g2d.dispose();

现在,你可以保存它......

ImageIO.write(img, "png", new File("filename.png"));

答案 1 :(得分:0)

查看Screen Image课程。

它提供了重载方法来绘制组件或组件的一部分。然后逻辑将使用:

  1. 用于绘制框架的Robot类,或
  2. 摆动绘画以绘制Swing组件。 (绘画比使用机器人更有效。)