JDialog über JFileChooser anzeigen

BlubBlub

Bekanntes Mitglied
hi,

in meinem editor hab ich ein JMenuItem "Datei Speichern unter...".
Ich verwende einen JFileChooser um den speicherndialog beim betätigen dieses JMenuItems anzuzeigen.
wird eine datei versucht zu überschreiben soll sich ein JDialog öffnen mit der warnung, dass diese datei bereits exisitert und der frage ob die datei übeschrieben werden soll oder der vorgang abgebrochen werden soll.
ich will dabei, dass sobald sich das warnfenster öffnet der speicherndialog des JFileChoosers weiterhin
hinter dem warnfenster sichtbar bleibt.
doch sobald sich das warnfenster öffnet, verschwindet der JFileChooser und ich versteh nicht warum.
Vielleicht liegt es an dem this in der createDialog Methode, welches sich aufs JFrame also das editor fenster bezieht.
doch selbst wenn ich den JFileChooser als argument übergebe funktionierts nicht.
hier der code:

Java:
	       optionPane = new JOptionPane(
	                "Die Datei ist bereits vorhanden!\n"
	                + "Möchten Sie die Datei wirklich überschreiben?\n",
	                JOptionPane.WARNING_MESSAGE,
	                JOptionPane.OK_CANCEL_OPTION);
	       dialog = optionPane.createDialog(this,"MyEditor");   //this ist der JFrame
	       dialog.pack();


....
....
....


public void actionPerformed( ActionEvent e )
{   
         if(currentCard.getCurrentCard().equals(TEXTFILE) 
        {
	             if ( fcTextSave.showSaveDialog( null ) == JFileChooser.APPROVE_OPTION )
	            { 
	    			    dialog.setVisible(true);
                    }
        }
}
 
Zuletzt bearbeitet:
nee ebend nicht, der JFileChooser stellt mir lediglich die verzeichnise und die dateien zur verfügung.
wenn ich eine bereits exisitierende datei überschrieben will, dann gibt er mir kein warnfenster aus dass diese datei bereits exisitiert.

wenn du aber weiterhin sagst, dass es so ist, dann lass ich mich auch gern eines besseren belehren.
ich wäre dann neugierig zu erfahren wie das geht.

Java:
import java.awt.event.ActionEvent;
import java.io.File;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import javax.swing.KeyStroke;
import javax.swing.filechooser.FileNameExtensionFilter;




public class test extends JFrame {

	public static void main(String[] args)
	{
		new test();
	}
	
		JFileChooser fcPictureSave;
		FileNameExtensionFilter filter4;
		JOptionPane optionPane;
		JDialog dialog;
	
		public test()
		{
	       setSize(500, 500);
	       //setLocationRelativeTo(null);
	       setLocation(0,0);
	       JMenuBar menuBar = new JMenuBar();
	       JMenu fileMenu = new JMenu("Datei");
	       menuBar.add(fileMenu);
	       setJMenuBar(menuBar);
	      
	       
	       fcPictureSave = new JFileChooser("C:/Users/My/Desktop/MyJava");
		   filter4 = new FileNameExtensionFilter("PNG-File (*.png)", "png");
		   fcPictureSave.setFileFilter(filter4);
		   fcPictureSave.setAcceptAllFileFilterUsed(false); 
		   
		   
	       optionPane = new JOptionPane(
	                "Die Datei ist bereits vorhanden!\n"
	                + "Möchten Sie die Datei wirklich überschreiben?\n",
	                JOptionPane.WARNING_MESSAGE,
	                JOptionPane.OK_CANCEL_OPTION);
	       dialog = optionPane.createDialog("MyEditor"); 	
	       dialog.pack();
	
	       
	       fileMenu.add(new AbstractAction()
	       { 
	    	   { 
	    		   putValue( Action.NAME, "Speichern unter..." ); 
	    		   putValue( Action.ACCELERATOR_KEY , KeyStroke.getKeyStroke("F12") ); 
	    	   }	
	    	   
	    	   public void actionPerformed( ActionEvent e )
	    	   { 
					if ( fcPictureSave.showSaveDialog( test.this ) == JFileChooser.APPROVE_OPTION ) 
					{		
								dialog.setLocationRelativeTo(test.this);
								dialog.setVisible(true);
								System.exit(0);
					}
	    	   }
	   
	       }); 

	      setVisible(true); 
	   
	       
	       
	}
}

P.S. hier ein kleiner code, falls jemand ne lösung für mein problem weiß, kann er mir vielleicht zeigen was ich dort ändern sollte.
(ist eine stark vereinfachte version zu der die ich eigentlich programmiert hab)
 
Zuletzt bearbeitet:
meinst du die demo "WSFileChooserDemo" dessen Quelcode auch hier einsehbar ist Using Swing Components: Examples (The Java™ Tutorials > Creating a GUI with JFC/Swing > Using Swing Components)

falls ja dieses beispiel verwendet keinen JFileChooser.
um es vielleicht noch mal deutlich zu machen, mir gehts hauptsächlich darum dass nachdem ich im
JFileChooser eine bereits bestehende datei versuche zu überschreiben, der JFileChooser nicht einfach verschwindet, sondern noch weiterhin im Hintegrund zu sehen ist, während das warnfenster aufgeht.
es geht wirklich in erster linie darum den JFileChooser im Hintergrund weiter sichtbar zu haben.
 
Zuletzt bearbeitet:
Achso,

ja ich glaube das geht nicht so einfach, weil sich der JFileChooser einfach schliet wenn du den Knopf drückst. Da musste irgendwie denke ich ne eigene Klasse schreiben und die vom JFileChooser ableiten.
 

Neue Themen


Zurück
Oben