Problem mit mehreren Fenstern

Status
Nicht offen für weitere Antworten.

Timmothey

Mitglied
Hallo!

Ich bin dabei für eine Aufgabe ein Musikarchiv zu basteln ein UI zu bauen.
Die Idee sieht vor (auf den Problemfall bezogen), dass man ein Grundfenster hat, in dem man die Alben und Titel sehen kann und über ein Menü ein neues Fenster öffnet um ein neues Album zum Archiv hinzuzufügen.

Das Fenster wird so aufgerufen:
Code:
public void addAlbKlick(ActionEvent evt){
		  int height = 200;  //Höhe   des Fensters zu Beginn
		  int width  = 500;  //Breite des Fensters zu Beginn
		  
		  guiAddAlbum window = new guiAddAlbum("Neues Album",height,width, DatenVerwaltung.Alben);
		  
		  window.pack();
		  window.setMinimumSize(new Dimension(600,435));
		  window.setVisible( true );
		  
	}

Geschlossen wird es so:
Code:
addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent evt) {
				setDefaultCloseOperation(close());
			}});

Die dazu gehörige Methode close():
Code:
final int close() {
		  final int n = JOptionPane.showOptionDialog( null, 
				  "Es gehen alle Daten verloren!",      // Fragetext 
				  "Schließen?",  // Titel 
				  JOptionPane.OK_CANCEL_OPTION, 
				  JOptionPane.WARNING_MESSAGE,  // Icon 
				  null, new String[] { "OK", "Abbrechen" }, 0 );
		  return (n == 0) ? JFrame.DISPOSE_ON_CLOSE : JFrame.DO_NOTHING_ON_CLOSE;
	  }

Öffnet man das Hinzufügen Fenser, schließt es wieder und öffnet es erneut, so ist die Darstellung "anders". Da ich nicht weiß, wie ich das beschreiben soll, habe ich Screenshots gemacht. Ganz oben das Fenster "normal", es folgen zwei neue Aufrufe mit den verzerrten Darstellungen.
Daten, die ggf. eingetragen werden, werden nicht wieder eingetragen, alle Fenster sind zu Beginn aller aufrufe leer, wie es sein soll.

problem.jpg


Ich würde mich freuen, wenn mir jemand einen Tipp geben könnte, wie das zu verhindern ist.

Vielen Dank im Voraus!

Mit freundlichen Grüßen,
Tim.
 
Also. Erstmal find ich es verwirrend, dass du deinem Fenster beim Instanziieren ein Größe (500 u 200) zu weist und diese dann gleich mit setMinimumSize änderst (600 u 435)... Und zu allem Überfluss rufst du auch noch pack(); auf. also 3 mal wird die Größe mehr oder weniger "verändert".

Du könntest auch einfach mit setVisible(true/false) arbeiten anstatt das Fenster jedes Mal neu zu erstellen... Musst dann halt bei setVisible(false) die Einträge löschen...
 
Vielen Dank für die Antwort!

Die Sache mit der Größe (500 und 200) ist auf die Anfänge zurückzuführen und war für die Positionierung auf dem Desktop, das habe ich jetzt aber gleich bei der Gelegenheit vereinfacht.
setMinimumSize() habe ich jetzt in die Klasse für das Fenster verfrachtet, dieses wird ganz am Anfang der Hauptfensterklasse als Instanz erschaffen und später mit setVisible() ein- und ausgeblendet.

So klappt das jetzt alles.
Ich habe also irgendwie das mit pack() und setVisible() falsch verstanden...

Bei Gelegenheit werde ich mich noch einmal damit auseinander setzen.

Danke nochmals!

Gruß,
Tim
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben