falsche Pfadangabe bei FileChooser

Status
Nicht offen für weitere Antworten.

Corcovado

Bekanntes Mitglied
Hallo,
gibts ne einfache Moeglichkeit (ne Methode oder so) bei nem JFileChooser.showOpenDialog() nach zu pruefuen ob ein File leer ist oder einen Pfad irrsinnig, der also zB nicht existiert? Wenn man zB "asdfasdfasdf" in dem Fenster eingibt. Damit man irgendwie drauf reagieren kann, also bspw szPathIn (unten) einfach auf "" setzt.

Code:
public String readPath(){ 
    	String szPathIn = "";
    	JFileChooser filechooser = new JFileChooser();	
	int hInput = filechooser.showOpenDialog(null);
	File file = null;
	if( hInput == JFileChooser.APPROVE_OPTION){
		file = filechooser.getSelectedFile();
		szPathIn = file.getAbsolutePath();
	}
    	return szPathIn;
}

Ich hoffe das ist so ueberhaupt sinnvoll implementiert....wenn nicht bitte ich um sachdienliche Hinweise ;)
 

thE_29

Top Contributor
Hab zz keine Zeit mir das genauer anzusehen, aber im Notfall, mach ne while Schleife und am Ende machst du ne Überprüfung ob der String der eingeben wurde auch existieren kann und falls net, die Schleife, sprich den FileChooser Dialog wiederholen!
 

mic_checker

Top Contributor
Du meinst ne Überprüfung ob die angegebene Datei existiert?

Warum legst du nicht einfach ein File Objekt an, guckst mit exists() ob die Datei existiert und falls ja is gut, ansonsten halt net ...

Falls die Datei net existiert, kannst du unten deinen String ja auf "" setzen.
 

Corcovado

Bekanntes Mitglied
Hm, ich habs so versucht (Die fehlenden Deklarationen sind die gleichen wie in obigem Beispiel, nur halt klassenweit deklariert).
Das mit exist() hab ich versucht, es klappt bedingt, ich bekomme immer noch haufenweise Exceptions wenn ich beim Filechooser Fenster auf Cancel gehe, was kann ich da tun ?

Code:
public String readPath(){
    	filechooser = new JFileChooser();	
	hInput = filechooser.showOpenDialog(null);
	file = null;
	if( hInput == JFileChooser.APPROVE_OPTION){
		file = filechooser.getSelectedFile();
		szPathIn = file.getAbsolutePath();
	}
	
	if(((file.getAbsoluteFile()).length() != 0) && file.exists()){
		return szPathIn;
	}else{
		szPathIn = "";
		return szPathIn;
	}
}


PS:
Ich bekomme eine NullPointerException, ich glaube das is wichtig !?
 

Corcovado

Bekanntes Mitglied
Habs selber rausgefunden, man kann die if-else-Schachtelungen anders machen, um ein "Cancel", eine falsche Eingabe oder eine sinnvolle Eingabe abzufangen.

Code:
import java.io.File;

import javax.swing.JFileChooser;

public class File09 {
	private JFileChooser filechooser;
	private int hInput;
	private File file;
	private String szPathIn;
	
	public File09(){
		try{
			System.out.println("read path: #" + readPath() + "#");
		}catch(NullPointerException e){
			// reset vals
			szPathIn = "";
			e.printStackTrace();
		}
	}
	
	// FileChooser Window
	public String readPath() throws NullPointerException{
    	System.out.println("readPath()");//
    	filechooser = new JFileChooser();	
		hInput = filechooser.showOpenDialog(null);
		file = null;
		if( hInput == JFileChooser.APPROVE_OPTION){
			file = filechooser.getSelectedFile();
			szPathIn = file.getAbsolutePath();	
			if(file.exists()){
				System.out.println("readPath() file.exists() == true");//
			}else{
				System.out.println("readPath() file.exist() == false");//
				szPathIn = "";
			}
		}else{
			System.out.println("readPath() canceled");//
			szPathIn = "";
		}
		
		System.out.println("readPath() - end");//
		return szPathIn;
    }
	  
	/////////////////////////////////////////////////////////////////////
	public static void main(String[] args) {
		File09 f = new File09();
	}
}

Danke trotzdem fuer Eure Antworten !!!
 

mic_checker

Top Contributor
readPath() könntest du auch kürzer machen:

Code:
private String szPathIn = "";
...   
public String readPath() {
       System.out.println("readPath()");//
       filechooser = new JFileChooser();   
      hInput = filechooser.showOpenDialog(null);
      file = null;
      if( hInput == JFileChooser.APPROVE_OPTION){
         file = filechooser.getSelectedFile();
         szPathIn = file.getAbsolutePath();   
         if(!file.exists())           
            szPathIn = "";                  
      }    

      return szPathIn;
    }

Sollte eigentlich genauso klappen..

Das "throws NullPointerException" musst du auch nicht mit angeben...
 

Corcovado

Bekanntes Mitglied
Ich hab gewusst, dass das jetz kommt ;)

Habs auch schliesslich so angewendet. Aber zu meinem Verstaendnis is es halt oft fuer mich noch leichter die Dinge ausfuehrlichst in Einzelteile zu zerlegen und eher naiv zu implementieren (allein um mir meine Kommentare ausgeben zu lassen oder sie reinzuschreiben). Wenn ich dann mit so einer naiven Implementierung rumspiele entdecke ich oft erst wie man sie vereinfachen kann. Danke trotzdem.
 

mic_checker

Top Contributor
Ich teste auch immer mit jede Menge System.out... wenn etwas nicht richtig funktioniert ;) Die Überprüfung auf Cancel kannst du dir aber durch die Zuweisung von "" zu szPathIn oben sparen....Und wie gesagt muss man NullpointerException nicht explizit angeben bei throws.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Punkt von MouseListener hat falsche Koordinate AWT, Swing, JavaFX & SWT 2
S JavaFX JavaFX TableView scrollen färbt falsche Zeilen AWT, Swing, JavaFX & SWT 1
Blender3D Falsche Werte mit Java Toolkit Screensize AWT, Swing, JavaFX & SWT 4
H JavaFX - Button und Text - Falsche Darstellung AWT, Swing, JavaFX & SWT 3
T [Neuling] Textfeld Inhalt überprüfen und falsche Stellen als msg Ausgeben AWT, Swing, JavaFX & SWT 1
Arif Swing MouseMotionListener liefert falsche Werte ? AWT, Swing, JavaFX & SWT 7
E ActionListener führt falsche Funktion aus AWT, Swing, JavaFX & SWT 6
L Ausgabe in JEditorPane mittels HTMLEditorKit zeigt auf bestimmten Systemen falsche Zeichen AWT, Swing, JavaFX & SWT 1
V JWindow: Falsche Anzeige auf Ubuntu AWT, Swing, JavaFX & SWT 2
S JTable - 2D ArrayList & Falsche Werte. AWT, Swing, JavaFX & SWT 3
W GridBagLayout Falsche Größenanpassung AWT, Swing, JavaFX & SWT 6
hdi LayoutManager GridBagLayout : Komponente hat falsche Größe? AWT, Swing, JavaFX & SWT 2
F JComboBox gibt falsche werte AWT, Swing, JavaFX & SWT 3
A Label hat falsche Position AWT, Swing, JavaFX & SWT 4
P Frame - falsche Fenstergröße durch Rahmen? AWT, Swing, JavaFX & SWT 5
G JTable liefert falsche Row AWT, Swing, JavaFX & SWT 8
S Falsche Position, Elemente erscheinen nicht, Flackern AWT, Swing, JavaFX & SWT 6
M Falsche if-Anweisung? AWT, Swing, JavaFX & SWT 2
L Falsche Zeile gelöscht nach Spalte Sortierung in JTable AWT, Swing, JavaFX & SWT 2
C SWT Komplette Pfadangabe im Texfeld?! AWT, Swing, JavaFX & SWT 3
G Unterschiedliche Pfadangabe zu Icons zwischen JApplet und JWindow? AWT, Swing, JavaFX & SWT 2
T Fehlermeldungen bei Cancel FileChooser AWT, Swing, JavaFX & SWT 7
Bluedaishi FileChooser.ExtensionFilter AWT, Swing, JavaFX & SWT 4
C FileChooser Save-Dialog zeigt Files nicht an AWT, Swing, JavaFX & SWT 3
GenerationLost JavaFX FileChooser speichern ohne Zieldatei? AWT, Swing, JavaFX & SWT 12
N Swing Filechooser zweifarbig machen AWT, Swing, JavaFX & SWT 33
N Swing Zweifarbiges Layout für den Filechooser AWT, Swing, JavaFX & SWT 12
B FileChooser anpassen AWT, Swing, JavaFX & SWT 2
D Swing FileChooser mit einem neuen Rootordner AWT, Swing, JavaFX & SWT 6
X Bild via FileChooser in paint-Methode laden AWT, Swing, JavaFX & SWT 2
N FileWriter mit FileChooser AWT, Swing, JavaFX & SWT 3
D Swing JOptionPane + FileChooser .. Reihenfolge wichtig!? AWT, Swing, JavaFX & SWT 7
M FileChooser Bilder auswählen AWT, Swing, JavaFX & SWT 8
kodela FileChooser mit "absolutem" Root-Verzeichnis öffnen AWT, Swing, JavaFX & SWT 2
L Filechooser File Öffnen AWT, Swing, JavaFX & SWT 4
N FileChooser in View AWT, Swing, JavaFX & SWT 3
E Swing filechooser - nur Netzwerkpfade anzeigen lassen AWT, Swing, JavaFX & SWT 14
H FileChooser und Filter AWT, Swing, JavaFX & SWT 4
F Problem mit Mehrfachauswahl bei Filechooser AWT, Swing, JavaFX & SWT 2
G Fragen zum FileChooser AWT, Swing, JavaFX & SWT 5
G FileChooser Bild Speichern AWT, Swing, JavaFX & SWT 3
G FileChooser AWT, Swing, JavaFX & SWT 5
R filechooser soll sich das Verzeichnis merken AWT, Swing, JavaFX & SWT 2
K Bilddatei mit Filechooser auswählen und anzeigen/impotieren AWT, Swing, JavaFX & SWT 18
G FileChooser - Größe (Dimension) ändern AWT, Swing, JavaFX & SWT 2
V System Look and Feel, FileChooser, Optionen einer jar-Datei AWT, Swing, JavaFX & SWT 10
M bei filechooser.showSaveDialog(null); auf Datein. zugreifen AWT, Swing, JavaFX & SWT 2
U FileChooser Layout - Threads? AWT, Swing, JavaFX & SWT 17
D FileChooser der anderen Art. AWT, Swing, JavaFX & SWT 2
W Vorschau mit FileChooser: Ereignis bei Datei ausgewählt? AWT, Swing, JavaFX & SWT 4
H FileChooser AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben