单击按钮时在java中隐藏帧
我试图在单击按钮后隐藏帧。注册按钮应该会打开一个用户可以注册的框架,这是可行的,但我试图隐藏前一个框架,我不知道如何做 这是我的密码: MainPage.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
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