📄 editusergui.java
字号:
package smoker.server;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import smoker.tools.*;
public class EditUserGUI implements ActionListener, IUserManager {
private JFrame frame;
private JTextField tfLoginID;
private JPasswordField tfPassword;
private JPasswordField tfAgainPassword;
private JTextField tfNickName;
private JTextField tfName;
private JTextField tfBirthday;
private JRadioButton rbtMale;
private JRadioButton rbtFemale;
private JTextField tfEmail;
private JTextField tfAddress;
private JTextField tfPhone;
private JComboBox combDpt;
private JLabel labSelectPhoto;
private JTextArea taMyMemo;
private JButton btnQuery;
private JButton btnOK;
private JButton btnCancel;
private GridBagLayout gbl = new GridBagLayout();
private GridBagConstraints gbc = new GridBagConstraints();
private IServerCenter iServerCenter;
private PhotoPanel winPhotos;
public EditUserGUI(JFrame frame, IServerCenter iServerCenter) {
this.iServerCenter = iServerCenter;
this.frame = frame;
this.winPhotos = new PhotoPanel(this);
this.init();
}
private void init() {
tfLoginID = new JTextField(10);
tfPassword = new JPasswordField(10);
tfPassword.setEchoChar('*');
tfAgainPassword = new JPasswordField(10);
tfAgainPassword.setEchoChar('*');
tfNickName = new JTextField(10);
tfName = new JTextField(10);
tfBirthday = new JTextField(10);
tfEmail = new JTextField(10);
tfAddress = new JTextField(35);
tfPhone = new JTextField(10);
rbtMale = new JRadioButton("男", true);
rbtFemale = new JRadioButton("女");
ButtonGroup bg = new ButtonGroup();
bg.add(rbtMale);
bg.add(rbtFemale);
combDpt = new JComboBox(iServerCenter.getDepartments());
taMyMemo = new JTextArea(5, 1);
taMyMemo.setLineWrap(true);
btnQuery = GUIManager.createJButton(null, Files.QUERY_ICON, this,
"btnQuery");
btnOK = GUIManager.createJButton(null, Files.OK_ICON, this, "btnOK");
btnCancel = GUIManager.createJButton(null, Files.CANCEL_ICON, this,
"btnCancel");
labSelectPhoto = new JLabel(Files.DEFAULT_ICON);
labSelectPhoto.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
int x = frame.getLocation().x;
int y = frame.getLocation().y;
winPhotos.setVisible(true);
winPhotos.setLocation(x + 120, y + 110);
}
});
frame.addComponentListener(new ComponentListener() {
public void componentHidden(ComponentEvent e) {
}
public void componentMoved(ComponentEvent e) {
int x = frame.getLocation().x;
int y = frame.getLocation().y;
winPhotos.setLocation(x + 120, y + 110);
}
public void componentResized(ComponentEvent e) {
}
public void componentShown(ComponentEvent e) {
winPhotos.dispose();
}
});
}
public JPanel getRootPanel() {
JPanel rootPanel = new JPanel();
rootPanel.setLayout(new BoxLayout(rootPanel, BoxLayout.Y_AXIS));
rootPanel.setBorder(BorderFactory.createTitledBorder("请输入用户信息"));
rootPanel.add(getBasicPanel());
rootPanel.add(getParticularPanel());
rootPanel.add(getMemoPanel());
rootPanel.add(getBtnPanel());
return rootPanel;
}
private JPanel getBasicPanel() {
JPanel basicPanel = new JPanel();
basicPanel.setLayout(gbl);
basicPanel.setBorder(BorderFactory.createTitledBorder("基本信息"));
JLabel labLoginID = GUIManager.createJLabel("登录名:");
JLabel labPassword = GUIManager.createJLabel("口令:");
JLabel labAgainPassword = GUIManager.createJLabel("确认口令:");
JLabel labHeadPortrait = GUIManager.createJLabel("头像:");
JPanel queryPanel = new JPanel();
queryPanel.setLayout(gbl);
queryPanel.add(tfLoginID);
queryPanel.add(btnQuery);
gbc.anchor = GridBagConstraints.EAST;
GUIManager.setConstraints(gbl, gbc, 0, 0, 1, 1, 1, 1);
basicPanel.add(labHeadPortrait, gbc);
gbc.anchor = GridBagConstraints.WEST;
GUIManager.setConstraints(gbl, gbc, 1, 0, 1, 1, 1, 1);
basicPanel.add(labSelectPhoto, gbc);
gbc.anchor = GridBagConstraints.EAST;
GUIManager.setConstraints(gbl, gbc, 2, 0, 1, 1, 1, 1);
basicPanel.add(labLoginID, gbc);
gbc.anchor = GridBagConstraints.WEST;
GUIManager.setConstraints(gbl, gbc, 3, 0, 1, 1, 1, 1);
basicPanel.add(queryPanel, gbc);
gbc.anchor = GridBagConstraints.EAST;
GUIManager.setConstraints(gbl, gbc, 0, 1, 1, 1, 1, 1);
basicPanel.add(labPassword, gbc);
gbc.anchor = GridBagConstraints.WEST;
GUIManager.setConstraints(gbl, gbc, 1, 1, 1, 1, 1, 1);
basicPanel.add(tfPassword, gbc);
gbc.anchor = GridBagConstraints.EAST;
GUIManager.setConstraints(gbl, gbc, 2, 1, 1, 1, 1, 1);
basicPanel.add(labAgainPassword, gbc);
gbc.anchor = GridBagConstraints.WEST;
GUIManager.setConstraints(gbl, gbc, 3, 1, 1, 1, 1, 1);
basicPanel.add(tfAgainPassword, gbc);
return basicPanel;
}
private JPanel getParticularPanel() {
JPanel particularPanel = new JPanel();
particularPanel.setLayout(gbl);
particularPanel.setBorder(BorderFactory.createTitledBorder("详细信息"));
JLabel labNickName = GUIManager.createJLabel("昵称:");
JLabel labName = GUIManager.createJLabel("真实姓名:");
JLabel labBirthday = GUIManager.createJLabel("生日:");
JLabel labEmail = GUIManager.createJLabel("Email:");
JLabel labPhone = GUIManager.createJLabel("联系电话:");
JLabel labSex = GUIManager.createJLabel("性别:");
JLabel labDepartment = GUIManager.createJLabel("部门:");
JLabel labAddress = GUIManager.createJLabel("住址:");
JPanel sexPanel = new JPanel();
sexPanel.setLayout(new GridLayout(1, 2));
sexPanel.add(rbtMale);
sexPanel.add(rbtFemale);
gbc.anchor = GridBagConstraints.EAST;
GUIManager.setConstraints(gbl, gbc, 0, 2, 1, 1, 1, 1);
particularPanel.add(labNickName, gbc);
gbc.anchor = GridBagConstraints.WEST;
GUIManager.setConstraints(gbl, gbc, 1, 2, 1, 1, 1, 1);
particularPanel.add(tfNickName, gbc);
gbc.anchor = GridBagConstraints.EAST;
GUIManager.setConstraints(gbl, gbc, 2, 2, 1, 1, 1, 1);
particularPanel.add(labName, gbc);
gbc.anchor = GridBagConstraints.WEST;
GUIManager.setConstraints(gbl, gbc, 3, 2, 1, 1, 1, 1);
particularPanel.add(tfName, gbc);
gbc.anchor = GridBagConstraints.EAST;
GUIManager.setConstraints(gbl, gbc, 0, 3, 1, 1, 1, 1);
particularPanel.add(labSex, gbc);
gbc.anchor = GridBagConstraints.WEST;
GUIManager.setConstraints(gbl, gbc, 1, 3, 1, 1, 1, 1);
particularPanel.add(sexPanel, gbc);
gbc.anchor = GridBagConstraints.EAST;
GUIManager.setConstraints(gbl, gbc, 2, 3, 1, 1, 1, 1);
particularPanel.add(labBirthday, gbc);
gbc.anchor = GridBagConstraints.WEST;
GUIManager.setConstraints(gbl, gbc, 3, 3, 1, 1, 1, 1);
particularPanel.add(tfBirthday, gbc);
gbc.anchor = GridBagConstraints.EAST;
GUIManager.setConstraints(gbl, gbc, 0, 4, 1, 1, 1, 1);
particularPanel.add(labEmail, gbc);
gbc.anchor = GridBagConstraints.WEST;
GUIManager.setConstraints(gbl, gbc, 1, 4, 1, 1, 1, 1);
particularPanel.add(tfEmail, gbc);
gbc.anchor = GridBagConstraints.EAST;
GUIManager.setConstraints(gbl, gbc, 2, 4, 1, 1, 1, 1);
particularPanel.add(labPhone, gbc);
gbc.anchor = GridBagConstraints.WEST;
GUIManager.setConstraints(gbl, gbc, 3, 4, 1, 1, 1, 1);
particularPanel.add(tfPhone, gbc);
gbc.anchor = GridBagConstraints.EAST;
GUIManager.setConstraints(gbl, gbc, 0, 5, 1, 1, 1, 1);
particularPanel.add(labAddress, gbc);
gbc.anchor = GridBagConstraints.WEST;
GUIManager.setConstraints(gbl, gbc, 1, 5, 3, 1, 1, 1);
particularPanel.add(tfAddress, gbc);
gbc.anchor = GridBagConstraints.EAST;
GUIManager.setConstraints(gbl, gbc, 0, 6, 1, 1, 1, 1);
particularPanel.add(labDepartment, gbc);
gbc.anchor = GridBagConstraints.WEST;
GUIManager.setConstraints(gbl, gbc, 1, 6, 1, 1, 1, 1);
particularPanel.add(combDpt, gbc);
return particularPanel;
}
private JPanel getMemoPanel() {
JPanel memoPanel = new JPanel();
memoPanel.setLayout(new BorderLayout());
memoPanel.setBorder(BorderFactory.createTitledBorder("个人说明"));
memoPanel.add(new JScrollPane(taMyMemo), BorderLayout.CENTER);
return memoPanel;
}
private JPanel getBtnPanel() {
JPanel btnPanel = new JPanel();
btnPanel.setLayout(new BoxLayout(btnPanel, BoxLayout.X_AXIS));
btnPanel.add(btnOK);
btnPanel.add(btnCancel);
return btnPanel;
}
private String getSex() {
if (rbtMale.isSelected() == true) {
return "男";
} else {
return "女";
}
}
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if (command.equals("btnOK")) {
String loginID = tfLoginID.getText().trim();
String password = new String(this.tfPassword.getPassword());
String againPwd = new String(this.tfAgainPassword.getPassword());
String nickName = tfNickName.getText().trim();
String name = tfName.getText().trim();
String birthday = tfBirthday.getText().trim();
String email = tfPhone.getText().trim();
String address = tfAddress.getText().trim();
String dptName = combDpt.getSelectedItem().toString();
String sex = getSex();
String memo = taMyMemo.getText().trim();
String photo = this.labSelectPhoto.getIcon().toString();
String phone = tfPhone.getText().trim();
if (!dataVlidate(password, againPwd, nickName, name, birthday,
email, address, phone, memo)) {
return;
}
User editUser = new User();
editUser.setAddress(address);
editUser.setBirthday(birthday);
editUser.setDepartmentName(dptName);
editUser.setEmail(email);
editUser.setIcon(new ImageIcon(photo));
editUser.setLoginID(loginID);
editUser.setMemo(memo);
editUser.setName(name);
editUser.setNickName(nickName);
editUser.setPassword(password);
editUser.setSex(sex);
editUser.setTelphone(phone);
int ret = iServerCenter.updateUser(editUser);
if (ret == 2) {
Msg.show("该用户不存在!\n添加操作已取消。");
} else if (ret == 0) {
Msg.show("帐号[ " + loginID + " ]更新成功!");
} else {
Msg.show("更新失败,检查后请重试!");
}
} else if (command.equals("btnQuery")) {
if (tfLoginID.getText().trim().length() == 0) {
Msg.show("请先输入登录名!");
return;
}
User qUser = iServerCenter.queryUser(tfLoginID.getText().trim());
if (qUser == null) {
Msg.show("该用户不存在!");
return;
}
setUserData(qUser);
} else {
frame.dispose();
}
}
private void setUserData(User user) {
tfLoginID.setText(user.getLoginID());
tfPassword.setText(user.getPassword());
tfAgainPassword.setText(user.getPassword());
tfNickName.setText(user.getNickName());
tfName.setText(user.getName());
tfBirthday.setText(user.getBirthday());
tfEmail.setText(user.getEmail());
tfAddress.setText(user.getAddress());
tfPhone.setText(user.getTelphone());
taMyMemo.setText(user.getMemo());
labSelectPhoto.setIcon(user.getIcon());
combDpt.setSelectedItem(user.getDepartmentName());
setSex(user.getSex().trim());
}
private void setSex(String sex) {
if (sex.equals("男")) {
this.rbtMale.setSelected(true);
} else {
this.rbtFemale.setSelected(true);
}
}
private boolean dataVlidate(String password, String againPwd,
String nickName, String name, String birthday, String email,
String address, String phone, String memo) {
if (password.length() == 0) {
Msg.show("口令不能为空!");
return false;
} else if (password.length() < 6 || password.length() > 16) {
Msg.show("口令长度应在 6 - 16 位之间!");
return false;
} else if (!password.equals(againPwd)) {
Msg.show("两次口令输入不一致!");
return false;
} else if (nickName.length() == 0) {
Msg.show("昵称不能为空!");
return false;
} else if (nickName.length() > 16) {
Msg.show("昵称的长度不能超过 16 位!");
return false;
} else if (name.length() > 5) {
Msg.show("真实姓名长度不能超过 5 位!");
return false;
} else if (name.length() == 0) {
Msg.show("真实姓名不能为空!");
return false;
} else if (birthday.length() != 0 && !DataManager.isDate(birthday)) {
Msg.show("请正确填写您的出生日期!");
return false;
} else if (email.length() != 0 && !DataManager.isEmail(email)) {
Msg.show("请正确填写您的Email!");
return false;
} else if (phone.length() > 15) {
Msg.show("电话号码的长度不能超过 15 位!");
return false;
} else if (address.length() > 100) {
Msg.show("住址的长度不能超过 100 位!");
return false;
} else if (memo.length() > 150) {
Msg.show("个人说明的文字过长!");
return false;
}
return true;
}
public void icon(ImageIcon icon) {
labSelectPhoto.setIcon(icon);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -