如何通过 JFileChooser 将 Icon 对象保存到文件中?
Posted
技术标签:
【中文标题】如何通过 JFileChooser 将 Icon 对象保存到文件中?【英文标题】:How to save Icon object into a file via JFileChooser? 【发布时间】:2011-12-05 00:56:35 【问题描述】:我有一个 JLabel,其中保存了我的 ImageIcon,如下所示:
ImageIcon imageIcon = sample.map(); // a map method create an ImageIcon object
imageLabel.setIcon(imageIcon);
imageLabel.setVisible(true);
现在我想在单击保存项目菜单时将此 ImageIcon 对象保存到 PNG 文件中。
private void imageActionPerformed(java.awt.event.ActionEvent evt)
Icon pic = imageLabel.getIcon();
JFileChooser fileChooser = new JFileChooser("C:/");
fileChooser.setSelectedFile(file);
// this filter will allow just PNG extension
FileFilter filter = new MyCustomFilter2();
fileChooser.setFileFilter(filter);
int returnVal = fileChooser.showSaveDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION)
File fileToSave = fileChooser.getSelectedFile();
else
System.out.println("File access cancelled by user.");
是的,我知道这段代码是错误的,并且缺少某些部分,我想我应该以某种方式将名为 pic 的 Icon 对象保存到 File 对象中。这是我的假设。请问我该怎么做?
感谢您的帮助,
迈克尔。
这是我的源代码
private void imageActionPerformed(java.awt.event.ActionEvent evt)
try
Icon image = imageLabel.getIcon();
BufferedImage bi = new BufferedImage(image.getIconWidth(),image.getIconHeight(),BufferedImage.TYPE_INT_RGB);
Graphics g = bi.createGraphics();
File file = new File("outputFile");
JFileChooser fileChooser = new JFileChooser("C:/");
fileChooser.setSelectedFile(file);
FileFilter filter = new MyCustomFilter2();
fileChooser.setFileFilter(filter);
int returnVal = fileChooser.showSaveDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION)
ImageIO.write(bi, "PNG", file);
File fileToSave = fileChooser.getSelectedFile();
else
System.out.println("File access cancelled by user.");
catch(IOException e)
e.printStackTrace();
【问题讨论】:
【参考方案1】:JFileChooser 返回的File
对象仅表示用户希望保存文件的磁盘位置。之后,您需要使用ImageIO.write() 将文件保存到磁盘。
例如
ImageIO.write(image, "png", file);
如果您有图标,我认为您可能需要先将其转换为 BufferedImage,然后才能保存。
【讨论】:
感谢您的回答,但它不会保存任何文件(既不为空)。我已经编辑了我的帖子并将代码放在这里,你能帮帮我吗?谢谢。 我看到您的代码创建了图形对象,但我没有看到任何绘制图标的代码。我认为有一个名为paintIcon()
的方法看起来您的代码正在将缓冲图像保存到一个名为“outputfile”的文件中,而不是用户从对话框中选择的文件。以上是关于如何通过 JFileChooser 将 Icon 对象保存到文件中?的主要内容,如果未能解决你的问题,请参考以下文章
将 JFileChooser 添加到 Eclipse Window Builder
如何使用 JFileChooser 保存 file.txt?
如何在 JFileChooser 中显示文件的默认系统图标?