问题描述
这里我有 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 (将#修改为@)