aus Fenster anderes Fenster öffnen und wieder umgekehrt

maGG

Bekanntes Mitglied
Ich möchte aus meinem JFrame1 mein JFrame2 öffnen und das JFrame1 gleichzeitig schließen/nicht mehr sichtbar machen. Danach möchte ich mit einem "Zurück"-Button wieder ins ursprünglich Frame1 und JFrame2 wieder schließen/ausblenden.

Ich habe das aktuell so gelöst:

(der Button zum JFrame2 -> also aus JFrame1 initiiert)
Java:
    private void jMenuItem10ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        this.dispose();
        //Filialen.setLocationRelativeTo(null);
        //Filialen.setLocationRelativeTo(getParent());
        final Dimension d = this.getToolkit().getScreenSize();
        Filialen.setLocation((int) ((d.getWidth() - this.getWidth()) / 2), (int) ((d.getHeight() - this.getHeight()) / 2));
       
        Filialen.setVisible(true);
        Filialen.setSize(800, 600);
    }

(der Button zum JFram1 - also aus JFram2 initiiert)
Java:
    private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {                                        
        Filialen.dispose();
        GUI.main(null);
    }

Ich bin mir nicht sicher, ob das die eleganteste bzw. sinnvollste Lösung ist ... wie würdet ihr das machen? Nebenbei erwähnt; ich arbeite mit dem GUI Builder in Netbeans, also mit swing.
 
Moin,

habe es zwar nicht ganz verstanden, aber:
wenn Du (wie im zweiten Code) Filialen disposed, da kannst Du es nicht wie im ersten Code mit setVisible() wieder sichtbar machen !!

gleichzeitig schließen/nicht mehr sichtbar machen
Du musst Dich schon entscheiden: ENTWEDER Beenden ODER nicht mehr sichtbar machen !!
Also setVisible(false) und setVisible(true) - dann bleibt das Objekt im Speicher erhalten
oder dispose() und anschließend new MeinObjekt() - hier wird es aus dem Speicher entfernt und muss anschließend neu erzeugt werden!

VG Klaus
 
Schau dir in dem Zusammenhang lieber mal das CardLayout an, was den dynamischen Wechsel zwischen mehreren Panels möglich macht.
Es ist a) benutzerfreundlicher im selben Fenster zu bleiben und nur das Layout zu wechseln und b) stößt du nicht auf die Probleme ein Fenster sichtbar / unsichtbar zu machen. Du musst lediglich das erwünschte JPanel nach vorne bringen.
 
Ah super, ok danke das hat mir schon sehr geholften! Habs jetzt erst mal nur mit .setVisible() gemacht.

Ok diese CardLayouts sehen auch sehr interessant aus! Bei mir sind die zwei JFrames jedoch unterschiedlich groß und ich habe grad gelesen, dass die Container jeweils die Größe des größten Containers annehmen. Dann müsste ich halt meine Ganzes Layout verwerfen hmmm
 
Es gibt auch eine Klasse die sich JDialog nennt womit man, wie der Name schon sagt, Dialoge anzeigen lassen kann (Popup Fenster). Vielleicht wäre das ja das richtige für dich.

Edit: wobei.. Wenn du zwischen den Fenster hin und her navigieren willst wäre das doch nicht so das richtige. Dialoge sind eher für andere Sachen gedacht .
 

Zurück
Oben