单击按钮时在java中隐藏帧

单击按钮时在java中隐藏帧,java,swing,button,hide,frame,Java,Swing,Button,Hide,Frame,我试图在单击按钮后隐藏帧。注册按钮应该会打开一个用户可以注册的框架,这是可行的,但我试图隐藏前一个框架,我不知道如何做 这是我的密码: MainPage.java package Practice_1; import java.awt.*; import java.awt.Insets; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; i

我试图在单击按钮后隐藏帧。注册按钮应该会打开一个用户可以注册的框架,这是可行的,但我试图隐藏前一个框架,我不知道如何做

这是我的密码:

MainPage.java

package Practice_1;
import java.awt.*;
import java.awt.Insets;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
/**
 *
 * @author Ivan 
 */
public class MainPage extends JPanel 
{
    JButton regButton, logButton, listButton;
    JLabel homeMessage;
    GridBagConstraints gbc = new GridBagConstraints();

    public MainPage()
    {
        setLayout(new GridBagLayout());

        gbc.insets = new Insets(5,5,5,5);

        homeMessage = new JLabel("Please select an option below:");
        gbc.gridx = 0;
        gbc.gridy = 0;
        add(homeMessage, gbc);

        regButton = new JButton("Register");
        gbc.gridx = 0;
        gbc.gridy = 1;
        gbc.fill = GridBagConstraints.HORIZONTAL;

        regButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e)
            {
                //Execute when button is pressed
                //System.out.println("clicked");
                RegisterPage regFrame = new RegisterPage();

                JFrame register = new JFrame();
                register.setTitle("Registration");
                register.setSize(300,200);
                register.setVisible(true);
                register.add(regFrame);
                new MainPage().setVisible(false);  / THIS DOES NOT WORK

            }
        });
        add(regButton, gbc);

        logButton = new JButton("Log in");
        gbc.ipadx = 40;
        gbc.gridx = 0;
        gbc.gridy = 2;
        add(logButton, gbc);

        listButton = new JButton("Customer list");
        gbc.ipadx = 40;
        gbc.gridx = 0;
        gbc.gridy = 3;
        add(listButton, gbc);

        JFrame home = new JFrame();

        home.setTitle("Main menu");
        home.setSize(300,200);
        home.setResizable(false);
        home.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        home.setVisible(true);
        home.add (mainFrame);


    }




    public static void main(String[] args) {
        // TODO code application logic here
        MainPage mainFrame = new MainPage();





    }
}
RegisterPage.java

package Practice_1;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 *
 * @author Ivan
 */
public class RegisterPage extends JPanel {


    //JButton regButton, logButton, listButton;
    JLabel homeMessage;
    GridBagConstraints gbc = new GridBagConstraints();

    public RegisterPage()
    {
        setLayout(new GridBagLayout());

        gbc.insets = new Insets(5,5,5,5);

        homeMessage = new JLabel("Register new user:");
        gbc.gridx = 0;
        gbc.gridy = 0;
        add(homeMessage, gbc);


    }

}

根据您的代码,您正试图隐藏JPanel而不是JFrame。我的建议是使用

public class MainPage extends JFrame
而不是像这样实例化您的JPanel:

JPanel panel = new JPanel();
并在该面板上添加组件。要隐藏主页,您可以调用:

this.setVisible(false);
但如果您使用:

this.dispose();

根据您的代码,您正试图隐藏JPanel而不是JFrame。我的建议是使用

public class MainPage extends JFrame
而不是像这样实例化您的JPanel:

JPanel panel = new JPanel();
并在该面板上添加组件。要隐藏主页,您可以调用:

this.setVisible(false);
但如果您使用:

this.dispose();

这一点一再出现。不要使用其他JFrame。将对话框窗口设置为JDialog。有关更多信息,请参阅。关于@HovercraftFullOfEels.引用的问题,这一点一再出现。不要使用其他JFrame。将对话框窗口设置为JDialog。有关更多信息,请参阅。关于@HoverCraftFullOfels引用的问题。我无法在`closeButton.addActionListenernew ActionListener{@Override public void actionPerformedActionEvent arg0{//TODO自动生成的方法存根//System.exit0;}中使用'this'`@user3153014像这样使用它:MainPane.this我无法在“closeButton.addActionListenernew ActionListener”中使用“this”{@Override public void actionPerformedActionEvent arg0{//TODO自动生成的方法存根//System.exit0;}`@user3153014像这样使用它:MainPane.this