La fermeture d'une JFrame après on clique sur un bouton Java

Bonjour, je suis en train d'écrire une sorte de Menu pour un programme de cryptage que j'écris. J'ai terminé l'essentiel, et maintenant je veux essayer de créer une interface graphique pour elle. Voici le code pour le premier Menu:

package matrix_with_GUI;
import javax.swing.*;
import java.awt.event.* ;
import java.awt.* ;
public class Main_Menu extends JFrame implements ActionListener{
private JButton action1 = new JButton ("");
private JButton action2 = new JButton ("");
private JPanel pane = new JPanel();
private JLabel lbl;
public static void main(String[] args) {
Main_Menu main = new Main_Menu();
}
public Main_Menu(){
super();
JPanel pane=new JPanel();
setTitle ("Start Menu") ;
JFrame frame = new JFrame("");
setVisible(true);
setSize (380, 260) ;
setLocation (450, 200) ;
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE) ;
action1 = new JButton("Start");
action2 = new JButton("Exit");
lbl = new JLabel ("Welcome to the Matrix Encoder/Decoder!!!");
setLayout(new FlowLayout());
add (lbl) ;
add(action1, BorderLayout.CENTER);
action1.addActionListener (this);
add(action2, BorderLayout.CENTER);
action2.addActionListener (this);
}
@Override
public void actionPerformed(ActionEvent event) {
//TODO Auto-generated method stub
OptionsMenu x = new OptionsMenu();
if (event.getSource() == action1)
{
System.exit(0);
x.OptionsMenu();
}
else if(event.getSource() == action2){
System.exit(0);
}
}

}
Lorsque le Bouton de Démarrage est cliqué, le nouveau menu apparaît tout à bel et bon, mais le premier menu reste ouvert. Est-il un moyen de fermer ce premier menu ET ouvrir le menu avec la première cliquez sur le bouton? Je suis très nouveau à l'interface graphique, donc la solution la plus simple serait très utile. Sur une note de côté, est-il un moyen simple de déplacer le bouton Démarrer à la ligne suivante? Grâce

  • S'il vous plaît vérifier: the-use-of-multiple-jframes-good-bad-practice
  • System.exit(0); Sera la cause de la JVM pour terminer.
  • 1) Ne pas prolonger cadre ou de haut niveau d'autres conteneurs. Au lieu de créer des & utiliser une instance de l'un. 2) Ne pas définir la taille de haut niveau dans des conteneurs. Au lieu de mise en page le contenu & appel pack().
  • System.exit(0); causes de résilier, mais il se termine sans poursuivre le menu suivant. Sauf si je mets cela dans le mauvais endroit, cela ne fonctionnera pas.