JFileChooser mit verschidene Endungen

plammy

Bekanntes Mitglied
Hallo :)
Hab mal ne Frage.
Ich will in dem MenuItem "Save" die Wahl zwischen jpg speichern oder txt speichern haben.
ich habe schon 2 Methoden implementiert, wie die txt dateien gespeichert werden sollen und wie die jpg. Die beiden funktionieren auch prima. Nur im moment geschieht dies über 2 vershciedene MenuItem: save Txt und saveJPG. Ich würde das aber gerne unter einem MenuItem haben und mit hilfe von dem JFileChooser die richtige extension wählen...

Java:
 public void actionPerformed(ActionEvent object) {
 if (object.getSource() == saveTemplate){
             JFileChooser fc = new JFileChooser(); 
             int returnVal = fc.showSaveDialog(this);  

                if (returnVal == JFileChooser.APPROVE_OPTION)
                {
                  
                    File saveFile = new File(fc.getSelectedFile()+".txt");  

                    try        
                    { 
                       BufferedWriter bw;
                            bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(saveFile),"ISO-8859-1"));

                            /* website */
                            bw.write(_website+"\r\n");
                       ............................

        }

        if (object.getSource() == saveJpg){
           
           JFileChooser fc = new JFileChooser();  
            
            int returnVal = fc.showSaveDialog(this);  
                
            if (returnVal == JFileChooser.APPROVE_OPTION)
            {
   
                float quality = 1.0f; 

                int w = CreateFile.editPanel.getWidth(); 
                int h = CreateFile.editPanel.getHeight(); 
                BufferedImage bi = new BufferedImage(w,h, BufferedImage.TYPE_INT_RGB); 
                Graphics2D big2d = bi.createGraphics(); 

                CreateFile.editPanel.paint(big2d); 

                try { 
                   ImageIO.write(bi,"jpg", new File(fc.getSelectedFile()+".jpg"));
                    
                } catch (Exception ex) { 
                    ex.printStackTrace(); 
                } 
            }
        }
 

plammy

Bekanntes Mitglied
ok jetzt habe ich folgendes hinzugefügt

Java:
                fc.setCurrentDirectory(new File("."));
                fc.setFileFilter(new FileFilter() {  
                    public boolean accept(File f) {
                    return f.getName().toLowerCase().endsWith(".txt")
                        || f.isDirectory();
                    }

                        public String getDescription() {
                        return "*.txt";
                        }
                    });
                fc.setFileFilter(new FileFilter() {  
                    public boolean accept(File f) {
                    return f.getName().toLowerCase().endsWith(".jpg")
                        || f.isDirectory();
                    }

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


aber wie sage ich denn jetzt wenn es .txt ist dann --->... und wenn jpg ist dann--->...
 

pl4gu33

Top Contributor
aber wie sage ich denn jetzt wenn es .txt ist dann --->... und wenn jpg ist dann--->...

was genau meinst du das jetzt ... also du soltlest ja jetzt in dem Dialog die Auswahl zwischen *jpg und *txt haben ....

(hier wäre es überigens vll. besser ne eigene Filter Klasse zu schreiben und der im Konstruktor jeweils die Endung mit zugeben nur mal nebenbei^^ )

meinst du jetzt die weitere Verarbeitung?

du kannst dann so auf die SelectedFiles zu greifen und dann bestimmt was gemacht werden soll

also grobes Beispiel:
Java:
 if(f.getSelectedFile().getName().endsWith(".jpg")){
        	....
        }
 

plammy

Bekanntes Mitglied
if(f.getSelectedFile().getName().endsWith(".jpg")){
....
}

Super genau das meinte ich.. :) Funktioniert jetzt prima.. was mich noch stört ist aber dass wenn ich jpg -Dateien auswähle ohne selbst nach der Dateiname .jpg zu schreiben tut er nix.. kann man sagen wenn man schon jpg-Dateien ausgewählt hat in dem FileFilter dass er von selbst .jpg nach der Dateiname anhängt??
 

plammy

Bekanntes Mitglied
naja... im moneten wenn wich was speichern möchte öffnet sich der jfilechooser , ich kann ich der liste zwischen jpg und txt wählen aber ich muss dennoch selber die endung händisch hinter der dateiname schreiben... ich will dass wenn ich der format aus der liste wähle automatisch die endung hinzugefügt wird
 

Michael...

Top Contributor
Prinzipiell kann man ja den JFileChooser abfragen welcher FileFilter gesetzt ist und dem entsprechend die Endung ergänzen, falls sie nicht manuell eingeben wurde.
Evtl. bietet der JFileChooser mittlerweile etwas in der Art, hab mich aber seit ein paar Jahren nicht mehr wirklich damit auseinander gesetzt.
 

plammy

Bekanntes Mitglied
:(.. wenn ich 2 filter nehmen läuft das schief.. :( wie kann ich sagen wenn ich den filter nehme will ich das und das tun..

im monet so wie ich stehen hab weist das programm immer .txt zu egla ob ich .jp-Datein oder .txt Dateien ausgewählt habe.. :(

ich muss doch iwie zwischen den beiden filter unterscheiden können aber wieeee????

Java:
 JFileChooser fc = new JFileChooser();

 fc.setCurrentDirectory(new File("."));
                FileFilter filterTxt = new FileFilter() {  
                    public boolean accept(File f) {
                        return f.getName().toLowerCase().endsWith(".txt") || f.isDirectory();
                    }
                    public String getDescription() {
                        return "*.txt";
                    }
                    };
                fc.setFileFilter(filterTxt);                
                
                FileFilter filterJpg = new FileFilter(){  
                    public boolean accept(File f) {
                        return f.getName().toLowerCase().endsWith(".jpg") || f.isDirectory();
                    }
                    public String getDescription() {
                        return "*.jpg";
                    }
                    };
                
                fc.setFileFilter(filterJpg);
  int returnVal = fc.showSaveDialog(this);  

                if (returnVal == JFileChooser.APPROVE_OPTION)
                {
                  
                 
                    try        
                    { 
                            File txtFile = null;
                            String path = fc.getSelectedFile().getPath();
                          

                            if(!path.toLowerCase().endsWith(".txt")){  
                                path = path + ".txt";
                            }

                            txtFile = new File(path); 

   if (!txtFile.exists())
                        {
                            BufferedWriter bw;
                            bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(txtFile),"ISO-8859-1"));
 } 
                        else{
...}
 }catch(IOException e){
                        System.out.println("Fehler beim Schreiben der Datei. Überprüfen Sie vielleicht Ihre Angaben.");
                  }
               }
                    
                 
            File jpgFile = null;
            String path2 = fc.getSelectedFile().getPath();        

                if(!path2.toLowerCase().endsWith(".jpg")){  
                    path2 = path2 + ".jpg";
                }

                jpgFile = new File(path2); 

                            
                float quality = 1.0f; 

                int w = CreateFile.editPanel.getWidth(); 
                int h = CreateFile.editPanel.getHeight(); 
                BufferedImage bi = new BufferedImage(w,h, BufferedImage.TYPE_INT_RGB); 
                Graphics2D big2d = bi.createGraphics(); 

                CreateFile.editPanel.paint(big2d); 

                try { 
                   ImageIO.write(bi,"jpg", new File(fc.getSelectedFile().getName()));
                    
                } catch (Exception ex) { 
                    ex.printStackTrace(); 
                } 
              }
                
    }
 

Michael...

Top Contributor
Die Methode getFileFilter() aufgerufen am JFileChooser liefert den aktuell eingestellten FileFilter. Da beide FileFilter nur auf abstrakter Ebene (als FileFilter) erstellt werden, kann man sie nur unterscheiden in dem man an dem (durch oben genannte Methode) gelieferten FileFilter getDescription() aufruft und diese auswertet und danach eine Fallunterscheidung vornimmt.
 

pl4gu33

Top Contributor
sowas meinst du ?
Java:
public class FileChooserExample{
	
	
	public FileChooserExample(){
		JFileChooser fc=new JFileChooser();	
		fc.setFileFilter(new Filter(".txt"));
		fc.setFileFilter(new Filter(".jpg"));
		
		int ret=fc.showSaveDialog(null);
		 if (ret == JFileChooser.APPROVE_OPTION){
			 System.out.println(fc.getFileFilter().getDescription());
         }
	
	}
	

  
 class Filter extends FileFilter{
	private String fix;
	public Filter(String str){
		fix=str;
	}
	
	@Override
	public boolean accept(File f) {
		// TODO Auto-generated method stub
		return f.isDirectory()||f.getName().toLowerCase().endsWith(fix);
	}

	@Override
	public String getDescription() {
		// TODO Auto-generated method stub
		return fix;
	}
	 
 }
 
 public static void main(String[] args){
	 new FileChooserExample();
  }

}



[EDIT]naaa toll^^ umsonst ausprobiert :D war wer schneller :D[/EDIT]
 
Zuletzt bearbeitet:

plammy

Bekanntes Mitglied
hmm :( es funktioniert immer noch nur für txt..

Java:
 JFileChooser fc = new JFileChooser();  
fc.setCurrentDirectory(new File("C:\\C:\\Users\\mandazhieva\\Documents"));
       
        fc.setFileFilter(new Filter(".txt"));                
        fc.setFileFilter(new Filter(".jpg"));

        int returnVal = fc.showSaveDialog(this); 

        if (returnVal == JFileChooser.APPROVE_OPTION)
        {
File f = null;   
            String path = fc.getSelectedFile().getPath();   
            
            if(fc.getFileFilter().getDescription().equals(".txt")){

            try        
            { 
                if(!path.toLowerCase().endsWith(".txt")){  
                    path = path + ".txt";
                }

                f = new File(path); 

                if (!f.exists())
                {
                    BufferedWriter bw;
                    bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f),"ISO-8859-1"));

                    /* website */
                    bw.write(_website+"\r\n");
                  ..............................................................
 }catch(IOException e){
                System.out.println("Fehler beim Schreiben der Datei. Überprüfen Sie vielleicht Ihre Angaben.");
            }
            }
            
            
             if(fc.getFileFilter().getDescription().equals(".jpg")){

                if(!path.toLowerCase().endsWith(".jpg")){  
                    path = path + ".jpg";
                }

                f = new File(path); 


                float quality = 1.0f; 

                int w = CreateFile.editPanel.getWidth(); 
                int h = CreateFile.editPanel.getHeight(); 
                BufferedImage bi = new BufferedImage(w,h, BufferedImage.TYPE_INT_RGB); 
                Graphics2D big2d = bi.createGraphics(); 

                CreateFile.editPanel.paint(big2d); 

                try { 
                    ImageIO.write(bi,"jpg", new File(f.getName()));

                } catch (Exception ex) { 
                    ex.printStackTrace(); 
                } 
                }
        }

    }
 

plammy

Bekanntes Mitglied
Fehler gefunden :oops:


es lag daran dass ich die Zeile falsch hatte
Java:
 try { 
                    ImageIO.write(bi,"jpg", new File(f.getName()))


richtig wäre:

Java:
try { 
                    ImageIO.write(bi,"jpg", f);
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Tommy135 JFileChooser ist sehr langsam AWT, Swing, JavaFX & SWT 13
T JFileChooser ist Englisch und bleibt Englisch und bleibt Englisch... AWT, Swing, JavaFX & SWT 15
M Swing jFileChooser Header viewTypeDetails setFont AWT, Swing, JavaFX & SWT 0
I JFileChooser mit System L&F bei anderem L&F der eigtl. Anwendung AWT, Swing, JavaFX & SWT 0
Meeresgott AWT JFileChooser bestimmte Ordner anzeigen AWT, Swing, JavaFX & SWT 16
S Swing JFileChooser best. Ordner wie Dateien behandeln AWT, Swing, JavaFX & SWT 4
H Swing JFileChooser für nicht existierendes Unterverzeichnis AWT, Swing, JavaFX & SWT 3
javampir Swing Anzeige der FileFilter im JFileChooser AWT, Swing, JavaFX & SWT 0
L JFileChooser Datentyp Unterscheidung AWT, Swing, JavaFX & SWT 6
K JFileChooser NullPointerException AWT, Swing, JavaFX & SWT 7
H JFileChooser Dateinamen vorgeben (Save Dialog) AWT, Swing, JavaFX & SWT 9
Neumi5694 Swing JFilechooser - Detailansicht AWT, Swing, JavaFX & SWT 0
M JFileChooser Look and Feel AWT, Swing, JavaFX & SWT 2
T JFileChooser Rahmenfarbe ändern AWT, Swing, JavaFX & SWT 1
K Pfad mit JFileChooser ausgeben lassen AWT, Swing, JavaFX & SWT 7
C JFileChooser hängt bei Ausführung mit Terminal AWT, Swing, JavaFX & SWT 2
T Swing JFileChooser und FileView AWT, Swing, JavaFX & SWT 4
M Einzelne Ordner im JFileChooser ausgrauen? AWT, Swing, JavaFX & SWT 4
H Swing JFileChooser inline editing AWT, Swing, JavaFX & SWT 4
D JFileChooser anpassen AWT, Swing, JavaFX & SWT 5
AssELAss Verzeichnis JFileChooser aktualisieren AWT, Swing, JavaFX & SWT 0
A JFileChooser Datei speichern AWT, Swing, JavaFX & SWT 4
A Datei weiterverwenden mit JFileChooser AWT, Swing, JavaFX & SWT 6
T Importer-Auswahl im JFileChooser AWT, Swing, JavaFX & SWT 3
N JFileChooser bzw. FileDialog Problem AWT, Swing, JavaFX & SWT 10
A Swing JFileChooser - Größenänderung nach Aufruf von showOpenDialog() AWT, Swing, JavaFX & SWT 15
D Serverdirectory auf Client browsen mit JFileChooser AWT, Swing, JavaFX & SWT 7
F icon aus exe auslesen mithilfe des JFilechooser ? AWT, Swing, JavaFX & SWT 4
C JFileChooser und Netzwerk Laufwerke AWT, Swing, JavaFX & SWT 4
Iron Monkey JFileChooser - Drag and Drop AWT, Swing, JavaFX & SWT 5
J JFileChooser - Datei speichern AWT, Swing, JavaFX & SWT 7
M Element aus JList eines JFileChooser entfernen AWT, Swing, JavaFX & SWT 3
S Swing Ordner im JFileChooser auswählen AWT, Swing, JavaFX & SWT 2
C JFileChooser bringt parent durcheinander AWT, Swing, JavaFX & SWT 2
N JFileChooser mit Dateinamenvorgabe AWT, Swing, JavaFX & SWT 9
S JFileChooser GTK (Ubuntu) "hässlich" AWT, Swing, JavaFX & SWT 2
A Swing JFileChooser mit modifiziertem Kontextmenü AWT, Swing, JavaFX & SWT 4
S JFileChooser öffnet den falschen Ordner AWT, Swing, JavaFX & SWT 4
A Swing JFilechooser zeigt verzeichnisse nicht an AWT, Swing, JavaFX & SWT 2
A Swing JFileChooser - Anzeige in Echtzeit filtern AWT, Swing, JavaFX & SWT 10
M JFileChooser umbenennen verbieten AWT, Swing, JavaFX & SWT 4
Helgon JFileChooser öffnet sich 2x AWT, Swing, JavaFX & SWT 12
K JFileChooser mit Zusatzfunktionen AWT, Swing, JavaFX & SWT 8
GUI-Programmer JFilechooser, mehrere Datein selektieren und Reihenfolge (2) AWT, Swing, JavaFX & SWT 8
V JFileChooser auf Mac und Netzwerkordner AWT, Swing, JavaFX & SWT 2
B JFileChooser breite der Spalten? AWT, Swing, JavaFX & SWT 5
M JFileChooser setCurrentDirectory() - Verzeichnis relativ zum Code/binary AWT, Swing, JavaFX & SWT 14
P Swing Dateinamen im JFileChooser vorschlagen AWT, Swing, JavaFX & SWT 11
M JFileChooser Abfangen des DateiTypen möglich?? AWT, Swing, JavaFX & SWT 5
T Swing JFileChooser --> Desktop und Laufwerke im "Suchen in" - Drop Down AWT, Swing, JavaFX & SWT 3
N JFileChooser - Keine Funtkion AWT, Swing, JavaFX & SWT 13
T JFileChooser - "Öffnen-Button" aktivieren/deaktivieren möglich??? AWT, Swing, JavaFX & SWT 2
jueki Aktuell eingestellten Filter aus einem JFileChooser abfragen. AWT, Swing, JavaFX & SWT 5
F Swing JFileChooser - Dateinamen nicht editierbar machen AWT, Swing, JavaFX & SWT 8
I Fehler bei JFileChooser AWT, Swing, JavaFX & SWT 2
K JFileChooser mehrere Dateien markieren ohne STRG AWT, Swing, JavaFX & SWT 4
Ivan Dolvich [Linux] JFileChooser sieht komisch aus... AWT, Swing, JavaFX & SWT 12
M Zurück-Button in JFileChooser AWT, Swing, JavaFX & SWT 9
N JFileChooser AWT, Swing, JavaFX & SWT 4
D Problem mit JFileChooser -> Daten werden mit anführungsstriche in JTable geschrieben AWT, Swing, JavaFX & SWT 8
S JFileChooser Dateiname Autovervollständigung AWT, Swing, JavaFX & SWT 2
B JDialog über JFileChooser anzeigen AWT, Swing, JavaFX & SWT 6
I Swing JFileChooser '\' im Pfad... AWT, Swing, JavaFX & SWT 2
K Swing JFileChooser zum Speichern - FileFilter AWT, Swing, JavaFX & SWT 2
M Swing Execption beim JFileChooser AWT, Swing, JavaFX & SWT 4
kodela Swing JFileChooser und die Datei-Extension AWT, Swing, JavaFX & SWT 3
jueki eigenen Button in JFileChooser einfügen AWT, Swing, JavaFX & SWT 7
alderwaran jFileChooser showSaveDialog, dateinamen werden mit pfadnamen überschrieben beim navigieren AWT, Swing, JavaFX & SWT 1
B Swing Suche JFileChooser zum Speichern AWT, Swing, JavaFX & SWT 2
Iron Monkey JFileChooser DIRECTORIES_ONLY AWT, Swing, JavaFX & SWT 4
Semox Swing JFileChooser: Problem Approve oder Cancel abzufangen AWT, Swing, JavaFX & SWT 7
H JTree - nach Auswahl aus JFileChooser wird nur der erste Knoten angezeigt AWT, Swing, JavaFX & SWT 3
kodela Sicherheitsabfrage mit JFileChooser AWT, Swing, JavaFX & SWT 2
DARK_ZERATO2 jFileChooser AWT, Swing, JavaFX & SWT 4
G JFileChooser Problem AWT, Swing, JavaFX & SWT 4
G Swing JFileChooser Event für neue Directory? AWT, Swing, JavaFX & SWT 5
P JFileChooser AWT, Swing, JavaFX & SWT 2
M Swing JFileChooser und JFrame AWT, Swing, JavaFX & SWT 5
G Swing JFileChooser in einem JPanel? AWT, Swing, JavaFX & SWT 3
J JFileChooser Dateiauswahl beim Tippen einschränken AWT, Swing, JavaFX & SWT 3
M Swing JFileChooser mit Windows 7 AWT, Swing, JavaFX & SWT 8
R JFileChooser - Initiales Verzeichnis auswählen AWT, Swing, JavaFX & SWT 8
brainray JFileChooser - es sollen nur Ordner wählbar sein AWT, Swing, JavaFX & SWT 2
T JFileChooser Problem AWT, Swing, JavaFX & SWT 3
N Mit JFileChooser ein Verzeichnis auswählen AWT, Swing, JavaFX & SWT 7
M Swing JFileChooser und versteckte Ordner AWT, Swing, JavaFX & SWT 2
F jFileChooser verwenden AWT, Swing, JavaFX & SWT 4
M Swing ImageIcon über JFileChooser einbinden AWT, Swing, JavaFX & SWT 4
F JFileChooser mal wieder AWT, Swing, JavaFX & SWT 2
ARadauer Swing JFileChooser mit Bildvorschau AWT, Swing, JavaFX & SWT 5
H Swing Dateiauswahldialog mit JFileChooser funktioniert unzuverlässig AWT, Swing, JavaFX & SWT 11
G Swing JFileChooser nur in Verzeichnis+Unterverzeichnisse AWT, Swing, JavaFX & SWT 5
K Swing JFileChooser AWT, Swing, JavaFX & SWT 6
M JFileChooser einschränken AWT, Swing, JavaFX & SWT 3
L JFileChooser braucht lang zum öffnen AWT, Swing, JavaFX & SWT 2
S NullPointerException bei JFileChooser AWT, Swing, JavaFX & SWT 8
M JFilechooser defaultdirectory AWT, Swing, JavaFX & SWT 5
C JFilechooser this.setAlwaysOnTop AWT, Swing, JavaFX & SWT 2
G JFileChooser - erkennen v. existierenden Dateien ohne Endung AWT, Swing, JavaFX & SWT 1
N JFilechooser File auslesen AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben