📄 formchangepassword.java
字号:
/**
* -----------------------------------------------------------------------------
* 创建时间:2006年2月9日
* 作 者:孙丰伟
* 功 能:修改系统帐号(用户)密码,因为这个案例没有分角色,所有的帐号统一最高权限,
* 而实际项目中,角色很多,每一用户只能修改自己密码的权限,所以修改密码单做
* 一个窗体:
* 说 明:1.这是一个边界类,也就是系统与用户交互有界面,在这一层中要访问mode包中的
* ManageAccount类中的实例方法changePassword()实现修改当前用户的密码。
* 2.修改密码时尽管是当前用户,但是有可能是其它操作者非法操作,所以在修改
* 密码前要先输入旧密码,旧密码正确后再输入新的密码,注意这时密码在数据库是
* 使用明文保存的,实际项目中可能是加密的。
*
*
* ------------------------------------------------------------------------------
*/
package cn.sunfengwei.employee.view;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import cn.sunfengwei.employee.model.*;
// JInternalFrame是内部窗体类,或子窗体
public class FormChangePassword extends JInternalFrame implements ActionListener {
private JButton btnOk, btnCancel;
private Container contentPane;
// 是只读的
private JTextField txtUserName;
// 三个密码文本框
private JPasswordField oldPassword, newPassword, validatePassword;
// 保存帐号信息
private UserDTO user;
private UserDAO userDAO;
public FormChangePassword(String title) {
super(title, false, // resizable
true, // closable
false, // maximizable
true);// iconifiable
contentPane = this.getContentPane();
this.setBounds(10, 10, 280, 220);
// 使用Box容器,设置登录窗体中的组件
Box boxTitle = Box.createVerticalBox();
boxTitle.add(Box.createVerticalStrut(5));
boxTitle.add(new JLabel("用 户 ID:"));
boxTitle.add(Box.createVerticalStrut(10));
boxTitle.add(new JLabel("原 密 码:"));
boxTitle.add(Box.createVerticalStrut(10));
boxTitle.add(new JLabel("新 密 码:"));
boxTitle.add(Box.createVerticalStrut(10));
boxTitle.add(new JLabel("确认密码:"));
txtUserName = new JTextField(16); // 20个字符
// 只是修改密码,用户名不能修改,所以设置为不可编辑
txtUserName.setEditable(false);
// 实例化三个密码文本框
oldPassword = new JPasswordField();
newPassword = new JPasswordField();
validatePassword = new JPasswordField();
Box boxUser = Box.createVerticalBox();
boxUser.add(Box.createVerticalStrut(6));
boxUser.add(txtUserName);
boxUser.add(Box.createVerticalStrut(9));
boxUser.add(oldPassword);
boxUser.add(Box.createVerticalStrut(9));
boxUser.add(newPassword);
boxUser.add(Box.createVerticalStrut(9));
boxUser.add(validatePassword);
Box baseBox = Box.createHorizontalBox();
baseBox.add(boxTitle);
baseBox.add(Box.createHorizontalStrut(10));
baseBox.add(boxUser);
/*-----------------------------------------------*/
btnOk = new JButton("确认(O)");
btnOk.setMnemonic('O');
btnOk.setActionCommand("ok");
// 将btnOk按钮设置为默认按钮,按下回车就有效
this.getRootPane().setDefaultButton(btnOk);
btnCancel = new JButton("取消(C)");
btnCancel.setMnemonic('C');
btnCancel.setActionCommand("cancel");
JPanel panel = new JPanel();
panel.add(btnOk);
panel.add(btnCancel);
// 内容面板为流式布局
contentPane.setLayout(new FlowLayout());
contentPane.add(baseBox);
contentPane.add(panel);
contentPane.validate();
// 由于当前类实现的ActionListener接口,所在需要监听当前对象,即当前对象就是事件对象
btnOk.addActionListener(this);
btnCancel.addActionListener(this);
oldPassword.requestFocusInWindow();
}
// 下面方法实现修改当前用密码
private void changePassword() {
// 获取三个密码广西框中的输入值
String oldWord = new String(oldPassword.getPassword());
String newWord = new String(newPassword.getPassword());
String validateWord = new String(validatePassword.getPassword());
// 判断原密码是否正确,只能原密码正确才可以修改当前密码,如果原密码错误,则提示重新输入
if (!oldWord.equals(this.user.getPassword())) {
JOptionPane.showMessageDialog(this, "你输入的原密码不对,请重新输入!", "系统提示", JOptionPane.ERROR_MESSAGE);
newPassword.setText("");
validatePassword.setText("");
oldPassword.requestFocusInWindow();
oldPassword.selectAll();
return;
}
// 比较新密码两次输入的是否一致,不一致则重新输入新密码
if (!newWord.equals(validateWord)) {
JOptionPane.showMessageDialog(this, "你输入的确定密码与新密码不符,请重新输入!", "系统提示", JOptionPane.ERROR_MESSAGE);
validatePassword.setText("");
newPassword.requestFocusInWindow();
newPassword.selectAll();
return;
}
// 修改原密码
userDAO = new UserDAO();
this.user.setPassword(newWord);
if (userDAO.changePassword(user)) {
JOptionPane.showMessageDialog(this, "密码修改完毕,下次请用新密码登录系统!", "系统提示", JOptionPane.INFORMATION_MESSAGE);
this.dispose();
}
}
public UserDTO getUser() {
return user;
}
public void setUser(UserDTO user) {
this.user = user;
// 打开窗体时,这个方法被调用,同时将当前的帐号显示的文件框中
this.txtUserName.setText(user.getUserName());
}
// 单击确定时执行修改密码
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("ok")) {
this.changePassword();
} else {
this.dispose(); // 释放当前对象
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -