Java JFrame schließen und öffnen

Timdaroxxa

Lieutenant
Registriert
März 2009
Beiträge
954
Hi,

wie schließe ich ein JFrame und erstelle ein neues gleicher Klasse?
Also ich weis naütrlich, wie man einzeln z.B. in meiner Main-Methode ein neues Fenster aufruft bzw. dass alte schließt z.B. über einen ActionListener.
Aber beides zusammen über ein Button z.B. erschließt sich mir nicht.
Das Ergebnis soll dann sein, dass ich das JFrame über einen Button sozusagen immer wieder zurücksetzen kann.

Code:
public void actionPerformed(ActionEvent e) {
		String which = e.getActionCommand();
		if(which.equals("restart")) {
			this.dispose();
			MouseMotionField field = new MouseMotionField();
			field.init();
		}
	}

Herzliche Grüße
Tim
 
Ich versteh dein Problem zwar nicht ganz, aber ich versuchs mal:
Code:
new DeineJFrameKlasse();
oder du implementierst eine reset()-Methode in deine vorhandene JFrame-Klasse, welche alle Elemente deines Fensters zurücksetzt?
 
Mhhm.
Also oben im Code ist mein JFrame vom Typ MouseMotionField. Dass möchte ich jetzt aus sich heraus nochmal öffnen, aber dass alte Fenster schließen.
 
Neue Instanzen einer Klasse erzeugt man mit dem "new" Befehl. Um das JFrame dann sichtbar zu machen, musst du noch die Methode setVisible(true) aufrufen.

Das solltest du aber auch alles schon mal in der main-Methode gemacht haben. Du musst den Code nur kopieren.
Besser wäre natürlich eine eigene Methode für das Erstellen, um doppelten Code zu vermeiden.
 
Du "tötest" das Objekt mit dem JFrame und erstellst sofort ein neues JFramer-Objekt.
 
javax.swing.JFrame erlaubt die Methode #dispose() zum Terminieren. Zugegeben die Swing-API ist durch das Design etwas aufgebläht, aber solche Fragen lassen sich wunderbar der API-Dokumentation entnehmen. Es lohnt den Aufwand sich eingehend damit zu beschäftigen. Eine moderne IDE hilft natürlich auch. Die API-Hierarchy ist nur einen Tastendruck entfernt...
 
Code:
field.init();

Macht das neue JFrame sichtbar... Hab ich vergessen zu sagen.

Mir ist das "new"-Zeug usw. bekannt, nur lässt sich anscheinend mit der Methode (siehe Code) kein neues Fenster erstellen, da es mit dispose() genau wie das davor geschlossen wird.
 
Poste ein lauffähiges Beispiel, dann kann man Dir weiterhelfen. Oder noch besser: verwende einen Debugger!

Wie @baizon schon sagt, hört sich so an, als ob Du das neue erstelle Objekte gleich wieder abschießst.
 
Hi,

Also ich würde mal sagen, dass das so funktionieren kann:

Timdaroxxa schrieb:
Code:
public void actionPerformed(ActionEvent e) {
		String which = e.getActionCommand();
		if(which.equals("restart")) {
			this.dispose();
			new DeinJFrame().setVisible(true);
		}
	}

Greetings
 
Zurück
Oben