我很困惑imageIO如何工作,我有这个应用程序:
我希望保存按钮将所有内容保存在JFrame中作为PNG。 但是当我尝试这段代码时,它不起作用:
ImageIO.write(JFrame, "PNG", new File("filename.png"));
有任何回复吗?
答案 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)