# JFileChooser - dispose() - Fenster schließ. Abbrechen Button



## Conn (8. Mai 2007)

Hab noch ne kleine Frage, vielleicht könntet ihr mir nochmal helfen.
Ich öffne eine Datei mit JFileChooser. Wenn ich mich aber entschließe das Fenster durch einen Abbruch zu schließen, muss ich insgesamt drei Mal (NetBeans) auf den Abbruch Button klicken bis sich das Fenster schließt. 

So ist es bei google überall zu finden:

```
if (dateiFenster.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
                File file = dateiFenster.getSelectedFile();
                System.out.println(file.getName());
            }
            else {
                System.out.println("Keine Auswahl :-(");
                System.exit(0);
            }
```

Nur 
	
	
	
	





```
System.exit(0);
```
 schließt alle Fenster. Ich will aber, dass sich nur der JFileChooser Dialog ausblendet. Im Normalfall kenne ich das mit dispose(), eine derartige Methode scheint es aber nicht zu geben???


----------



## SlaterB (8. Mai 2007)

du verstehst das falsch,
wenn der Dialog geöffnet wird,
verharrt die Ausführung beim Aufrufer im if,

dort wird erst weitergearbeitet, wenn der Dialog mit Ja/Nein oder Exception beendet wird,
und dann ist der Dialog zu, da brauchst du nicht mehr disposen


----------



## Conn (8. Mai 2007)

Stimmt, verstehe ich nicht :? . Ich muss den Dialog doch irgendwie ausblenden können?! Drücke ich auf Abbrechen, schlißt er sich erst nach dem dritten Klick. Es handelt sich ja hier um ein JFileChooser Objekt und nicht um ein JOptionPane Objekt.


----------



## L-ectron-X (8. Mai 2007)

Du hast eindeutig einen Fehler im Code. Hast du eventuell mehrere Instanzen des JFileChoosers geöffnet?


----------



## Conn (8. Mai 2007)

```
if(cmd.equals("Öffnen")) {
            JFileChooser dateiFenster = new JFileChooser();
            
            dateiFenster.setFileFilter(new FileFilter() {
                public boolean accept(File f) {
                    return f.getName().toLowerCase().endsWith(".txt") || f.isDirectory();
                }
                public String getDescription() {
                    return "Text Datei (*.txt)";
                }
            });
            
            if (dateiFenster.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
                File file = dateiFenster.getSelectedFile();
                System.out.println(file.getAbsolutePath());
                this.hauptDialog.setTextFeldMitteText(file.getAbsolutePath());
            }
            else {
                //System.out.println("Keine Auswahl :-(");
                
            } 
        }
```

Mehr habe ich dazu gar nicht. Vielleicht könntest Du mal kurz drübersehen?! ???:L


----------



## The_S (9. Mai 2007)

Hab den code gerade mal kopiert und bei mir ausgeführt. Geht ohne Probleme!


```
public static void main(String[] args) {
		
        JFileChooser dateiFenster = new JFileChooser();
        
        dateiFenster.setFileFilter(new FileFilter() {
            public boolean accept(File f) {
                return f.getName().toLowerCase().endsWith(".txt") || f.isDirectory();
            }
            public String getDescription() {
                return "Text Datei (*.txt)";
            }
        });
       
        if (dateiFenster.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
            File file = dateiFenster.getSelectedFile();
            System.out.println(file.getAbsolutePath());
      //      this.hauptDialog.setTextFeldMitteText(file.getAbsolutePath());
        }
        else {
            //System.out.println("Keine Auswahl :-(");
           
        } 

		
	}
```

Haste irgendwo ne schleife oder so?


----------



## Conn (9. Mai 2007)

Vielen Dank fuer eure Antworten.
War mein Fehler. Habe versehentlich weiter oben, über eine Schleife mehrfach ActionListener uebergeben. Deshalb startete das Fenster öfter als es sollte.


----------

