如何解决使用 CardLayout Manager 切换页面
这里我有 3 页。
Page1:询问用户是否要登录或注册
第 2 页和第 3 页:注册页面和登录页面
该程序以登录和注册选项开始,但是当单击任一选项时,它不会切换页面,而是在原始页面旁边显示标签。我想让登录和注册按钮在选择任何一个时消失,我目前得到的是下面。
编辑:
登录和注册按钮被添加到 this.
而不是 panelOption,问题已解决
主类
package com.app.bank;
public class OnlineBankingApp {
public static void main(String args[]) {
new BankFrame();
}
}
帧类
public class BankFrame extends JFrame {
public static final int SCREEN_WIDTH = 1_000;
public static final int SCREEN_HEIGHT = 1_000;
BankFrame(){
this.add(new BankPanel());
ImageIcon logo = new ImageIcon("BankLogo.png");
this.setTitle("G-Bank inc.");
this.setResizable(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.getContentPane().setBackground(new Color(0x123456));
this.setLayout(new GridBagLayout());
this.setSize(SCREEN_WIDTH,SCREEN_HEIGHT);
this.setIconImage(logo.getImage());
this.setLocationRelativeTo(null);
//this.pack();
this.setVisible(true);
}
}
面板类
package com.app.bank;
import javax.swing.*;
import java.awt.*;
public class BankPanel extends JPanel{
//Initialize Buttons
JButton loginButton;
JButton signUpButton;
//Initialize panels
JPanel cards;
JPanel panelOption;
JPanel panelLogin;
JPanel panelSignup;
//Initialize Text Fields
JLabel usernameSignup;
JLabel passwordSignup;
JLabel usernameLogin;
JLabel passwordLogin;
//Initialize CardLayout
CardLayout cardLayout;
//Page Text
final static String OPTION_PANEL = "Card with Options";
final static String LOGIN_PANEL = "Card with Login";
final static String SIGN_UP_PANEL = "Card with Sign Up";
BankPanel() {
//Initialize Cards
cards = new JPanel();
cards.setLayout(cardLayout = new CardLayout());
//Page 1
panelOption = new JPanel();
panelOption.setSize(BankFrame.SCREEN_WIDTH,BankFrame.SCREEN_HEIGHT);
//Add Page1 Components
loginButton = new JButton("Login");
this.add(loginButton,new GridBagConstraints());
signUpButton = new JButton("Sign Up");
this.add(signUpButton,new GridBagConstraints());
//Page 2
panelSignup = new JPanel();
panelSignup.setSize(BankFrame.SCREEN_WIDTH,BankFrame.SCREEN_HEIGHT);
//Add page 2 components
usernameSignup = new JLabel("Enter New Username:");
passwordSignup = new JLabel("Enter New Password:");
panelSignup.add(usernameSignup);
panelSignup.add(passwordSignup);
//Page 3
panelLogin = new JPanel();
panelLogin.setSize(BankFrame.SCREEN_WIDTH,BankFrame.SCREEN_HEIGHT);
//Add page 3 components
usernameLogin = new JLabel("Username:");
passwordLogin = new JLabel("Password:");
panelLogin.add(usernameLogin);
panelLogin.add(passwordLogin);
//add pages to cards
cards.add(panelOption,OPTION_PANEL);
cards.add(panelLogin,LOGIN_PANEL);
cards.add(panelSignup,SIGN_UP_PANEL);
cardLayout.show(cards,OPTION_PANEL);
//Switch to page 2
signUpButton.addActionListener(e -> cardLayout.show(cards,SIGN_UP_PANEL));
//Switch to Page 3
loginButton.addActionListener(e -> cardLayout.show(cards,LOGIN_PANEL));
this.add(cards); //Do I Need to add this while my BankFrame class has this.add(new BankPanel)?
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。