1、大致思路:
-
界面类Frame
1、开始编写显示初始登录界面的方法,首先形成初始登录界面的大致框架(设置大小、标题等)。2、设置布局(初学一般选择流式布局)。
3、加组件。
4、setvisible(true),使初始界面能显示出来。
5、给组件加监听器。
6、编写main函数,在main函数中用自写的Frame类创造对象,并用该对象调用刚刚所写的显示初始界面的方法。
7、由于点击登录按钮后,登录成功或登录失败的结果都需要新的界面显示,找回密码的结果也需要新的界面显示,还需要在Frame类中多写几个显示不同界面的方法,便于不同情况下调用显示出不同的界面。
-
监听器类
此监听器主要是针对界面中的各组件。每个界面中的组件分布不同,如果可以巧妙地求同存异,使得所有不同的界面可以通用一个监听器的话最好,但如果实在难以通用一个监听器的话,也可以考虑多写几个监听器类,每个类对应一个界面,从思路上会稍微简单一点。对于组件,需要用的监听器的有文本框(JTextField)、勾选框(JCheckBox)和按钮(JButton)。1、文本框(JTextField)
调用JTextField对象中的getText()方法可以监听并得到文本框中的内容,然后在监听器类中声明:如果此内容符合某种条件,则显示某种效果(比如显示登陆成功界面),如果不符合则显示另一种效果(比如显示登录失败界面)。2、勾选框(JCheckBox)
调用JCheckBox对象中的isSelected()方法可以监听此勾选框是否被选中。如果被选中,则在监听器类中声明要达到哪种效果。3、按钮(JButton)
JButton对象一旦加上监听器并被点击,监听器类中的actionPerformed(ActionEvent e)方法会被立即执行,因此只要将判断勾选框与文本框信息是否符合要求的代码统统写到该方法中,按下对应按钮后就能得到想要的结果。
2、具体代码:
界面类Frame:
public class Frame {
public static void main(String args[]){
Frame frame = new Frame();
frame.showMain();
}
public void showMain(){
//初始登录界面大致框架设置
JFrame jFrame = new JFrame("QQ登录界面");
jFrame.setSize(300, 300);
jFrame.setResizable(false);
jFrame.setLocationRelativeTo(null);
jFrame.setDefaultCloseOperation(3);
//设置流式布局
jFrame.setLayout(new FlowLayout());
//加图片
ImageIcon imageIcon = new ImageIcon("C:\\Users\\l\\Desktop\\桌面集合\\文件集合\\素材\\图片素材\\海报元素\\灵碟.png");
JLabel jLabelimage = new JLabel(imageIcon);
jLabelimage.setPreferredSize(new Dimension(300, 100));
jFrame.add(jLabelimage);
//加标签和对应文本框
JLabel jLabelzh = new JLabel("账号");
JLabel jLabelmm = new JLabel("密码");
JTextField jTextFieldzh = new JTextField();
JTextField jTextFieldmm = new JTextField();
jLabelzh.setPreferredSize(new Dimension(30, 30));
jLabelmm.setPreferredSize(new Dimension(30, 30));
jTextFieldzh.setPreferredSize(new Dimension(220, 30));
jTextFieldmm.setPreferredSize(new Dimension(220, 30));
jFrame.add(jLabelzh);
jFrame.add(jTextFieldzh);
jFrame.add(jLabelmm);
jFrame.add(jTextFieldmm);
//加勾选框
JCheckBox jCheckBox[] = new JCheckBox[3];
String string[] = {"自动登录","记住密码","找回密码"};
for(int i=0;i<3;i++){
jCheckBox[i] = new JCheckBox(string[i]);
jCheckBox[i].setPreferredSize(new Dimension(80, 30));
jFrame.add(jCheckBox[i]);
}
//加按钮
JButton jButtondl = new JButton("登录");
JButton jButtonzc = new JButton("注册");
jButtondl.setPreferredSize(new Dimension(60, 30));
jButtonzc.setPreferredSize(new Dimension(60, 30));
jFrame.add(jButtondl);
jFrame.add(jButtonzc);
//设置界面可见
jFrame.setVisible(true);
//加监听器
DLlistener dLlistener = new DLlistener(jButtondl, jTextFieldzh, jTextFieldmm, jCheckBox);
jButtondl.addActionListener(dLlistener);
jTextFieldzh.addActionListener(dLlistener);
jTextFieldmm .addActionListener(dLlistener);
for(int i=0;i<3;i++){
jCheckBox[i].addActionListener(dLlistener);
}
}
public void showSuccess(){ //设置登录成功界面
JFrame jFrame = new JFrame("登录成功");
jFrame.setSize(300, 100);
jFrame.setResizable(false);
jFrame.setLocationRelativeTo(null);
jFrame.setDefaultCloseOperation(3);
JLabel jLabel = new JLabel("登录成功,你好棒棒呀~~~");
jLabel.setPreferredSize(new Dimension(250, 50));
jFrame.add(jLabel);
jFrame.setVisible(true);
}
public void showFail(){ //设置登录失败界面
JFrame jFrame = new JFrame("登录失败");
jFrame.setSize(300, 150);
jFrame.setResizable(false);
jFrame.setLocationRelativeTo(null);
jFrame.setDefaultCloseOperation(3);
jFrame.setLayout(new FlowLayout());
JLabel jLabel = new JLabel("登录失败,你个小辣鸡~~~");
jLabel.setPreferredSize(new Dimension(250, 50));
jFrame.add(jLabel);
JButton jButton = new JButton("点击返回登录界面");
jButton.setPreferredSize(new Dimension(200, 30));
jFrame.add(jButton);
jFrame.setVisible(true);
jButton.addActionListener(new Backlistener(jButton));
}
public void showFindmm(){ //设置找回密码界面
JFrame jFrame = new JFrame("找回密码");
jFrame.setSize(300, 300);
jFrame.setResizable(false);
jFrame.setLocationRelativeTo(null);
jFrame.setDefaultCloseOperation(3);
jFrame.setLayout(new FlowLayout());
JLabel jLabel = new JLabel("请输入您的账号");
jLabel.setPreferredSize(new Dimension(250, 100));
jFrame.add(jLabel);
JTextField jTextField = new JTextField();
jTextField.setPreferredSize(new Dimension(250, 30));
jFrame.add(jTextField);
JButton jButton = new JButton("点击查询");
jButton.setPreferredSize(new Dimension(100, 50));
jFrame.add(jButton);
jFrame.setVisible(true);
jTextField.addActionListener(new Findlistener(jTextField, jButton));
jButton.addActionListener(new Findlistener(jTextField, jButton));
}
public void showMM(){ //设置找到密码界面
JFrame jFrame = new JFrame("找到密码");
jFrame.setSize(300, 150);
jFrame.setResizable(false);
jFrame.setLocationRelativeTo(null);
jFrame.setDefaultCloseOperation(3);
jFrame.setLayout(new FlowLayout());
JLabel jLabel = new JLabel("您的密码是:123456");
jLabel.setPreferredSize(new Dimension(250, 50));
jFrame.add(jLabel);
JButton jButton = new JButton("点击返回登录界面");
jButton.setPreferredSize(new Dimension(250, 30));
jFrame.add(jButton);
jFrame.setVisible(true);
jButton.addActionListener(new Backlistener(jButton));
}
public void showFindMMfail(){ //设置寻找密码失败界面
JFrame jFrame = new JFrame("寻找密码失败");
jFrame.setSize(300, 150);
jFrame.setResizable(false);
jFrame.setLocationRelativeTo(null);
jFrame.setDefaultCloseOperation(3);
jFrame.setLayout(new FlowLayout());
JLabel jLabel = new JLabel("没有找到对应账号的密码,请注册");
jLabel.setPreferredSize(new Dimension(250, 50));
jFrame.add(jLabel);
JButton jButton = new JButton("点击返回登录界面");
jButton.setPreferredSize(new Dimension(250, 30));
jFrame.add(jButton);
jFrame.setVisible(true);
jButton.addActionListener(new Backlistener(jButton));
}
}
登录界面对应的监听器类DLlistener:
//登陆界面的对应监听器
public class DLlistener implements ActionListener {
JButton jButton = new JButton();
JTextField jtzh = new JTextField();
JTextField jtmm = new JTextField();
JCheckBox jCheckBox[] = new JCheckBox[3];
Frame frame = new Frame();
//通过构造函数传递组件
public DLlistener(JButton jButton,JTextField jtzh,JTextField jtmm,JCheckBox jCheckBox[]){
this.jButton = jButton;
this.jtzh = jtzh;
this.jtmm = jtmm;
this.jCheckBox = jCheckBox ;
}
public void actionPerformed(ActionEvent e){
if(jCheckBox[0].isSelected()&&jtzh.getText().equals("123456")){
frame.showSuccess(); //如果账号输入正确且选择了自动登录,则显示登陆成功
}else if(jCheckBox[1].isSelected()){
jtmm.setText("123456"); //如果选择了记住密码,则在密码文本框输上正确的密码
}else if(jCheckBox[2].isSelected()){
frame.showFindmm(); //如果选择了找回密码,则显示找回密码界面
}
if(jtzh.getText().equals("123456") && jtmm.getText().equals("123456") && !jtzh.getText().equals("") && !jtmm.getText().equals("")){
frame.showSuccess(); //如果输入的账号和密码都正确,则显示登陆成功
}else if((!jtzh.getText().equals("123456")&&!jtzh.getText().equals("")) || (!jtmm.getText().equals("123456")&&!jtmm.getText().equals(""))){
frame.showFail(); //如果输入的账号或者密码不正确,则显示登陆失败
}
}
}
找回密码界面对应的监听器类Findlistener:
//找回密码界面对应的监听器
public class Findlistener implements ActionListener {
JTextField jTextField = new JTextField();
JButton jButton = new JButton();
Frame frame = new Frame();
//通过构造函数传递组件
public Findlistener(JTextField jTextField ,JButton jButton ){
this.jTextField = jTextField ;
this.jButton = jButton ;
}
public void actionPerformed(ActionEvent e){
if(jTextField.getText().equals("123456")){
frame.showMM(); //如果输入的是正确的账号,则显示对应的密码
}else{
frame.showFindMMfail(); //否则寻找密码失败
}
}
}
返回初始登录界面对应的监听器类Backlistener:
//返回初始登录界面对应的监听器
public class Backlistener implements ActionListener {
JButton jButton = new JButton();
Frame frame = new Frame();
//通过构造函数传递按钮
public Backlistener(JButton jButton){
this.jButton = jButton;
}
public void actionPerformed(ActionEvent e){
frame.showMain(); //一旦按钮被触动,即刻返回登录界面
}
}
3、最终效果:
初始登录界面:
输入正确的账号密码后:
输入错误的账号或密码后:
输入正确的账号并点击自动登录:
点击记住密码:
点击找回密码:
在找回密码界面中输入正确的账号后: