⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formchangepassword.java

📁 呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜4444444444444444444
💻 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 + -