让我们做一个界面,上面有菜单,点击子菜单中的创建用户就会在下面空白处跳出注册的界面(没有点击子菜单是下面无任何组件)点击用户登录就会出现登录界面。
我写的程序里点击子菜单下面不会出现界面,跪求解决!!
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); 试试看
直接创建一个新的注册窗体就行
关注,我也遇到类似问题,求解