如何通过 JFileChooser 将 Icon 对象保存到文件中?

     2023-05-07     140

关键词:

【中文标题】如何通过 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 中放置图像?

】如何从JFileChooser中放置图像?【英文标题】:HowtoputanimagefromaJFileChooser?【发布时间】:2017-10-0707:16:02【问题描述】:我在使用Graphics将图像放入jPanel时遇到问题。我有下一个代码:JFileChoosernavegador=newJFileChooser();if(navegador.showOpen... 查看详情

如何使用 JFileChooser 保存 file.txt?

】如何使用JFileChooser保存file.txt?【英文标题】:Howtosavefile.txtwithJFileChooser?【发布时间】:2014-10-0823:16:25【问题描述】:我正在开发记事本项目,想知道如何保存文件.txt,我的问题是,我保持文件打开JFileChooser,在选择了要保... 查看详情

将 JFileChooser 添加到 Eclipse Window Builder

】将JFileChooser添加到EclipseWindowBuilder【英文标题】:AddJFileChoosertoEclipseWindowBuilder【发布时间】:2014-08-0320:17:05【问题描述】:我是Eclipse窗口构建器的新手,想用它创建一个简单的GUI。我想添加JFileChooser,但是在调色板中找不到... 查看详情

如何在 JFileChooser 中显示文件的默认系统图标?

】如何在JFileChooser中显示文件的默认系统图标?【英文标题】:HowtodisplaydefaultsystemiconforfilesinJFileChooser?【发布时间】:2013-07-1121:21:28【问题描述】:如何显示JFileChooser中文件的默认系统图标?即JFileChooser中文件的图标应该与桌... 查看详情

JFileChooser 将文件名作为空值传递

】JFileChooser将文件名作为空值传递【英文标题】:JFileChooserdeliversfilenameasnull【发布时间】:2014-02-2503:54:00【问题描述】:我一直在用Java编写音频/视频转换器。除了JFileChooser之外,一切都运行顺利。(我通常使用AWTFileDialog来选... 查看详情

如何使用 JFileChooser 保存文件?

】如何使用JFileChooser保存文件?【英文标题】:HowtosavefileusingJFileChooser?【发布时间】:2011-02-0115:04:57【问题描述】:我的应用程序中有一个名为“另存为”的方法,它将我的应用程序在计算机上的图像保存到文件中。我使用JFile... 查看详情

java示例代码_将文本文件保存在JFileChooser给定的路径中

java示例代码_将文本文件保存在JFileChooser给定的路径中 查看详情

将 JFileChooser 与 Swing GUI 类和侦听器一起使用

】将JFileChooser与SwingGUI类和侦听器一起使用【英文标题】:UsingaJFileChooserwithSwingGUIclassesandlisteners【发布时间】:2013-03-2115:39:25【问题描述】:这是我当前的菜单:publicclassDrawPolygonspublicstaticvoidmain(String[]args)throwsFileNotFoundException/**... 查看详情

如何在 Java 9+ 中使用 JFileChooser 显示网络共享?

】如何在Java9+中使用JFileChooser显示网络共享?【英文标题】:HowtodisplaynetworksharesusingJFileChooserinJava9+?【发布时间】:2019-04-1009:42:44【问题描述】:我们软件的用户需要在我们的Javaswing应用程序中浏览Windows10上的网络共享,但是swi... 查看详情

如何在 JFileChooser 保存对话框中处理问号或星号(“?”或“*”)?

】如何在JFileChooser保存对话框中处理问号或星号(“?”或“*”)?【英文标题】:HowdoIhandlequestionmarksorasterisks(\'?\'or\'*\')inJFileChoosersavedialog?【发布时间】:2021-06-0722:41:59【问题描述】:首先我创建一个JFileChooser,然后调用showS... 查看详情

java示例代码_JPanel内部的JFileChooser;如何让用户选择

java示例代码_JPanel内部的JFileChooser;如何让用户选择 查看详情

如何从 JFileChooser(JAVA Swing) 中禁用文件操作、文件选择和过滤面板?

】如何从JFileChooser(JAVASwing)中禁用文件操作、文件选择和过滤面板?【英文标题】:Howcanthedisablefileoperation,fileselectionandfilterpanelfromJFileChooser(JAVASwing)?【发布时间】:2009-04-2809:11:49【问题描述】:我需要在Panel中嵌入JFileChooser对话... 查看详情

java示例代码_:JFileChooser如何在文本字段中显示所选文件

java示例代码_:JFileChooser如何在文本字段中显示所选文件 查看详情

如何将icon转成bitmap

最近工作中有个需求是将Icon转成带Alpha通道的Bitmap,虽然网上有不少这方面的文章,但很多都是错的,这里记录下,或许对后来人有用。 要实现这个功能,我们首先需要理解Icon的格式,我们可以看到Icon的结构如下:typedef ... 查看详情

java示例代码_将字符串附加到已使用java中的JFileChooser选择的文件

java示例代码_将字符串附加到已使用java中的JFileChooser选择的文件 查看详情

使用 JFileChooser 过滤文件类型

】使用JFileChooser过滤文件类型【英文标题】:FilterfiletypeswithJFileChooser【发布时间】:2013-10-1813:59:16【问题描述】:我正在使用JFileChooser选择一个文件,并且我试图将显示限制为仅显示jpg或jpeg文件。我已经尝试过FileFilter和Choosable... 查看详情

如何使 JFileChooser 显示除 .huff 文件之外的所有类型的文件 [重复]

】如何使JFileChooser显示除.huff文件之外的所有类型的文件[重复]【英文标题】:HowtomakeJFileChoosershoweverytypeoffilesexcept.hufffiles[duplicate]【发布时间】:2021-02-2703:59:12【问题描述】:我正在开发一个实现Huffman算法的Java(Swing)程序。它需... 查看详情

如何将 flag-icon-css 与 angular2/4 一起使用?

】如何将flag-icon-css与angular2/4一起使用?【英文标题】:Howtouseflag-icon-csswithangular2/4?【发布时间】:2018-02-1922:04:18【问题描述】:我想将flag-icon-css与angular2/4一起使用。我使用npminstallflag-icon-css设置了flag-icon-css并在webpack样式中添... 查看详情