JFileChooser - ungefragtes überschreiben

Acopolypse

Mitglied
Hi,

ich habe eine Methiode, um eine .bmp-datei über den JFileChooser zu laden und zu speichern. Allerdings habe ich da noch 2 Probleme.


1. Egal, ob ich auf laden oder speichern klicke in der Auswahl klicke, der JFileChooser zeigt mir den
Button "Speichern" an. Das laden funktioniert aber trotzdem.
filechooser.png



2. Er überschreibt beim Speichern existierende Dateien ohne nachzufragen.




Java:
 public static File loadsaveFile(String action)
  {
	  JFileChooser chooser = new JFileChooser();
	  MyBMPFilter bmpfilter = new MyBMPFilter();
	  chooser.setDialogTitle("File Chooser");
	  chooser.setMultiSelectionEnabled(false);
	  chooser.setDragEnabled(false);
	  chooser.addChoosableFileFilter(bmpfilter);
	  int choice;
	  if(action == "save")
	  {
		  choice = chooser.showSaveDialog(new JFrame());
	  }
	  else
	  {
		  choice = chooser.showOpenDialog(new JFrame());
	  }
	  
	  if(choice == JFileChooser.APPROVE_OPTION)
	  {
		  return chooser.getSelectedFile(); //pressing OK
	  }
	  if (choice == JFileChooser.CANCEL_OPTION)
	  {
		  return null; // cancel
	  }
	   return null;


Hier noch die selbst erstellte Filterklasse, falls diese eine Rolle spielen sollte.
Java:
public class MyBMPFilter extends FileFilter implements FilenameFilter 
{ 
	public boolean accept(File file) 
	{ 
		if (file.isDirectory()) 
		{ return true; 
		}
		String filename = file.getName();
        return filename.endsWith(".bmp");
    }

	public String getDescription() 
	{ 
		return "*.bmp"; 
	}

	@Override
	  public boolean accept( File f, String s )
	  {
	    return s.toLowerCase().endsWith( ".bmp" );
	  }

}
 

Acopolypse

Mitglied
Alsooo,

ich hab mal ein eigenes Fenster dafür gebastelt:

Java:
public class Bestaetigung extends JFrame
{
	ListenerClasses listener;
	JPanel messagepane;
	JPanel buttonpane;
	public Bestaetigung ()
	{
	
	  this.setLayout(new BorderLayout());
	  buttonpane.setLayout(new FlowLayout());
	  messagepane = new JPanel();
	  JButton ja = new JButton("JA");
	  ja.addActionListener(listener.bestaetigungsActionListener());
      ja.setActionCommand("JA");
	  JButton nein = new JButton("NEIN");
	  nein.addActionListener(listener.bestaetigungsActionListener());
      nein.setActionCommand("NEIN");
	  buttonpane.add(ja);
	  buttonpane.add(nein);
	  messagepane.getGraphics().drawString("Wollen Sie die existierende Datei wirklich ueberschreiben?" , 5, 5); 
	  this.add(buttonpane, BorderLayout.CENTER);
	  this.add(messagepane, BorderLayout.NORTH);
	  this.setSize(200, 100);
	  this.setVisible(true);
	}
}

Ich habe die Methode versucht so umzuschreiben, dass das Fenster aufgerufen wird. Allerdings geschieht das nicht.

Java:
  public static File loadsaveFile(String action)
  {
	  JFileChooser chooser = new JFileChooser();
	  MyBMPFilter bmpfilter = new MyBMPFilter();
	  chooser.setDialogTitle("File Chooser");
	  chooser.setMultiSelectionEnabled(false);
	  chooser.setDragEnabled(false);
	  chooser.addChoosableFileFilter(bmpfilter);
	  int choice;
	  File bmpfile = new File(action);
	  if(action == "save")
	  {
		  choice = chooser.showSaveDialog(new JFrame());
	  }
	  else
	  {
		  choice = chooser.showOpenDialog(new JFrame());
		  if (bmpfile.exists() == true )
				  {
			   new Bestaetigung();
				  }
	  }
	  
	  if(choice == JFileChooser.APPROVE_OPTION)
	  {
		  return chooser.getSelectedFile(); //pressing OK
	  }
	  if (choice == JFileChooser.CANCEL_OPTION)
	  {
		  return null; // cancel
	  }
	   return null;
  }

Ausserdem weiß ich nicht, wie ich beim selbst erstellten Listener den Befehl zum Abbruch/Überschreiben geben soll. APPROVE_OPTION und CANCEL_OPTION funktionieren so jedenfalls nicht...

Java:
public class ListenerClasses
{
	public ActionListener bestaetigungsActionListener()
	{
		return new ActionListener()
		{
			

			@Override
			public void actionPerformed(ActionEvent e) 
			{
				if (e.getActionCommand().toString() == "JA")
				{
					JFileChooser.APPROVE_OPTION;
				}
				else 
				{
					JFileChooser.CANCEL_OPTION;
				}
			}
		};
	}
}
 

nrg

Top Contributor
machs doch da rein:

Java:
 if(action == "save")
      {
          chooser.setDialogType( JFileChooser.SAVE_DIALOG );
          choice = chooser.showSaveDialog(new JFrame());
      }
      else
      {
          chooser.setDialogType( JFileChooser.OPEN_DIALOG );
          choice = chooser.showOpenDialog(new JFrame());
      }

andere kuck ich mir gleich an. grad keine zeit mehr
 

Acopolypse

Mitglied
Leider verstehe ich nicht ganz , was Du meinst. Vielleicht sowas(funktioniert auch nicht)?

Java:
  public static File loadsaveFile(String action)
  {
	  JFileChooser chooser = new JFileChooser();
	  MyBMPFilter bmpfilter = new MyBMPFilter();
	  chooser.setDialogTitle("File Chooser");
	  chooser.setMultiSelectionEnabled(false);
	  chooser.setDragEnabled(false);
	  chooser.addChoosableFileFilter(bmpfilter);
	  int choice;
	  File bmpfile = new File(action);
	  if(action == "save")
	  {
		  choice = chooser.showSaveDialog(new JFrame());
		  if(choice == JFileChooser.APPROVE_OPTION)
		  {
			  if (bmpfile.exists() == true )
			  {
		   new Bestaetigung();
			  }
			  return chooser.getSelectedFile(); //pressing OK
		  }
		  if (choice == JFileChooser.CANCEL_OPTION)
		  {
			  return null; // cancel
		  }
		  return null;
	  }
	  else
	  {
		  choice = chooser.showOpenDialog(new JFrame());
		  if(choice == JFileChooser.APPROVE_OPTION)
		  {
			  return chooser.getSelectedFile(); //pressing OK
		  }
		  if (choice == JFileChooser.CANCEL_OPTION)
		  {
			  return null; // cancel
		  }
		  return null;
	  } 
  }
 

nrg

Top Contributor
du wolltest wissen, wie man den button ändert:
filechooser.png


das hab ich dir doch grad schon geschrieben und jetzt kommst du mit einem ganz anderen code. funktionierte das nicht? (war ungetestet)
 

Acopolypse

Mitglied
Achsooo, ich hatte gar nicht erkannt, dass du da was geändert hast. Ich dachte, dass du mir einen Tipp geben willst, an welcher Stelle ich die Abfrage für Dateiüberschreibung setzen soll.

Gleich mal ausprobieren...

Edit: getestet -> nichts hat sich verändert :noe:
 
Zuletzt bearbeitet:

nrg

Top Contributor
habs auch grad getestet. bei mir gehts

edit:

loadsaveFile("wasauchimmer");
openhjgn.jpg



loadsaveFile("save");
savet83c.jpg


das ist doch das, was du wolltest, oder?
 
Zuletzt bearbeitet:

nrg

Top Contributor
stimmt da hast du recht :). dachte mir schon, dass das showSaveDialog bzw showOpenDialog eigentlich automatisch machen sollten ;).

"Note that the text that appears in the approve button is determined by the L&F."

dachte das heisst dann, dass es abhängig davon ist, wie setDialogType gesetzt ist. Aber anscheinend heisst das was anderes. könnte aber vllt auch der Grund von deinem Problem sein aber leider weiss ich absolut net was L&F heissen soll :(

edit: grad beim senden fiel mir Look&Feel ein. Das hilft mir aber noch nicht ganz weiter
 

Acopolypse

Mitglied
mit Look & Feel kann ich ehrlich gesagt nicht viel anfangen :/

Aber das dürfte ja auch nicht der Grund sein, wieso sich kein Bestätigungsfenster öffnet beim Überschreiben.
 

eRaaaa

Top Contributor
Ich habe jetzt zwar nicht alles verfolgt, aber ich würde dir mal raten kleinere Testprogramme zu schreiben...
Java:
	public static void main(String[] args) {
		JFileChooser chooser = new JFileChooser();
		chooser.showOpenDialog(null);
		chooser.showSaveDialog(null);
		
	}

geht sowas? Wenn nein, okay könnte am L&F o.ä. liegen, wenn ja, liegts an deinem Code usw...

Eine Sache die schon ziemlich falsch ist, ist dass du Strings immer mit == vergleichst...
Java:
if(action == "save")
je nachdem wo der String "action" herkommt, kann das kritisch werden..also benutze lieber immer direkt equals !
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Probleme mit Zugriff auf Dateisystem Windows 10 ( jFileChooser) Java Basics - Anfänger-Themen 17
M Interface JFileChooser vergrößern Java Basics - Anfänger-Themen 4
V Mehrere Dateien aus JFileChooser in eine ArrayList speichern Java Basics - Anfänger-Themen 2
O JFileChooser Verhalten -Pfad Java Basics - Anfänger-Themen 15
B JFileChooser und JList Java Basics - Anfänger-Themen 7
D Datei mit JFileChooser erstellen Java Basics - Anfänger-Themen 5
M Umgebungsvariable JFileChooser#setCurrentDirectory via Properties setzen? Java Basics - Anfänger-Themen 5
M JFileChooser Ordner auswählen Java Basics - Anfänger-Themen 5
E Bild per Verzeichnis/JFileChooser auf JPanel laden Java Basics - Anfänger-Themen 13
B JUnit für JFileChooser Java Basics - Anfänger-Themen 6
B FileWriter und JFileChooser zusammenfügen Java Basics - Anfänger-Themen 3
B Methoden JFileChooser und sein "Startverzeichnis" Java Basics - Anfänger-Themen 3
D JFileChooser & FileReader Java Basics - Anfänger-Themen 4
CR7 JFileChooser DateiÖffnen Java Basics - Anfänger-Themen 7
G JFileChooser "alle Dateien" unterbinden Java Basics - Anfänger-Themen 3
K Methoden JFileChooser Dateipfadübergabe Java Basics - Anfänger-Themen 5
S Wechselmedien in JFileChooser Java Basics - Anfänger-Themen 4
H speichern unter (JFileChooser) Java Basics - Anfänger-Themen 2
H JFileChooser... dateispeicherpfad selbst aussuchen Java Basics - Anfänger-Themen 4
M Bild aus URL via JFileChooser speichern Java Basics - Anfänger-Themen 10
D JFileChooser gewählte Datei "verwenden" Java Basics - Anfänger-Themen 2
I Probleme mit jFileChooser Java Basics - Anfänger-Themen 2
c_sidi90 Jfilechooser Problem Dateinamefeld Java Basics - Anfänger-Themen 11
D JFileChooser Java Basics - Anfänger-Themen 18
S JFileChooser - Dateinamen vorschlagen/Inhalt der Ausgabe prüfen Java Basics - Anfänger-Themen 3
Z JFileChooser/ Panel + Menüproblem Java Basics - Anfänger-Themen 3
Z CSV-Datei einlesen mit dem JFileChooser !!! Java Basics - Anfänger-Themen 5
I (JFileChooser)Wie kann eine Jar auf Dateien eines bestimmten Ordners zugreifen? Java Basics - Anfänger-Themen 9
W JFileChooser - Eingebbare Zeichen begrenzen Java Basics - Anfänger-Themen 3
T Standardordner für JFileChooser festlegen Java Basics - Anfänger-Themen 2
R jFileChooser aus main- Programm aufrufen Java Basics - Anfänger-Themen 3
G Mehrere Dateien mit JFilechooser auswählen und öffnen. Java Basics - Anfänger-Themen 6
B Wie Dateitypauswahl in JFileChooser Opendialog begrenzen? Java Basics - Anfänger-Themen 2
M JFileChooser Dateityp vorbelgen Java Basics - Anfänger-Themen 3
G Mit jFileChooser Pfad rauskriegen? Java Basics - Anfänger-Themen 3
A JFileChooser soll sich letzten ordner merken Java Basics - Anfänger-Themen 4
D Vorschau bei jfilechooser? Java Basics - Anfänger-Themen 3
G JFileChooser - Change Icon Problem! Java Basics - Anfänger-Themen 2
J Wait_Cursor beim JFileChooser? Java Basics - Anfänger-Themen 8
G JFileChooser übergabe an Directory Java Basics - Anfänger-Themen 4
X JFileChooser Auswahl Java Basics - Anfänger-Themen 4
A JFileChooser DefaultDirectorie Java Basics - Anfänger-Themen 7
G jFileChooser speichern + Fehlermeldung Java Basics - Anfänger-Themen 10
S JFileChooser konfigurieren Java Basics - Anfänger-Themen 6
M JFileChooser, Nur im C:Programme Java Basics - Anfänger-Themen 5
A JFileChooser Darstellung Java Basics - Anfänger-Themen 3
G jFileChooser auf den Abbrechen-Button reagieren Java Basics - Anfänger-Themen 3
R JFileChooser hängt java Programm auf Java Basics - Anfänger-Themen 6
S JFileChooser öffnet Unterverzeichnisse sehr langsam Java Basics - Anfänger-Themen 2
O JFileChooser Filter an Dateinamen hängen Java Basics - Anfänger-Themen 4
G speichern mit JFileChooser Java Basics - Anfänger-Themen 2
G jFileChooser Java Basics - Anfänger-Themen 8
G JFileChooser - Anzeige beschleunigen Java Basics - Anfänger-Themen 2
G JFileChooser kommt doppelt Java Basics - Anfänger-Themen 3
2 JFileChooser- Dateien nur als bestimmte Formate speichern Java Basics - Anfänger-Themen 4
E JFileChooser -> Verzeichnis setzen Java Basics - Anfänger-Themen 10
E JFileChooser- Dateiname Feld? Java Basics - Anfänger-Themen 2
B JFileChooser problem Java Basics - Anfänger-Themen 3
N immer als *.xml speichern (jfilechooser) Java Basics - Anfänger-Themen 2
P Problem mit JFileChooser und FileFilter Java Basics - Anfänger-Themen 8
D Pfad-Auswahl mit dem JFileChooser Java Basics - Anfänger-Themen 8
H JFileChooser Problem Java Basics - Anfänger-Themen 3
B JFileChooser Abfrage für Datei speichern Java Basics - Anfänger-Themen 3
G Jfilechooser ordner auswählen? Java Basics - Anfänger-Themen 2
D JFileChooser Darstellung ändern? Java Basics - Anfänger-Themen 4
G JFileChooser EventListener auf Öffnen Button Java Basics - Anfänger-Themen 3
J NetBeans und JFileChooser Java Basics - Anfänger-Themen 4
M JFileChooser Überschreiben Dialog? Java Basics - Anfänger-Themen 2
M JFileChooser - Dateiendung vorgeben? Java Basics - Anfänger-Themen 13
G JFileChooser - Datei speichern Java Basics - Anfänger-Themen 9
P JFileChooser soll nur .txt files anzeigen Java Basics - Anfänger-Themen 5
P JFileChooser: Methode: setCurrentDirectoy (File Dir) gehtNet Java Basics - Anfänger-Themen 2
F JFileChooser Java Basics - Anfänger-Themen 33
S BufferedReader (JFileChooser) Java Basics - Anfänger-Themen 2
H JFileChooser - FileFilter Java Basics - Anfänger-Themen 2
T neue Instanz von JFileChooser => applikation friert ein Java Basics - Anfänger-Themen 2
B JFileChooser <-> FileDialog Java Basics - Anfänger-Themen 4
S FileDialog/ JFileChooser, Bilder laden, Dateifilter, Diashow Java Basics - Anfänger-Themen 8
B JFileChooser für Files and Directories Java Basics - Anfänger-Themen 3
S Probleme mit JFileChooser! Java Basics - Anfänger-Themen 4
M JFileChooser Directory setzen Java Basics - Anfänger-Themen 6
M JFileChooser Rückgabewert Java Basics - Anfänger-Themen 2
T JFileChooser für Ordner Java Basics - Anfänger-Themen 7
S Größe einer Datei, JFileChooser Java Basics - Anfänger-Themen 5
G Frage zum jFileChooser.showSaveDialog Java Basics - Anfänger-Themen 2
J JFileChooser Java Basics - Anfänger-Themen 4
W Equals-Methode überschreiben bei composition Java Basics - Anfänger-Themen 20
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
T Printwriter Datei nicht überschreiben Java Basics - Anfänger-Themen 10
JensXF Methode überschreiben, so richtig? Java Basics - Anfänger-Themen 4
E Slider - Wert übergeben und überschreiben Java Basics - Anfänger-Themen 5
E Ausgabe überschreiben Java Basics - Anfänger-Themen 15
L 2 Dimensional Array werte überschreiben Java Basics - Anfänger-Themen 1
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
C Methoden überschreiben Java Basics - Anfänger-Themen 3
Jinnai4 Clipboard überschreiben? Java Basics - Anfänger-Themen 11
J Methoden Equals Methode für Integer und Objekte überschreiben? Java Basics - Anfänger-Themen 9
D .txt überschreiben mit BufferedWriter ohne reset Java Basics - Anfänger-Themen 6
neerual Feld mit Einsen und Nullen füllen und überschreiben Java Basics - Anfänger-Themen 1
N awt: vererbte Methode überschreiben Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben