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

标签 java file netbeans icons save

我有一个 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();
   }
}

最佳答案

JFileChooser 返回的File 对象仅表示用户想要保存文件的磁盘位置。之后您将需要使用 ImageIO.write()将文件保存到磁盘。

例如

ImageIO.write(image, "png", file);

如果您有图标,我认为您可能需要将其转换为 BufferedImage,然后才能保存。

关于java - 如何通过 JFileChooser 将 Icon 对象保存到文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8379909/

相关文章:

java - 在java回调中发送多个文件?

netbeans - 如何在 NetBeans 中创建 Unix shell 脚本项目?

java - 如何打印触发事件的按钮名称?

java - 内联::java 和草莓 Perl

java - 无法识别 @Size 注释 (JPA)

java - jTable 中的 jRadioButton 值

java - Netbeans - 设计 View 不可用

java - 十进制转二进制(java.lang.NumberFormatException)

android - 读取Xposed模块中的文件

c - 从文件中读取,放入数组并打印到文件中