📄 formuser.java
字号:
/**
* -----------------------------------------------------------------------
* 创建时间:2006年2月9日
* 作 者:孙丰伟
* 功 能:管理系统帐号,要主要添加新的帐号与删除原有的帐号.
* 说 明:1.这是一个边界类,也就是系统与用户交互有界面,在这一层中要访问
* mode包中的ManageAccount类中的实例方法saveAccount()实现新建一个
* 帐号到数据库中。添加的新帐号要及到的更新到左侧的树中 。新建帐
* 号如果已经存在则重新建立。
* 2.删除密码,调用ManageAccount类中的实例方法removeAccount()实现。
* ------------------------------------------------------------------------
*/
package cn.sunfengwei.employee.view;
import java.awt.*;
import java.awt.event.*;
import java.util.Iterator;
import java.util.Vector;
import javax.swing.*;
import javax.swing.tree.*;
import cn.sunfengwei.employee.model.*;
public class FormUser extends JInternalFrame implements ActionListener{
//创建几个JButton
private JButton btnAdd,btnDelete,btnSave,btnExit;
private Container contentPane;
//树
private JTree treeAccount;
private DefaultTreeModel treeModel;
private DefaultMutableTreeNode treeNode,node;
//
private JScrollPane treeScrollPane;
private JSplitPane leftSplitPane;
private JTextField txtUserId;
private JPasswordField newPassword,validatePassword;
private UserDTO account;
public FormUser(String title) {
super(title,
false, //resizable
true, //closable
true, //maximizable
true);//iconifiable
contentPane=this.getContentPane();
treeScrollPane=new JScrollPane(this.setTree());
leftSplitPane=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,this.treeScrollPane,setAccountPanel());
leftSplitPane.setDividerLocation(150);
this.contentPane.add(leftSplitPane);
this.setBounds(10,10,500,400);
//加载工具栏
this.contentPane.add(this.createToolBar(),BorderLayout.NORTH);
}
//创建工具栏JToolBar
private JToolBar createToolBar()
{
JToolBar toolBar=new JToolBar();
btnExit=new JButton(new ImageIcon("images\\exit.gif"));
btnSave=new JButton(new ImageIcon("images\\save1.gif"));
btnDelete=new JButton(new ImageIcon("images\\del.gif"));
btnExit.setToolTipText("退出系统");
btnSave.setToolTipText("保存新帐号");
btnSave.setActionCommand("save");
btnDelete.setActionCommand("delete");
btnExit.setActionCommand("exit");
btnSave.addActionListener(this);
btnDelete.addActionListener(this);
btnExit.addActionListener(this);
toolBar.add(btnSave);
toolBar.add(btnDelete);
//加分隔条
toolBar.addSeparator();
toolBar.add(btnExit);
return toolBar;
}
private JTree setTree()
{
treeModel=new DefaultTreeModel(getTreeNode());
treeAccount=new JTree(treeModel);
return treeAccount;
}
private JPanel setAccountPanel()
{
JPanel panel=new JPanel();
// 使用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("确认密码:"));
txtUserId=new JTextField(16); //20个字符
newPassword=new JPasswordField();
validatePassword=new JPasswordField();
Box boxUser=Box.createVerticalBox();
boxUser.add(Box.createVerticalStrut(6));
boxUser.add(txtUserId);
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);
/*-----------------------------------------------*/
FlowLayout flow=new FlowLayout();
flow.setAlignment(FlowLayout.LEFT);
panel.setLayout(flow);
panel.add(baseBox);
contentPane.validate();
return panel;
}
//设置树的结点
private DefaultMutableTreeNode getTreeNode()
{
//创建根结点
treeNode=new DefaultMutableTreeNode("信息技术教学中心");
UserDAO accountDAO=new UserDAO();
UserDTO account=new UserDTO("","");
for(UserDTO tempAccount : accountDAO.getAccounts(account))
{
treeNode.add(new DefaultMutableTreeNode(tempAccount));
}
return treeNode;
}
/* (非 Javadoc)
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent e) {
// TODO 自动生成方法存根
String es=e.getActionCommand();
if(es.equals("add"))
{}
if(es.equals("save"))
{
this.saveUser();
}
//当删除一个用户时
if(es.equals("delete"))
{
//取出当前被选中的结点
if(treeAccount.getLastSelectedPathComponent()==null)
return;
node=(DefaultMutableTreeNode)treeAccount.getLastSelectedPathComponent();
if(!node.isLeaf())
{
return;
}
//取出结点上的用户名,user
String user=node.getUserObject().toString();
//if(user.equals("DB培训中心")) return;
if(node.isRoot()) return;
int n=JOptionPane.showConfirmDialog(FormUser.this,"你真的要删除["+user+"]用户吗?","系统询问",JOptionPane.YES_NO_OPTION);
if(n==JOptionPane.YES_OPTION)
{
UserDAO mAccount=new UserDAO();
if(mAccount.removeAccountById(user))
{
//在数据库删除成功后,树上的结点也没应该存在了
//下面的方法实现从树上移除一个结点
node.removeFromParent();
//删除后在内存中完成了,但是在界面上没有反映,所以要刷新树模板
treeModel.reload();
}
}
}
if(es.equals("exit"))
{
this.dispose();
}
}
private void saveUser()
{
UserDAO manageAccount=new UserDAO();
if(txtUserId.getText().equals(""))
{
JOptionPane.showMessageDialog(this,"系统帐号不能为空,请输入!","系统提示",JOptionPane.INFORMATION_MESSAGE);
newPassword.setText("");
validatePassword.setText("");
txtUserId.requestFocus(true);
return;
}
//创建一个新帐号时,创建保证数据表中不存在
if(manageAccount.isExistedAccount(txtUserId.getText().trim()))
{
JOptionPane.showMessageDialog(this,"新帐号在系统中已经存在,请重新输入!","系统提示",JOptionPane.INFORMATION_MESSAGE);
newPassword.setText("");
validatePassword.setText("");
txtUserId.requestFocus(true);
txtUserId.selectAll();
return;
}
String newWord=new String(newPassword.getPassword());
String validateWord=new String(validatePassword.getPassword());
if(!newWord.equals(validateWord))
{
JOptionPane.showMessageDialog(this,"你输入的密码与确认密码不符,请重新输入!","系统提示",JOptionPane.ERROR_MESSAGE);
newPassword.setText("");
validatePassword.setText("");
newPassword.requestFocus(true);
newPassword.selectAll();
}
else
{
UserDTO account=new UserDTO();
account.setUserName(txtUserId.getText().trim());
account.setPassword(newWord);
if(manageAccount.saveAccount(account))
{
JOptionPane.showMessageDialog(this,"新帐号创建成功,欢迎使用新帐号登录系统!","系统提示",JOptionPane.INFORMATION_MESSAGE);
//如果保存成功后,要把新帐号加载树上
treeNode.add(new DefaultMutableTreeNode(txtUserId.getText().trim()));
txtUserId.setText("");
newPassword.setText("");
validatePassword.setText("");
txtUserId.requestFocus(true);
treeModel.reload();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -