Comment revenir à une JFrames en Java

J'ai un bouton dans une JFrame, si elle est pressée, elle nous emmène dans un autre cadre.
J'ai utilisé ce code:

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {

    SecondForm secondform = new SecondForm();
    secondform.setVisible(true);
    setVisible(false);
    dispose();
    }

De sorte que le nouveau cadre s'ouvre et tout est ok. Puis j'ai placé un bouton -dans la deuxième image - pour revenir à l'image précédente. J'ai utilisé ce code:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    MainForm Mform = new MainForm();
    Mform.setVisible(true);
    setVisible(false);
    dispose();
}                                        

La chose est, je ne pense pas que ce soit la bonne façon de le faire. Ce que je veux, c'est:

  • cacher la première image
  • montrer le nouveau deuxième
  • disposer le second
  • afficher à nouveau la première

Est-il un moyen de le faire à l'aide de la première MainForm exemple et de ne pas en créer un nouveau à chaque fois que je veux revenir en arrière.
J'ai surveillé mon programme et chaque fois que je vais en arrière et en avant les images et comme je le soupçonnais, la ram utilisée par elle continue à augmenter.

Merci d'avance.

EDIT : j'ai un système de connexion et lorsque l'utilisateur de mettre les bonnes informations d'identification d'un nouveau ManiForm instance est créée.

MainForm Mform = new MainForm();
Mform.setVisible(true);

C'est l'exemple que je veux utiliser. Ii-il un moyen de faire MForm de nouveau visible à partir de la secondform?

Tout d'abord merci pour l'aide!

Je suis d'accord qu'il est plus facile de ne pas utiliser plus d'un JFrames, mais pouvez-vous svp me dire quelle est la meilleure manière de faire ce que j'ai demandé dans le premier post?
La réponse Robin m'a donné est très joli, mais je ne sais pas quoi mettre comme argument il*:

java.awt.EventQueue.invokeLater(new Runnable() {

        public void run() {
    *   new SecondForm().setVisible(true);
        }
    });

C'est du code généré automatiquement à partir de NetBeans.

J'ai essayé

new SecondForm(super).setVisible(true);

mais j'ai toujours des erreurs de compilation. Apparemment je dois mettre super.something() mais je ne sais pas quoi. J'ai essayé beaucoup mais pas de chance.

  • Combien d'applications professionnelles utilisez-vous ce swap de windows bon gré mal gré? Pas beaucoup, je parie. Au lieu de considérer la permutation de vues à l'aide d'un seul JFrame et un CardLayout que des swaps de JPanels, chacun ayant une vision différente de votre interface graphique.
  • d'accord. Ou d'ouvrir une nouvelle boîte de dialogue, mais au moins laisser l'original de la fenêtre principale de l'application visible et actif