?? 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 + -