Frage

Ich habe eine Methode in meiner Anwendung namens „Speichern unter“, die das Bild von meiner Anwendung Speichert mein auf Computer in eine Datei. Ich benutzte die JFileChooser lassen die Benutzer zum Speichern der Datei ihre gewünschte Position wählen. Das Problem ist, es sei denn, Benutzer explizit Typen in dem Dateiformat, die Datei ohne Erweiterung speichert. Wie kann ich Formate wie jpg, png in dem Dateityp Dropdown-Menü.

und, wie ich Erweiterung aus dem Dateityp Drop-Menü bekommen kann meine Image-Datei gespeichert werden soll.

 ImageIO.write(image,extension,file);
War es hilfreich?

Lösung

Schließlich ich mein eigenes Problem lösen: -

JFileChooser FC=new JFileChooser("C:/");
FC.addChoosableFileFilter(new jpgSaveFilter());
FC.addChoosableFileFilter(new jpegSaveFilter());
FC.addChoosableFileFilter(new PngSaveFilter());
FC.addChoosableFileFilter(new gifSaveFilter());
FC.addChoosableFileFilter(new BMPSaveFilter());
FC.addChoosableFileFilter(new wbmpSaveFilter()); 

int retrival=m_fileChooser_save.showSaveDialog(null);

if (retrival == m_fileChooser_save.APPROVE_OPTION) 
   {

        String ext="";

        String extension=m_fileChooser_save.getFileFilter().getDescription();

       if(extension.equals("*.jpg,*.JPG"))
      { 
          ext=".jpg";
      }
      if(extension.equals("*.png,*.PNG"))
      { 
          ext=".png";
      }
      if(Extension.equals("*.gif,*.GIF"))
      { 
          ext=".gif";
      }
      if(extension.equals("*.wbmp,*.WBMP"))
      { 
          ext=".wbmp";
      }
      if(Extension.equals("*.jpeg,*.JPEG"))
      { 
          EXT=".jpeg";
      }
      if(extension.equals("*.bmp,*.BMP"))
      { 
          ext=".bmp";
      }

Beispiel Filter:

 import java.io.*;
 import java.io.File;
 import java.util.*;
 import javax.swing.filechooser.FileFilter;   
 class jpgSaveFilter extends FileFilter
 { 
    public boolean accept(File f)
   {
        if (f.isDirectory())
          {
            return false;
          }

         String s = f.getName();

        return s.endsWith(".jpg")||s.endsWith(".JPG");
   }

   public String getDescription() 
  {
       return "*.jpg,*.JPG";
  }

}

Andere Tipps

Bereiten Sie die Dateiauswahl Filter:

    jFileChooser.addChoosableFileFilter(new FileNameExtensionFilter("File X (.xxx)", "xxx"));
    jFileChooser.addChoosableFileFilter(new FileNameExtensionFilter("File Y (.yyy)", "yyy"));
    jFileChooser.addChoosableFileFilter(new FileNameExtensionFilter("File Z (.zzz)", "zzz"));

    // set default type
    jFileChooser.setFileFilter(jFileChooser.getChoosableFileFilters()[0]);

    // set default file
    jFileChooser().setSelectedFile(defaultFile);

Nach genehmigen Validierung

//Add extension to Selected file 
File file = new File(jFileChooser().getSelectedFile().getCanonicalPath() + "." + ((FileNameExtensionFilter) jFileChooser().getFileFilter()).getExtensions()[0]);

Könnte eine gute Idee, Validieren, wenn die ausgewählte Datei mit der Erweiterung kommen.

Ich glaube, ich bessere Lösung. Wird erklären, es mit Beispielcodefragmente.

Dies ist, wie stelle ich Dateifilter:
jFileChooser.setFileFilter(new FileNameExtensionFilter(".txt", "txt"));.

Danach wird die Hauptsparlinie:
textArea1.write(new BufferedWriter(new FileWriter(jFileChooser.getSelectedFile().getAbsolutePath() + jFileChooser.getFileFilter().getDescription().replace("All Files", ""))));.

Natürlich ist das wichtigste dieses Fragment. jFileChooser.getSelectedFile().getAbsolutePath() + jFileChooser.getFileFilter().getDescription().replace("All Files", "")

Das einzige, was ich nicht mag, ist, dass ich keine Methode wie ‚getExtension‘ gefunden, die bedeutet, dass Sie keine schöne Beschreibung ohne unnötige Probleme mit Strings haben.


Ok, habe es. Sie können, wie etwas tun, dass: jFileChooser.getFileFilter().toString().replaceFirst(".*extensions=\\[(.*)]]", ".$1").replaceFirst(".*AcceptAllFileFilter.*", "").

Leider ist es nicht so schön, aber es scheint zu funktionieren wie ein Zauber.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top