商苑面馆:用户登录界面功能实现

来自CloudWiki
Cloud17讨论 | 贡献2018年5月22日 (二) 14:49的版本 (创建页面,内容为“ 任务描述:用户登录界面功能实现 完善用户登录界面功能: 登录成功时,弹出成功界面,如图: 失败时,弹出失败界面,…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索
任务描述:用户登录界面功能实现

完善用户登录界面功能: 登录成功时,弹出成功界面,如图:

失败时,弹出失败界面,如图:

8.2.2 任务实现 8.1.2.1 实施思路 第一步:启动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; }

} 第四步:为登录按钮添加点击事件。 业务逻辑如下: 1)用户点击登录按钮时,获取用户在界面上填写的账号和密码。 2)通过用户模拟数据访问类UserDaoTesting验证登录有效性。 3)登陆成功,通过提示框控件JOptionPane显示提示信息:登录成功。 4)登录失败,通过提示框控件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(); }); 第六步:运行并测试程序。 8.1.2.2 程序代码 1.UserDao.java public interface UserDao { public User login(String uid,String pwd); } 2.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; }

} 3.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(); } }