当我按 Admin 按钮时,我正试图在同一UserAdminPanel
内从AdminLogin
转换为JPanel
。
UserAdmin
小组
转入AdminLogin
小组
我现在遇到的问题是我打开一个新面板,而不是将当前面板更改为新面板。
这是我UserAdminPanel
public class SelectAdminUserPanel extends JPanel
{
public SelectAdminUserPanel()
{
setLayout(new GridLayout(3,1));
JButton b1 = new JButton("User Login");
JButton b2 = new JButton("Admin Login");
JButton b3 = new JButton("Exit");
b1.addActionListener(new SelectUserButtonListener() );
b2.addActionListener(new SelectAdminButtonListener());
b3.addActionListener(new SelectExitButtonListener() );
add(b1);
add(b2);
add(b3);
}
private class SelectAdminButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
AdminModule am = new AdminModule();
am.run();
}
}
private class SelectUserButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
GameModule gm = new GameModule();
gm.run();
}
}
private class SelectExitButtonListener implements ActionListener
{
public void actionPerformed (ActionEvent event)
{
}
}
}
这是AdminLogin
面板
public class AdminLoginPanel extends JPanel
{
AdminLoginPanel()
{
JLabel pwlabel = new JLabel("Password");
JPasswordField pwfield = new JPasswordField(20);
JButton loginbutton = new JButton("Login");
add(pwlabel);
add(pwfield);
add(loginbutton);
}
}
答案 0 :(得分:1)
我认为您应该引用主框架,只需根据按下的按钮从中移除组件,并仅添加所需的组件。根据您的说法,UserAdminPanel
是您的主要面板。我认为它已添加到您可以获取参考的框架中。单击按钮时,您希望删除其上显示的所有内容,并仅显示单击的按钮应显示的内容。我认为它应该是这样的:
private class SelectAdminButtonListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
frame.getContentPane().removeAll();
AdminModule am = new AdminModule();
frame.add(am.getNewPanel());
frame.pack();
// am.run(); //it's not clear what does for you
}
}
方法getNewPanel()
将返回基础JPanel
。我假设AdminModule
引用了AdminLoginPanel
。