A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 15044393192 中级黑马   /  2016-3-27 23:39  /  819 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package cn.itheima01_LoginRegister;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Random;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

/**
* 登录页面
*/
public abstract class AbstractLoginFrame extends JFrame {

        public JLabel userNameLabel = new JLabel("用户名"); // 用户名标签
        public JTextField userNameField = new JTextField(); // 用户名文本框

        public JLabel passwordLabel = new JLabel("密码"); // 密码标签
        public JPasswordField passwordField = new JPasswordField(); // 密码文本框

        public JLabel verifyCodeLabel = new JLabel("验证码");// 验证码标签
        public JTextField codeField = new JTextField(); // 验证码文本框

        public String code; // 正确验证码
        public JLabel codeLabel = new JLabel();// 验证码值显示标签

        public JButton registBtn = new JButton("注\t册");// 注册按钮
        public JButton loginBtn = new JButton("登\t录");// 登录按钮

        /**
         * 构造方法
         */
        public AbstractLoginFrame() {
                init(); // 初始化窗口
                addComponent(); // 添加组件
                addlistener(); // 事件加载
        }

        // 初始化窗口
        private void init() {
                this.setTitle("登录");
                this.setSize(400, 300);
                // 去除布局
                this.setLayout(null);
                // 可以使用windowListener的windowClosing方法做事件监听,调用System的exit方法终止程序
                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                code = getCodes(); // 生成验证码为验证码变量赋值
                codeLabel.setText(code); // 使用验证码值为验证码Lable赋值
        }

        // 添加组件
        private void addComponent() {
                // 用户名文本框
                userNameLabel.setBounds(100, 40, 60, 25);
                userNameField.setBounds(160, 40, 120, 25);
                this.add(userNameLabel);
                this.add(userNameField);

                // 密码文本框
                passwordLabel.setBounds(100, 70, 60, 25);
                passwordField.setBounds(160, 70, 120, 25);
                this.add(passwordLabel);
                this.add(passwordField);

                // 验证码
                verifyCodeLabel.setBounds(100, 100, 60, 25);
                codeField.setBounds(160, 100, 120, 25);
                codeLabel.setBounds(300, 100, 60, 25);
                codeLabel.setOpaque(true); // 设置label可设置背景色
                codeLabel.setBackground(new Color(200, 200, 200));
                this.add(verifyCodeLabel);
                this.add(codeField);
                this.add(codeLabel);

                // 注册按钮
                registBtn.setBounds(100, 150, 80, 25);
                this.add(registBtn);
                // 登录按钮
                loginBtn.setBounds(200, 150, 80, 25);
                this.add(loginBtn);
        }

        // 加入事件监听
        public void addlistener() {
                // 为文本框添加监听器
                userNameField.addMouseListener(new MouseAdapter() {
                        @Override
                        public void mouseClicked(MouseEvent e) {
                                userNameField.setText("");
                        }
                });

                // 为文本框添加监听器
                passwordField.addMouseListener(new MouseAdapter() {
                        @Override
                        public void mouseClicked(MouseEvent e) {
                                passwordField.setText("");
                        }
                });

                // 为文本框添加监听器
                codeField.addMouseListener(new MouseAdapter() {
                        @Override
                        public void mouseClicked(MouseEvent e) {
                                codeField.setText("");
                        }
                });

                // 为验证码Label添加监听
                codeLabel.addMouseListener(new MouseAdapter() {
                        @Override
                        public void mouseClicked(MouseEvent e) {
                                // 再次生成随机字符串
                                code = getCodes();
                                // 将再次生成的随机验证码放到对应的label中
                                codeLabel.setText(code);
                        }
                });

                // 为登录按钮添加监听
                loginBtn.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                                // 点击登录按钮,调用登录方法
                                String userName = userNameField.getText();
                                String passWd = passwordField.getText();
                                String codesInput = codeField.getText();
                                String codesLabel = codeLabel.getText();
                                login(userName, passWd, codesInput, codesLabel);
                        }
                });

                // 为注册按钮添加监听
                registBtn.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                                // 显示注册界面
                                new RegistFrameController().setVisible(true);
                        }
                });

        }
       
        // 登录动作 方法
        public abstract void login(String userName, String passWd, String codesInput, String codesLabel) ;
        // 生成验证码
        public abstract String getCodes() ;
}

1 个回复

倒序浏览
谁能实现一下看看
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马