FileChooser

MariusMeier

Mitglied
Guten Abend!

Ich habe einen JFileChooser programmiert. Sieht folgendermassen aus:

Code:
JFileChooser chooser = new JFileChooser();
	FileWriter fileFil;
else if(e.getSource() == itemSpeichern) {
			
			//File Chooser, um den Filter abzuspeichern
			chooser.setMultiSelectionEnabled(false);
			
			//Der Filter stellt sicher, dass nur .txt Files abgespeichert werden können
			chooser.setFileFilter(new FileFilter() {
				public boolean accept(File f) {
					return f.isDirectory() || f.getName().toLowerCase().endsWith(".txt");
				}
				
				public String getDescription() {
					return ".txt";
				}
			});
			
			int state = chooser.showSaveDialog(null);
			
			//Wenn Speicher-Button gedrückt, dann soll das File gespeichert werden
			if(state == JFileChooser.APPROVE_OPTION) {
				File file = chooser.getSelectedFile();
				
				if(!file.exists()) {
					try {
						//Textfile erstellen und Daten des Filters abspeichern
						System.out.println("Write File: " + file.getName());
						fileFil = new FileWriter(file.toString()+chooser.getFileFilter().getDescription());
						fileFil.write("hello");
						fileFil.close();
				      } 
					
					catch (IOException excp) {
				         System.out.println("Fehler beim Erstellen der Datei");
				      }
				}
				
				else {
					JOptionPane
					.showMessageDialog(
							new Frame(),
							"Dateiname schon vorhanden!",
							"Fehler", JOptionPane.WARNING_MESSAGE);
				}
			}

Wenn ich nun eine Datei abspeichere, welche schon vorhanden ist, dann spuckt es mir diesen JOptionPabe aus (Dialog)... aber schliesst auch wieder den JFileChooser... wie kann ich dieses Frame trotzdem aktiv halten wenn es den Dateinamen schon gibt ?

MFG Marius Meier
 
Warum prüfst du das nicht schon in deiner accept Methode? Wenn der Nutzer erst eine Datei ausgewählt hat ist es aus Nutzersicht sehr unschön wenn er dann darüber informiert wird dass seine Auswahl gar nicht erlaubt war. Und wenn er eine Datei überschreiben möchte (also eine bereits existierende auswählt) warum sollte man ihm das verbieten? Richtig wäre meiner Meinung nach ein Dialog der fragt ob die Datei überschrieben werden soll oder nicht (wenn nicht kann der Nutzer den FileChooser selbst erneut aufrufen oder du machst ihn direkt wieder auf, was ich wiederum unschön finde....).
 
Zurück