Java老师布置的一个作业,遇到一些问题求解

让我们做一个界面,上面有菜单,点击子菜单中的创建用户就会在下面空白处跳出注册的界面(没有点击子菜单是下面无任何组件)点击用户登录就会出现登录界面。

我写的程序里点击子菜单下面不会出现界面,跪求解决!!

import java.awt.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
public class DengLu extends JFrame
{
static Vector v=new Vector();
JFrame f;
JPanel p1,p2,p3;
JButton b1,b2;
JLabel jl1,jl2;
JTextField jtf1,jtf2;
JMenuBar jmb;
JMenu m1,m2;
JMenuItem jmi1,jmi2,jmi3;
DengJi user;
DengLu()
{
f=new JFrame("登录系统");
jmb=new JMenuBar();
m1=new JMenu("系统功能");
m2=new JMenu("帮助");
jmi1=new JMenuItem("创建用户");
jmi1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
createuser();
}
});
jmi2=new JMenuItem("用户登录");
jmi2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
users();
}
});
jmi3=new JMenuItem("退出");

    f.setLayout(new GridLayout(3,1));
    f.setSize(400,300);
    f.setJMenuBar(jmb);


    jmb.add(m1);
    jmb.add(m2);
    m1.add(jmi1);
    m1.add(jmi2);
    m1.addSeparator();
    m1.add(jmi3);
    f.setVisible(true);
}
public void users()
{
    p1=new JPanel();
    p2=new JPanel();
    p3=new JPanel();
    b1=new JButton("登录");
    b2=new JButton("退出");
    jl1=new JLabel("用户名");
    jl2=new JLabel("密码");
    jtf1=new JTextField(10);
    jtf2=new JTextField(10);

    b1.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                if(e.getActionCommand().equals("登录"))
                {
                    if(jtf1.getText().equals(user.getName())&&jtf2.getText().equals(user.getPassword()))
                    {
                        JOptionPane.showMessageDialog(null, "欢迎进入!", "欢迎界面",
                                                      JOptionPane.PLAIN_MESSAGE);
                    }
                    else if(!jtf1.getText().equals(user.getName())&&!jtf2.getText().equals(user.getPassword()))
                    {
                        JOptionPane.showMessageDialog(null, "用户名或密码错误", "错误提示",
                                                      JOptionPane.ERROR_MESSAGE);
                    }
                    else
                    {
                        JOptionPane.showMessageDialog(null, "没有注册该用户!", "错误提示",
                                                      JOptionPane.ERROR_MESSAGE);
                    }
                }
            }
        });
    b2.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                jtf1.setText(null);
                jtf2.setText(null);
            }
        });

    p1.add(jl1);
    p1.add(jtf1);
    p2.add(jl2);
    p2.add(jtf2);
    p3.add(b1);
    p3.add(b2);
    f.add(p1);
    f.add(p2);
    f.add(p3);
}
public void createuser()
{
    p1=new JPanel();
    p2=new JPanel();
    p3=new JPanel();
    b1=new JButton("注册");
    b2=new JButton("退出");
    jl1=new JLabel("用户名");
    jl2=new JLabel("密码");
    jtf1=new JTextField(10);
    jtf2=new JTextField(10);

    b1.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                if(e.getActionCommand().equals("注册"))
                {
                    if(jtf1.getText().equals(null)||jtf2.getText().equals(null))
                    {
                        JOptionPane.showMessageDialog(null, "用户名或密码不能为空", "错误提示",
                                              JOptionPane.ERROR_MESSAGE);
                    }
                    else
                    {
                        user=new DengJi(jtf1.getText(),jtf2.getText());
                        v.add(user);
                        JOptionPane.showMessageDialog(null, "注册成功!", "注册",
                                                      JOptionPane.PLAIN_MESSAGE);
                        jtf1.setText(null);
                        jtf2.setText(null);
                    }
                }
            }
        });
    b2.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                jtf1.setText(null);
                jtf2.setText(null);
            }
        });

    p1.add(jl1);
    p1.add(jtf1);
    p2.add(jl2);
    p2.add(jtf2);
    p3.add(b1);
    p3.add(b2);
    f.add(p1);
    f.add(p2);
    f.add(p3);
}
public static void main(String args[])
{
    new DengLu();
}

}
class DengJi
{
String name,password;
DengJi(String name,String password)
{
this.name=name;
this.password=password;
}
void setName(String name)
{
this.name=name;
}
void setPassword(String password)
{
this.password=password;
}
String getName()
{
return name;
}
String getPassword()
{
return password;
}
}

直接创建一个新的注册窗体,然后点击注册的时候调用注册窗体

在 users() 和createuser()方法末尾添加 f.setVisible(true); 试试看

直接创建一个新的注册窗体就行

关注,我也遇到类似问题,求解