我试图在点击按钮后隐藏框架。 “注册”按钮应该打开一个用户可以注册的框架,这样可行,但我试图隐藏前一帧,我无法弄清楚如何做到这一点。
这是我的代码:
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);
}
}
答案 0 :(得分:6)
根据您的代码,您试图隐藏JPanel
而不是JFrame
。我的建议是使用
public class MainPage extends JFrame
比实例化你的JPanel
:
JPanel panel = new JPanel();
并在该面板上添加组件。要隐藏您的MainPage,您可以致电:
this.setVisible(false);
但如果你使用它会更好:
this.dispose();