Savedialog - getSelectedFile() mit richtiger Endung.

Status
Nicht offen für weitere Antworten.

Ariol

Top Contributor
Hi

1.
------------------------------------------------------------------------
ich hab folgenden Code zum speichern einer Klasse als serialisiertes Objekt:

Code:
public boolean saveCourseManager() {
		boolean saved = true;

		final JFileChooser fc = new JFileChooser();
		fc.setFileFilter(new CMFileFilter());
		int returnVal = fc.showSaveDialog(this);

		if (returnVal == JFileChooser.APPROVE_OPTION) {
			try {
				CourseManager.saveCourseManager(fc.getSelectedFile(), courseManager);
			} catch (Exception e) {
				saved = false;
			}
		}

		return saved;
	}

Soweit so gut funktioniert es auch.

Problem: Wenn ich beim Speichern die Endung nicht mit angebe, wird diese weggelassen.


Gibt es eine Möglichkeit das automatisch anhängen zu lassen?

------------------------------------------------------------------------



2.
------------------------------------------------------------------------
Hier gehts darum das ich in der Auswahlbox des Dateityps im Save- bzw. OpenDialog immer noch alle Dateien drinstehen habe.

Kann man das wegbekommen?
------------------------------------------------------------------------


Schonmal danke für alle Antworten.

Ariol
 

Wildcard

Top Contributor
1. Du bekommst ein File. Mach dir doch ein neues das deine Endung bekommt
2. Wie sieht dein Filter aus?
 

Ariol

Top Contributor
Wildcard hat gesagt.:
1. Du bekommst ein File. Mach dir doch ein neues das deine Endung bekommt
2. Wie sieht dein Filter aus?

Hui, das ging ja schnell^^

1. Stimmt - da hab ich mich wohl zu sehr auf irgendwelche tollen Methoden eingeschossen

2.
Code:
private class CMFileFilter extends FileFilter {

		@Override
		public boolean accept(File f) {
                        //cm-Dateien auswählbar und ordner sichtbar
			if (f.getName().toLowerCase().endsWith(".cm") || f.isDirectory()) {
				return true;
			}
			return false;
		}

		@Override
		public String getDescription() {
			return "CourseManager-File";
		}

	}
 

Wildcard

Top Contributor
Code:
public class Chooser {
	
	public static void main(String[] args) {
		JFileChooser chooser = new JFileChooser();
		chooser.setFileFilter(new CMFileFilter());
		chooser.showSaveDialog(null);
	}


}
class CMFileFilter extends FileFilter {

    @Override
    public boolean accept(File f) {
                      //cm-Dateien auswählbar und ordner sichtbar
       if (f.getName().toLowerCase().endsWith(".cm") || f.isDirectory()) {
          return true;
       }
       return false;
    }

    @Override
    public String getDescription() {
       return "CourseManager-File";
    }

 }
Also ich sehe damit nur cm Dateien
 

Wildcard

Top Contributor
Ach das meinst du. Tut mir leid, bin nicht sicher ob man das entfernen kann.
Dein Dateityp sollte allerdings die Default Einstellung sein.
 

Ariol

Top Contributor
ja, das ist nicht das Problem - naja, muss ich halt mit leben ^^

Danke für deine Hilfe. Speichern funktioniert jetzt:
Code:
public boolean saveCourseManager() {
		boolean saved = true;

		CMFileFilter cmFileFilter = new CMFileFilter();

		final JFileChooser fc = new JFileChooser();
		fc.setFileFilter(cmFileFilter);
		
		int returnVal = fc.showSaveDialog(this);

		if (returnVal == JFileChooser.APPROVE_OPTION) {
			try {
				File out = fc.getSelectedFile();
				if (!cmFileFilter.accept(out)) {
					out = new File(out.getAbsolutePath() + cmFileFilter.ending);
				}
				CourseManager.saveCourseManager(out, courseManager);
				
			} catch (Exception e) {
				saved = false;
			}
		}

		return saved;
	}

---------------------------------

Hab noch etwas:

Wenn die Datei bereits existiert, kann ich dann im Standard-Speichern-Dialog einstellen, dass dieser mir einen "Datei existiert bereits. Möchten Sie diese überschreiben"-Dialog rausschmeißt??

Das nachträgliche Abfragen ist etwas ungünstig...
 

Ariol

Top Contributor
Danke.

Das war ein Klasse Tipp.

Ich hab jetzt auch die automatische Erweiterung beim Speichern in den Teil gelegt.

Das ganze funzt super^^

Code:
@Override
		public void approveSelection() {
			File file = getSelectedFile();
			if (!accept(file)) {
				String ending = cmFileFilter.ending;
				file = new File(file.getAbsolutePath() + ending);
			}

			boolean override = true;

			if (file.exists()) {
				String message = language.getProperty("OVERRIDE",
						"File exists. Override?");
				String title = language.getProperty("OVERRIDE_TITLE",
						"Override file");
				int result = JOptionPane.showConfirmDialog(parent, message,
						title, JOptionPane.YES_NO_OPTION);

				if (result == JOptionPane.OK_OPTION) {
					override = true;
				} else {
					override = false;
				}
			}

			if (override) {
				super.approveSelection();
			}
		}
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben