# SaveDialog - Überschreiben Warnung einbauen



## kekskennzeichen (16. Nov 2007)

Hallo zusammen,

wie bekomm ich denn in mein JFilechooser als SAVEDIALOG am einfachsten nen Warnung rein, die er mir zeigt wenn die geählte Datei schon vorhanden ist und ich dann brav klicken kann "ja überschreiben"?  :? 


Hier das Stück Code dazu


```
private void getSaveDialogg ( )
   {

      final JFileChooser fc = new JFileChooser ( );
      fc.setFileFilter (filter);
      fc.approveSelection ( );

      int state = fc.showSaveDialog (null);

      if (state == JFileChooser.APPROVE_OPTION)
      {
         if (fc.getSelectedFile ( ).getName ( ).endsWith (".xml"))
         {
            clusterfile.save (clusterMap, fc.getSelectedFile ( ).getAbsolutePath ( ));
         }
         else
         {
            clusterfile.save (clusterMap, fc.getSelectedFile ( ).getAbsolutePath ( ) + filter.ending ( ));
         }
      }
      else
      {

      }

   }
```

greetz
Kekskennzeichen


----------



## SlaterB (16. Nov 2007)

ob du den Dialog bearbeiten kannst weiß ich nicht,
aber du erhälst ja eine Datei die du selber prüfen kannst + neuen Dialog einblenden,
wenn dann das ÜBerschreiben abgeleht wird, könntest du wieder den JFileChoser anzeigen, 
ob an genau der gleichen Position, das weiß ich nicht,
zu irgendwas muss aber
JFileChooser(File currentDirectory) 
gut sein


----------



## Wildcard (16. Nov 2007)

approveSelection überschreiben.


----------



## Wolfgang Lenhard (17. Nov 2007)

Hi kekskennzeichen,
probiers mal damit:


```
/**
 * File:     FileSaveDialog.java
 * Package:  de.itbayern.summa.client.context.tools
 * 
 * Author:   Wolfgang Lenhard
 * 
 * Date:     11.01.2007
 * Revision: $Id: FileSaveDialog.java,v 1.2 2007/02/23 13:44:28 
 */
package de.psychometrica.tools.file;

import java.io.File;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;

/**
 * Displays a file chooser which asks if file should be overwritten
 * 
 * @author Wolfgang Lenhard
 * @version $Revision: 1.2 $
 * @since 1.5
 */
public class FileDialog {

	public static String showFileSaveDialog(JFrame parent, String filename,
			FileNameExtensionFilter filter) {

		if (filename.equals(""))
			filename = javax.swing.filechooser.FileSystemView
					.getFileSystemView().getDefaultDirectory().toString();

		File f = new File(filename);
		JFileChooser jfc = new JFileChooser();
		jfc.setFileFilter(filter);
		jfc.setSelectedFile(f);

		if (f.exists())
			jfc.setSelectedFile(f);
		int ret = jfc.showSaveDialog(parent);
		if (ret == JFileChooser.APPROVE_OPTION) {
			File sel = jfc.getSelectedFile();
			if (isWriteable(parent, sel))
				return jfc.getSelectedFile().toString();
			else
				showFileSaveDialog(parent, sel.getName(), filter);
		}
		return "";

	}

	public static String showFileOpenDialog(JFrame parent, String filename,
			FileNameExtensionFilter filter) {

		if (filename.equals(""))
			filename = javax.swing.filechooser.FileSystemView
					.getFileSystemView().getDefaultDirectory().toString();

		File f = new File(filename);
		JFileChooser jfc = new JFileChooser();
		jfc.setFileFilter(filter);
		jfc.setSelectedFile(f);

		if (f.exists())
			jfc.setSelectedFile(f);
		int ret = jfc.showOpenDialog(parent);
		if (ret == JFileChooser.APPROVE_OPTION) {
			return jfc.getSelectedFile().toString();
		}
		return "";

	}

	private static boolean isWriteable(JFrame parent, File f) {
		if (f.exists())
			return setQuestionDialog(
					parent,
					"Es existiert bereits eine Datei mit diesem Namen. Soll die bestehende Datei überschrieben werden?");
		return true;

	}

	public static boolean setQuestionDialog(JFrame parent, String s) {
		Object[] o = new Object[] { "Ja", "Nein" };
		int res = JOptionPane.showOptionDialog(parent, s, "",
				JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null,
				o, "Yes");
		if (res == JOptionPane.NO_OPTION)
			return false;
		return true;

	}
}
```


----------

