Java 单击按钮后关闭JFrame

Java 单击按钮后关闭JFrame,java,swing,user-interface,jframe,Java,Swing,User Interface,Jframe,您好,我正在为我正在编写的加密程序编写一种菜单。我完成了它的核心,现在我想尝试为它创建一个GUI。以下是第一个菜单的代码: 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

您好,我正在为我正在编写的加密程序编写一种菜单。我完成了它的核心,现在我想尝试为它创建一个GUI。以下是第一个菜单的代码:

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);
    }

}
}
单击“开始”按钮时,新菜单显示良好,但第一个菜单保持打开状态。有没有办法关闭第一个菜单,然后单击第一个按钮打开第二个菜单?我是GUI新手,所以最简单的解决方案会非常有用。在旁注中,是否有一种简单的方法可以将开始按钮移动到下一行?谢谢

要关闭主菜单,您可以调用其方法:

this.dispose();

不要调用
System.exit(0)
,这将完全终止JVM。

要关闭主菜单,只需调用其方法:

this.dispose();

不要调用
System.exit(0)
,这将完全终止JVM。

您有两个选项:可以使用窗口侦听器,也可以使用dispose()方法。要执行dispose()操作,只需键入

* This is better to be used with subframes and 2nd level windows.*

this.dispose();
或者检查此链接以使用窗口侦听器


您有两个选项:可以使用窗口侦听器,也可以使用dispose()方法。要执行dispose()操作,只需键入

* This is better to be used with subframes and 2nd level windows.*

this.dispose();
或者检查此链接以使用窗口侦听器


请签出:
系统。退出(0)将导致JVM终止。1)不要扩展框架或其他顶级容器。而是创建并使用一个实例。2) 不要设置顶级容器的大小。而是布局内容&调用
pack()
System.exit(0)使其终止,但终止时不继续下一个菜单。除非我将其放置在错误的位置,否则此操作将不起作用。请签出:
System.exit(0)将导致JVM终止。1)不要扩展框架或其他顶级容器。而是创建并使用一个实例。2) 不要设置顶级容器的大小。而是布局内容&调用
pack()
System.exit(0)使其终止,但终止时不继续下一个菜单。除非我把它放错地方,否则这不会起作用。没问题!总是乐于帮助:)我从上面得到了一份礼物,所以我帮助了所有其他人:)这段代码适用于子帧,但不适用于主帧。主框架不应该被处理,它们必须是退出的。这是真的,我在写这篇文章的时候已经忘记了这一点。没问题!总是乐于帮助:)我从上面得到了一份礼物,所以我帮助了所有其他人:)这段代码适用于子帧,但不适用于主帧。主框架不应该被处理,它们必须是退出的。这是真的,我在写这篇文章的时候已经忘记了这一点