商苑面馆:用户登录界面功能实现
任务描述
完善用户登录界面功能:
登录成功时,弹出成功界面,如图:
失败时,弹出失败界面,如图:
任务实现
第一步:启动Eclipse,导入工程Project0801。
第二步:创建User表数据访问接口,在接口中定义登录有效性验证函数,如下图所示方法:
具体代码:
public interface UserDao { public User login(String uid,String pwd); }
第三步:创建User数据访问类,实现UserDao接口。
public class UserDaoTesting implements UserDao{ @Override public User login(String uid, String pwd) { // 获取用户测试数据集 List<User> users=UserDataSet.users; //循环判断用户输入的账号和密码在测试集合中是否存在 for(User user:users) if(user.getId().equalsIgnoreCase(uid)&&user.getPassword().equalsIgnoreCase(pwd)) return user; return null; } }
第四步:为登录按钮添加点击事件。
业务逻辑如下:
- 用户点击登录按钮时,获取用户在界面上填写的账号和密码。
- 通过用户模拟数据访问类UserDaoTesting验证登录有效性。
- 登陆成功,通过提示框控件JOptionPane显示提示信息:登录成功。
- 登录失败,通过提示框控件JOptionPane显示提示信息:登录账号或密码不正确
具体代码:
btnLogon.addActionListener(e -> { // 获取用户输入的账号和密码 String uid = txtUserID.getText(); String pwd = new String(txtPassword.getPassword()); // 判断用户输入的账号和密码是否存在 UserDaoTesting udt = new UserDaoTesting(); User user = udt.login(uid, pwd); // 用户编号不存在 if (user == null) { JOptionPane.showMessageDialog(this, "登陆账号或密码不正确", "警告信息", JOptionPane.WARNING_MESSAGE); // 增加用户体验,选中文本框中的字,并获得焦点 txtUserID.requestFocus(); txtUserID.selectAll(); } else JOptionPane.showMessageDialog(this, "登陆成功", "信息", JOptionPane.INFORMATION_MESSAGE); });
第五步:为重置按钮添加事件。
清空用户名和密码,用户名文本框获得焦点,具体代码如下:
btnReset.addActionListener(e->{ txtUserID.setText(""); txtPassword.setText(""); txtUserID.requestFocus(); });
第六步:运行并测试程序。
程序代码
UserDao.java
public interface UserDao { public User login(String uid,String pwd); }
UserDaoTesting.java
public class UserDaoTesting implements UserDao{ @Override public User login(String uid, String pwd) { // 获取用户测试数据集 List<User> users=UserDataSet.users; //循环判断用户输入的账号和密码在测试集合中是否存在 for(User user:users) if(user.getId().equalsIgnoreCase(uid)&&user.getPassword().equalsIgnoreCase(pwd)) return user; return null; } }
LogonForm.java
public class LogonForm extends JFrame {
private JLabel lblUserID;// “登录账号”标签 private JLabel lblPassword;// “登录密码”标签 private JTextField txtUserID;// “登录账号”文本框 private JPasswordField txtPassword;// 密码框 private JButton btnLogon;// 登录按钮 private JButton btnReset;// 重置按钮
public LogonForm() { // 控件初始化 lblUserID = new JLabel("用户登录", JLabel.CENTER); lblPassword = new JLabel("登录密码", JLabel.CENTER); txtUserID = new JTextField(16); txtPassword = new JPasswordField(16); btnLogon = new JButton("登录"); btnLogon.addActionListener(e -> { // 获取用户输入的账号和密码 String uid = txtUserID.getText(); String pwd = new String(txtPassword.getPassword()); // 判断用户输入的账号和密码是否存在 UserDaoTesting udt = new UserDaoTesting(); User user = udt.login(uid, pwd); // 用户编号不存在 if (user == null) { JOptionPane.showMessageDialog(this, "登陆账号或密码不正确", "警告信息", JOptionPane.WARNING_MESSAGE); // 增加用户体验,选中文本框中的字,并获得焦点 txtUserID.requestFocus(); txtUserID.selectAll(); } else JOptionPane.showMessageDialog(this, "登陆成功", "信息", JOptionPane.INFORMATION_MESSAGE); }); btnReset = new JButton("重置"); btnReset.addActionListener(e->{ txtUserID.setText(""); txtPassword.setText(""); txtUserID.requestFocus(); }); // 设置控件布局,在窗口中添加用户登录、用户密码控件 JPanel centerPane = new JPanel(); centerPane.setLayout(new GridLayout(2, 2)); centerPane.add(lblUserID); centerPane.add(txtUserID); centerPane.add(lblPassword); centerPane.add(txtPassword); this.getContentPane().add(centerPane, BorderLayout.CENTER); // 添加登录按钮和重置按钮 JPanel southPane = new JPanel(); southPane.setLayout(new FlowLayout()); southPane.add(btnLogon); southPane.add(btnReset); this.getContentPane().add(southPane, BorderLayout.SOUTH);
pack(); this.setTitle("电商购物平台-登录"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); }
public static void main(String[] args) { LogonForm logon = new LogonForm(); } }