Wie Datei mit JFileChooser zu retten?
-
22-09-2019 - |
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);
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.
Verwenden JFileChoose.SetFileFilter Beispiel: http: //www.java2s .com / Code / JAVAAPI / javax.swing / JFileChoosersetFileFilterFileFilterfilter.htm
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.