内存条上面参数详解频率

JTable单选和多选 - 学无止境 - ITeye博客
JTable table = new JTable();
// Get default selection mode
int selMode = table.getSelectionModel().getSelectionMode();
// MULTIPLE_INTERVAL_SELECTION
// Allow only single a selection
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
// Allow selection to span one contiguous set of rows,
// visible columns, or block of cells
table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
// Allow multiple selections of rows, visible columns, or cell blocks (default)
table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
浏览: 53426 次
来自: 广州
用的是JSP加上WebSphere,更改WebInfo目录下的 ...
ghlong 写道还有如果是tomcat还可以在其web.xm ...
还有如果是tomcat还可以在其web.xml里面设置吧?
qqdwll 写道呵呵, 前几天也刚好写了一遍文章关于java ...您的访问出错了(404错误)
很抱歉,您要访问的页面不存在。
1、请检查您输入的地址是否正确。
进行查找。
3、感谢您使用本站,3秒后自动跳转至网站首页/ assets_manage
项目语言:None
权限:read-only(如需更高权限请先加入项目)
assets_manage/
Index: UserDeletionView.java
===================================================================
--- UserDeletionView.java (revision 0)
+++ UserDeletionView.java (revision 9)
@@ -0,0 +1,173 @@
+package cn.ysf.asset.
+import java.awt.event.ActionE
+import java.awt.event.ActionL
+import java.io.F
+import java.util.C
+import javax.swing.JB
+import javax.swing.JD
+import javax.swing.JL
+import javax.swing.JOptionP
+import javax.swing.JTextF
+import cn.ysf.asset.contrl.DBW
+import cn.ysf.asset.contrl.IOW
+import cn.ysf.asset.contrl.WindowC
+import cn.ysf.asset.contrl.DBWorker.LentSelT
+import cn.ysf.asset.contrl.DBWorker.OperatorSelT
+ * 用户界面类--删除登录帐户界面
+public class UserDeletionView extends JDialog {
+ private static final long serialVersionUID = 1L;
+ private MM frame =
+ // 用户名
+ private JTextField txtName =
+ // 删除按钮
+ private JButton btnDelete =
+ // 取消按钮
+ private JButton btnCancel =
* 构造方法
* @param frame
对话框所属窗口
* @param title
对话框标题
+ public UserDeletionView(MM frame, String title) {
super(frame, title);
this.frame =
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
WindowCenter.showCenter(frame, this);
} catch (Exception e) {
e.printStackTrace();
* 初始化对话框
* @throws Exception
+ private void init() throws Exception {
txtName = new JTextField();
JLabel lblName = new JLabel(&帐户名:&);
btnDelete = new JButton(&删除&);
btnCancel = new JButton(&取消&);
getContentPane().setLayout(null);
lblName.setBounds(20, 20, 80, 20);
add(lblName);
txtName.setBounds(100, 20, 100, 20);
add(txtName);
btnDelete.setBounds(20, 50, 80, 20);
add(btnDelete);
btnCancel.setBounds(120, 50, 80, 20);
add(btnCancel);
setSize(220, 120);
setModal(true);
setResizable(false);
/* 删除按钮事件处理 */
btnDelete.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 获得用户输入
String name = txtName.getText().trim();
if (name.equals(&&)) {
// 如果用户输入为空
JOptionPane.showMessageDialog(frame, &帐户名不能为空!&, &提示&,
RMATION_MESSAGE);
txtName.requestFocus();
if (name.equals(new IOWorker().inPut(&AMSConfiguration&
+ File.separator + &config& + File.separator
+ &loginuser.tsc&))) {
// 如果是当前登录帐则不能删除
JOptionPane.showMessageDialog(frame, &该帐户为当前登录帐户!删除失败!&,
&警告&, JOptionPane.WARNING_MESSAGE);
if (!isExist(name)) {
JOptionPane.showMessageDialog(frame, &该帐户不存在!请核实后再删!&,
&警告&, JOptionPane.WARNING_MESSAGE);
txtName.requestFocus();
if (!DBWorker.selLent(txtName.getText().trim(),
LentSelType.BY_OPERATOR_NAME).isEmpty()) {
// 如果该管理员有借出资产记录
int userSelected = JOptionPane.showConfirmDialog(frame,
&该帐户借出的资产还有未归的!\n确定删除该帐户吗?&, &提示&,
JOptionPane.OK_CANCEL_OPTION);
// 如果用户选择的是&确定&,则执行删除操作
if (userSelected == JOptionPane.OK_OPTION) {
if (DBWorker.modifyRecord(&proc_delOperator '& + name
+ &'&) != 0) {
// 如果删除成功
JOptionPane.showMessageDialog(frame, &删除成功!&, &提示&,
RMATION_MESSAGE);
JOptionPane.showMessageDialog(frame,
&数据库访问错误!删除失败!&, &错误&,
JOptionPane.ERROR_MESSAGE);
// 将错误写入错误日志
if (DBWorker
.modifyRecord(&proc_delOperator '& + name + &'&) != 0) {
// 如果删除成功
JOptionPane.showMessageDialog(frame, &删除成功!&, &提示&,
RMATION_MESSAGE);
JOptionPane.showMessageDialog(frame, &数据库访问错误!删除失败!&,
&错误&, JOptionPane.ERROR_MESSAGE);
// 将错误写入错误日志
/* 取消按钮事件处理 */
btnCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
* 判断帐户名是否存在
* @param name
+ private boolean isExist(String name) {
boolean existed =
Collection oc = DBWorker.selOperator(name, &&, OperatorSelType.IN_NAME);
// 判断是否存在
if (!oc.isEmpty()) {
// 如果存在
Index: QueryView.java
===================================================================
--- QueryView.java (revision 0)
+++ QueryView.java (revision 9)
@@ -0,0 +1,93 @@
+package cn.ysf.asset.
+import java.awt.GridL
+import javax.swing.JB
+import javax.swing.JP
+import javax.swing.JTextF
+import javax.swing.border.TitledB
+ * 用户界面类--查询界面
+public class QueryView extends JPanel {
+ private static final long serialVersionUID = 1L;
+ // 按编号查
+ JButton btnById;
+ // 按类别查
+ JButton btnByC
+ // 按使用者查
+ JButton btnByU
+ // 资产编号
+ JTextField txtId;
+ // 类别名
+ JTextField txtC
+ // 使用者
+ JTextField txtU
* 构造方法
* @param width
* @param height
+ public QueryView(int width, int height) {
init(width, height);
} catch (Exception e) {
e.printStackTrace();
* @param width
* @param height
* @throws Exception
+ private void init(int width, int height) throws Exception {
JPanel pnlTop = new JPanel();
JPanel pnlCenter = new JPanel();
JPanel pnlBottom = new JPanel();
btnById = new JButton(&查询&);
btnByCate = new JButton(&查询&);
btnByUser = new JButton(&查询&);
txtId = new JTextField(10);
txtCate = new JTextField(10);
txtUser = new JTextField(10);
setLayout(new GridLayout(3, 1, 0, 5));// 3行1列间距0,5
pnlTop.setBorder(new TitledBorder(&按编号查&));
pnlCenter.setBorder(new TitledBorder(&按类别查&));
pnlBottom.setBorder(new TitledBorder(&按使用者查&));
pnlTop.add(txtId);
pnlTop.add(btnById);
pnlCenter.add(txtCate);
pnlCenter.add(btnByCate);
pnlBottom.add(txtUser);
pnlBottom.add(btnByUser);
add(pnlTop);
add(pnlCenter);
add(pnlBottom);
setSize(width, height);
\ No newline at end of file
Index: EmpDeletionView.java
===================================================================
--- EmpDeletionView.java (revision 0)
+++ EmpDeletionView.java (revision 9)
@@ -0,0 +1,313 @@
+package cn.ysf.asset.
+import java.awt.event.ActionE
+import java.awt.event.ActionL
+import java.io.F
+import java.io.IOE
+import java.util.C
+import javax.swing.JB
+import javax.swing.JD
+import javax.swing.JL
+import javax.swing.JOptionP
+import javax.swing.JScrollP
+import javax.swing.JT
+import javax.swing.JTextF
+import javax.swing.ListSelectionM
+import javax.swing.table.DefaultTableM
+import cn.ysf.asset.contrl.DBW
+import cn.ysf.asset.contrl.ImageG
+import cn.ysf.asset.contrl.WindowC
+import cn.ysf.asset.contrl.DBWorker.EmployeeSelT
+import cn.ysf.asset.contrl.DBWorker.LentSelT
+import cn.ysf.asset.entity.E
+ * 用户界面类--删除职员界面
+public class EmpDeletionView extends JDialog {
+ private static final long serialVersionUID = 1L;
+ private MM frame =
+ // 职员姓名
+ private JTextField txtName =
+ private JTextField txtPosition =
+ // 添加按钮
+ private JButton btnDelete =
+ // 关闭按钮
+ private JButton btnClose =
+ // 帮助按钮
+ private JButton btnHelp =
+ // 按姓名查
+ private JButton btnQByName =
+ // 按职务查
+ private JButton btnQByPos =
+ // 显示查找结果
+ private JTable table =
+ private String[] head = { &编号&, &姓名&, &性别&, &年龄&, &职务&, &备注& };
* 构造方法
* @param frame
对话框所属窗口
* @param title
对话框标题
+ public EmpDeletionView(MM frame, String title) {
super(frame, title);
this.frame =
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
WindowCenter.showCenter(frame, this);
} catch (Exception e) {
e.printStackTrace();
* 初始化对话框
* @throws Exception
+ private void init() throws Exception {
txtName = new JTextField();
txtPosition = new JTextField();
btnDelete = new JButton(&删除&);
btnClose = new JButton(&关闭&);
btnHelp = new JButton(&帮助&);
btnQByName = new JButton(&查找&);
btnQByPos = new JButton(&查找&);
table = new JTable();
JLabel lblName = new JLabel(&姓名:&);
JLabel lblPosition = new JLabel(&职务:&);
JLabel lblResult = new JLabel(&找到如下信息:&);
JScrollPane scp = new JScrollPane();
JLabel lblImg = new JLabel();
getContentPane().setLayout(null);
lblName.setBounds(20, 20, 50, 20);
add(lblName);
txtName.setBounds(70, 20, 100, 20);
add(txtName);
btnQByName.setBounds(180, 20, 60, 20);
add(btnQByName);
lblImg.setIcon(ImageGetter.getIcon(&AMSConfiguration& + File.separator
+ &img& + File.separator + &delemp.gif&));
lblImg.setBounds(250, 20, 100, 100);
add(lblImg);
lblPosition.setBounds(20, 50, 50, 20);
add(lblPosition);
txtPosition.setBounds(70, 50, 100, 20);
add(txtPosition);
btnQByPos.setBounds(180, 50, 60, 20);
add(btnQByPos);
lblResult.setBounds(20, 80, 100, 20);
add(lblResult);
// 设置表格选择模式为单选
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
// 禁止改变表头顺序
table.getTableHeader().setReorderingAllowed(false);
scp.getViewport().add(table);
scp.setBounds(10, 100, 325, 110);
btnDelete.setEnabled(false);
btnDelete.setBounds(40, 235, 60, 20);
add(btnDelete);
btnClose.setBounds(145, 235, 60, 20);
add(btnClose);
btnHelp.setBounds(250, 235, 60, 20);
add(btnHelp);
setSize(350, 300);
setModal(true);
setResizable(false);
/* 按姓名查找按钮事件处理 */
btnQByName.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String name = txtName.getText().trim();
if (name.equals(&&)) {
// 如果用户输入为空
JOptionPane.showMessageDialog(frame, &请先填写姓名!&, &提示&,
RMATION_MESSAGE);
txtName.requestFocus();
Collection ec = DBWorker.selEmp(name, EmployeeSelType.BY_NAME);
if (ec.isEmpty()) {
JOptionPane.showMessageDialog(frame, &没有找到任何信息!&, &提示&,
RMATION_MESSAGE);
txtName.requestFocus();
txtName.selectAll();
// 在表格中显示查找到的信息
setTableModel(table, ec, head);
JOptionPane.showMessageDialog(frame, &找到& + ec.size()
+ &条信息!&, &提示&, RMATION_MESSAGE);
btnDelete.setEnabled(true);
/* 按职务查找按钮事件处理 */
btnQByPos.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String position = txtPosition.getText().trim();
if (position.equals(&&)) {
// 如果用户输入为空
JOptionPane.showMessageDialog(frame, &请先填写职务!&, &提示&,
RMATION_MESSAGE);
txtPosition.requestFocus();
// 按照指定查找类型查找职员信息
Collection ec = DBWorker.selEmp(position,
EmployeeSelType.BY_POSITION);
if (ec.isEmpty()) {
JOptionPane.showMessageDialog(frame, &没有找到任何信息!&, &提示&,
RMATION_MESSAGE);
txtPosition.requestFocus();
txtPosition.selectAll();
// 在表格中显示查找到的信息
setTableModel(table, ec, head);
JOptionPane.showMessageDialog(frame, &找到& + ec.size()
+ &条信息!&, &提示&, RMATION_MESSAGE);
btnDelete.setEnabled(true);
/* 删除按钮事件处理 */
btnDelete.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (!isSelectedRow()) {
// 如果没有选中任一行
JOptionPane.showMessageDialog(frame, &请先选择要删除的职员!&, &提示&,
RMATION_MESSAGE);
// 获得当前选中行的第一列
String id = table.getValueAt(table.getSelectedRow(), 0)
.toString();
if (!DBWorker.selLent(id, LentSelType.BY_EMPLOYEE_ID).isEmpty()) {
// 如果该职员有借出资产记录
JOptionPane.showMessageDialog(frame, &该职员有未归还的资产!不能删除!&,
&警告&, JOptionPane.WARNING_MESSAGE);
if (DBWorker.modifyRecord(&proc_delEmp '& + id + &'&) != 0) {
JOptionPane.showMessageDialog(frame, &删除成功!&, &提示&,
RMATION_MESSAGE);
// 更新表格显示
((DefaultTableModel) table.getModel()).removeRow(table
.getSelectedRow());
JOptionPane.showMessageDialog(frame, &数据库访问失败!删除失败!&,
&警告&, JOptionPane.WARNING_MESSAGE);
// 将错误写入错误日志
/* 关闭按钮事件处理 */
btnClose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
dispose();
/* 帮助按钮事件处理 */
btnHelp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
// 弹出CHM帮助信息
String url = &hh AMSConfiguration& + File.separator
+ &help& + File.separator
+ &help.chm::/employeeManage.html#delemp&;
Runtime.getRuntime().exec(url);
} catch (IOException e) {
e.printStackTrace();
* 设置表模型
* @param table
* @param dataSet
* @param head
+ private void setTableModel(JTable table, Collection dataSet, String[] head) {
Object[][]
int rows = 1;
int size = dataSet.size();
// 判断dataSet中是否有元素
if (size & 0) {
// 如果超过rows行数据
if (size & rows) {
// 如果dataSet中有元素
data = new Object[rows][head.length];
// 用dataSet给data赋值
for (int i = 0; i & i++) {
Employee emp = (Employee) (dataSet.toArray())[i];
data[i][0] = emp.getId();
data[i][1] = emp.getName();
data[i][2] = emp.getSex();
data[i][3] = emp.getAge();
data[i][4] = emp.getPosition();
data[i][5] = emp.getRemark();
data = new Object[rows][head.length];
MyDefaultTableModel mdtm = new MyDefaultTableModel(data, head);
table.setModel(mdtm);
* isSelectedRow 判断是否有选中行
* @return boolean 有选中行返回true,否则返回false.
+ private boolean isSelectedRow() {
// 获得当前选择行的行号
int rowNumber = table.getSelectedRow();
// 如果有选中行时(即rowNumber不等于-1时)则返回true
return rowNumber != -1 ? true :
Index: AssetReturningView.java
===================================================================
--- AssetReturningView.java (revision 0)
+++ AssetReturningView.java (revision 9)
@@ -0,0 +1,231 @@
+package cn.ysf.asset.
+import java.awt.event.ActionE
+import java.awt.event.ActionL
+import java.io.F
+import java.io.IOE
+import java.util.C
+import javax.swing.JB
+import javax.swing.JD
+import javax.swing.JL
+import javax.swing.JOptionP
+import javax.swing.JScrollP
+import javax.swing.JT
+import javax.swing.JTextA
+import javax.swing.ListSelectionM
+import javax.swing.table.DefaultTableM
+import cn.ysf.asset.contrl.DBW
+import cn.ysf.asset.contrl.IOW
+import cn.ysf.asset.contrl.ImageG
+import cn.ysf.asset.contrl.WindowC
+import cn.ysf.asset.contrl.DBWorker.LentSelT
+import cn.ysf.asset.entity.L
+ * 用户界面类--资产归还界面
+public class AssetReturningView extends JDialog {
+ private static final long serialVersionUID = 1L;
+ private MM frame =
+ private JTextArea txaRemark =
+ // 归还按钮
+ private JButton btnReturn =
+ // 取消按钮
+ private JButton btnCancel =
+ // 帮助按钮
+ private JButton btnHelp =
+ // 显示已借出资产
+ private JTable table =
+ private String[] head = { &编号&, &名称&, &型号&, &类别&, &用途&, &借出日期& };
* 构造方法
* @param frame
JFrame 对话框所属窗口
* @param title
String 对话框标题
+ public AssetReturningView(MM frame, String title) {
super(frame, title);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.frame =
WindowCenter.showCenter(frame, this);
} catch (Exception e) {
e.printStackTrace();
* 初始化对话框
* @throws Exception
+ private void init() throws Exception {
txaRemark = new JTextArea();
btnReturn = new JButton(&归还&);
btnCancel = new JButton(&取消&);
btnHelp = new JButton(&帮助&);
table = new JTable();
JLabel lblRemark = new JLabel(&备注:&);
JLabel lblTip = new JLabel(&已借出的资产:&);
JScrollPane scp = new JScrollPane();
JScrollPane scpTable = new JScrollPane();
JLabel lblImg = new JLabel();
getContentPane().setLayout(null);
lblRemark.setBounds(20, 20, 80, 20);
add(lblRemark);
txaRemark.setLineWrap(true);
txaRemark.setWrapStyleWord(true);
scp.getViewport().add(txaRemark);
scp.setBounds(20, 40, 150, 70);
lblImg.setIcon(ImageGetter.getIcon(&AMSConfiguration& + File.separator
+ &img& + File.separator + &returnasset.gif&));
lblImg.setBounds(200, 20, 100, 100);
add(lblImg);
lblTip.setBounds(20, 120, 100, 20);
add(lblTip);
scpTable.setBounds(20, 140, 355, 150);
add(scpTable);
// 设置表格选择模式为单选
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
// 设置表头不可改变顺序
table.getTableHeader().setReorderingAllowed(false);
// 显示借出资产
setTableModel(table, DBWorker.selLent(&&, LentSelType.ALL), head);
scpTable.getViewport().add(table);
btnReturn.setBounds(84, 305, 60, 20);
add(btnReturn);
btnCancel.setBounds(174, 305, 60, 20);
add(btnCancel);
btnHelp.setBounds(264, 305, 60, 20);
add(btnHelp);
setSize(395, 370);
setModal(true);
setResizable(false);
/* 归还按钮事件处理 */
btnReturn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (!isSelectedRow()) {
// 如果没有选择任一行
JOptionPane.showMessageDialog(frame, &请先选择要归还的资产!&, &提示&,
RMATION_MESSAGE);
String remark = txaRemark.getText().trim();
if (remark.equals(&&)) {
remark = &暂无备注&;
String proc = &proc_returnAsset '&
+ table.getValueAt(table.getSelectedRow(), 0)
.toString()
+ &','&
+ new IOWorker().inPut(&AMSConfiguration&
+ File.separator + &config& + File.separator
+ &loginuser.tsc&) + &','& + remark + &'&;
if (DBWorker.modifyRecord(proc) != 0) {
// 删除显示对应已借资产信息
((DefaultTableModel) table.getModel()).removeRow(table
.getSelectedRow());
JOptionPane.showMessageDialog(frame, &资产归还成功!&, &提示&,
RMATION_MESSAGE);
// 更新显示
frame.tap.setTableModel(frame.tap.table, DBWorker.selAsset(
&proc_selAsset&, &all&), frame.head);
JOptionPane.showMessageDialog(frame, &数据库访问错误!资产归还失败!&,
&错误&, JOptionPane.ERROR_MESSAGE);
// 将错误写入错误日志
/* 取消按钮事件处理 */
btnCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
dispose();
/* 帮助按钮事件处理 */
btnHelp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
// 弹出CHM帮助信息
String url = &hh AMSConfiguration& + File.separator
+ &help& + File.separator
+ &help.chm::/returnAsset.html&;
Runtime.getRuntime().exec(url);
} catch (IOException e) {
e.printStackTrace();
* isSelectedRow 判断是否有选中行
* @return boolean 有选中行返回true,否则返回false.
+ private boolean isSelectedRow() {
// 如果有选中行时(即rowNumber不等于-1时)则返回true
return table.getSelectedRow() != -1 ? true :
* 设置表模型
* @param table
* @param dataSet
* @param head
+ private void setTableModel(JTable table, Collection dataSet, String[] head) {
Object[][]
int size = dataSet.size();
// 判断dataSet中是否有元素
if (size & 0) {
// 如果dataSet中有元素
data = new Object[size][head.length];
// 用dataSet给data赋值
for (int i = 0; i & i++) {
Lent l = (Lent) (dataSet.toArray())[i];
data[i][0] = l.getAssetId();
data[i][1] = l.getAssetName();
data[i][2] = l.getModel();
data[i][3] = l.getSubcateName();
data[i][4] = l.getPurpose();
data[i][5] = l.getDate();
MyDefaultTableModel mdtm = new MyDefaultTableModel(data, head);
table.setModel(mdtm);
Index: CategoryView.java
===================================================================
--- CategoryView.java (revision 0)
+++ CategoryView.java (revision 9)
@@ -0,0 +1,407 @@
+package cn.ysf.asset.
+import java.awt.event.ActionE
+import java.awt.event.ActionL
+import java.awt.event.FocusA
+import java.awt.event.FocusE
+import java.awt.event.MouseA
+import java.awt.event.MouseE
+import java.io.F
+import java.io.IOE
+import java.util.C
+import javax.swing.JB
+import javax.swing.JD
+import javax.swing.JL
+import javax.swing.JOptionP
+import javax.swing.JScrollP
+import javax.swing.JT
+import javax.swing.JTextF
+import javax.swing.ListSelectionM
+import javax.swing.table.DefaultTableM
+import javax.swing.tree.DefaultMutableTreeN
+import cn.ysf.asset.contrl.DBW
+import cn.ysf.asset.contrl.ImageG
+import cn.ysf.asset.contrl.WindowC
+import cn.ysf.asset.contrl.DBWorker.CateSelT
+import cn.ysf.asset.contrl.DBWorker.SubcateSelT
+import cn.ysf.asset.entity.C
+ * 用户界面类--大类管理界面
+public class CategoryView extends JDialog {
+ private static final long serialVersionUID = 1L;
+ private MM frame =
+ private JButton btnAdd =
+ private JButton btnDelete =
+ private JButton btnUpdate =
+ private JButton btnQuery =
+ private JButton btnClose =
+ private JButton btnHelp =
+ private JTextField txtName =
+ private JTable table = new JTable();
+ private String[] head = { &大类编号&, &大类名称& };
* 构造方法
* @param frame
对话框所属窗口
* @param title
对话框标题
+ public CategoryView(MM frame, String title) {
super(frame, title);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.frame =
WindowCenter.showCenter(frame, this);
} catch (Exception e) {
e.printStackTrace();
* 初始化对话框
* @throws Exception
+ private void init() throws Exception {
JScrollPane scp = new JScrollPane();
btnAdd = new JButton(&添加&);
btnDelete = new JButton(&删除&);
btnUpdate = new JButton(&修改&);
btnQuery = new JButton(&查找&);
btnClose = new JButton(&关闭&);
btnHelp = new JButton(&帮助&);
txtName = new JTextField();
JLabel lblName = new JLabel(&大类名称:&);
JLabel lblTitle = new JLabel(&已存在的大类别:&);
JLabel lblImg = new JLabel();
getContentPane().setLayout(null);
lblName.setBounds(10, 20, 80, 20);
add(lblName);
txtName.setBounds(70, 20, 100, 20);
add(txtName);
lblImg.setIcon(ImageGetter.getIcon(&AMSConfiguration& + File.separator
+ &img& + File.separator + &cate.gif&));
lblImg.setBounds(210, 15, 100, 50);
add(lblImg);
lblTitle.setBounds(10, 55, 200, 20);
add(lblTitle);
btnAdd.setBounds(40, 230, 60, 20);
add(btnAdd);
btnDelete.setBounds(132, 230, 60, 20);
add(btnDelete);
btnUpdate.setBounds(224, 230, 60, 20);
add(btnUpdate);
btnQuery.setBounds(40, 270, 60, 20);
add(btnQuery);
btnClose.setBounds(132, 270, 60, 20);
add(btnClose);
btnHelp.setBounds(224, 270, 60, 20);
add(btnHelp);
// 设置表格选择模式为单选
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
// 设置表头不可改变顺序
table.getTableHeader().setReorderingAllowed(false);
scp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scp.setBounds(10, 80, 300, 130);
setTableModel(table, DBWorker.selCate(& &, CateSelType.ALL), head);
scp.getViewport().add(table);
setSize(325, 330);
setResizable(false);
setModal(true);
/* 添加按钮事件处理 */
btnAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String name = txtName.getText().trim();
// 检查是否填写类别名
if (name.equals(&&)) {
JOptionPane.showMessageDialog(frame, &类别名未填写!&, &提示&,
RMATION_MESSAGE);
txtName.requestFocus();
// 类别名不能超过6个字符
if (name.length() & 6) {
JOptionPane.showMessageDialog(frame, &类别名最多为6个字符!&, &提示&,
RMATION_MESSAGE);
txtName.requestFocus();
txtName.selectAll();
// 如果已填写类别名,那么检查数据库中是否存在该名(类别名是唯一的)
Collection cc = DBWorker.selCate(name, CateSelType.BY_NAME);
if (cc.size() & 0) {
JOptionPane.showMessageDialog(frame, &该类别名已经存在!添加失败!&,
&提示&, JOptionPane.WARNING_MESSAGE);
txtName.requestFocus();
// 如果未存在该类别名,那么执行添加操作
int rowcount = DBWorker.modifyRecord(&proc_addCate '&
+ name + &'&);
if (rowcount != 0) {
// 如果rowcount(影响行数)不等于0,则表明完成添加操作
JOptionPane.showMessageDialog(frame, &添加成功&, &提示&,
RMATION_MESSAGE);
cc = DBWorker.selCate(& &, CateSelType.ALL);
// 更新表格的显示
setTableModel(table, cc, head);
// 更新树结构
DefaultMutableTreeNode root = new DefaultMutableTreeNode(
&TOM固定资产管理系统--类别&);
frame.trp.addNodes(frame.trp.tree, root, frame.trp
.getNodes());
frame.trp.setTreeModel(frame.trp.tree, root);
txtName.setText(&&);
// 如果rowcount等于0,则表明执行添加时发生异常
JOptionPane.showMessageDialog(frame, &数据库访问错误,添加失败!&,
&错误&, JOptionPane.ERROR_MESSAGE);
/* 删除按钮事件处理 */
btnDelete.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
// 如果没有选中任一行
if (!isSelectedRow()) {
JOptionPane.showMessageDialog(frame, &请先选择类别!&, &提示&,
RMATION_MESSAGE);
int rowNumber = table.getSelectedRow();
// 取出当前选择行的第一列值(大类编号)
String id = table.getValueAt(rowNumber, 0).toString();
// 取出当前选择行的第二列的值(大类名称)
String name = table.getValueAt(rowNumber, 1).toString();
// 检查该大类是否包含子类
Collection c = DBWorker.selSubcate(name,
SubcateSelType.BY_CATE_NAME);
if (c.size() & 0) {
// 如果包含子类,则不能删除
JOptionPane.showMessageDialog(frame, &该类别包含子类,不能删除!&, &提示&,
JOptionPane.WARNING_MESSAGE);
int userSelected = JOptionPane.showConfirmDialog(frame,
&确定删除类别 \&& + name + &\& 吗?&, &提示&,
JOptionPane.OK_CANCEL_OPTION);
// 如果用户选择的是&确定&,则执行删除操作
if (userSelected == JOptionPane.OK_OPTION) {
int rowCount = DBWorker.modifyRecord(&proc_delCate '&
+ id + &'&);
// 如果rowCount(所影响行数)不等于0,则表示删除成功,
// 否则表示发生了异常
if (rowCount != 0) {
JOptionPane.showMessageDialog(frame, &类别 \&& + name
+ &\& 已被删除!&, &提示&,
RMATION_MESSAGE);
// 更新表格显示
((DefaultTableModel) table.getModel())
.removeRow(table.getSelectedRow());
// 更新树结构
DefaultMutableTreeNode root = new DefaultMutableTreeNode(
&TOM固定资产管理系统--类别&);
frame.trp.addNodes(frame.trp.tree, root, frame.trp
.getNodes());
frame.trp.setTreeModel(frame.trp.tree, root);
txtName.setText(&&);
JOptionPane.showMessageDialog(frame,
&数据库访问错误,无法完成删除操作!&, &错误&,
JOptionPane.ERROR_MESSAGE);
/* 修改按钮事件处理 */
btnUpdate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
// 如果没有选中任一行
if (!isSelectedRow()) {
JOptionPane.showMessageDialog(frame, &请先选择类别!&, &提示&,
RMATION_MESSAGE);
int rowNumber = table.getSelectedRow();
String newName = txtName.getText().trim();
String id = table.getValueAt(rowNumber, 0).toString();
if (newName.equals(&&)) {
// 如果类别名为空
JOptionPane.showMessageDialog(frame, &类别名未填写!&, &提示&,
RMATION_MESSAGE);
txtName.requestFocus();
} else if (newName.equals(table.getValueAt(rowNumber, 1)
.toString())) {
JOptionPane.showMessageDialog(frame, &你对该类别未做任何修改&, &提示&,
JOptionPane.WARNING_MESSAGE);
txtName.requestFocus();
if (DBWorker.modifyRecord(&proc_updCate '& + id + &','&
+ newName + &'&) != 0) {
JOptionPane.showMessageDialog(frame, &修改成功!&, &提示&,
RMATION_MESSAGE);
// 更新显示
setTableModel(table, DBWorker.selCate(& &,
CateSelType.ALL), head);
// 更新树结构
DefaultMutableTreeNode root = new DefaultMutableTreeNode(
&TOM固定资产管理系统--类别&);
frame.trp.addNodes(frame.trp.tree, root, frame.trp
.getNodes());
frame.trp.setTreeModel(frame.trp.tree, root);
JOptionPane.showMessageDialog(frame, &数据库访问错误,修改失败!&,
&错误&, JOptionPane.ERROR_MESSAGE);
// 将错误写入错误日志
/* 查找按钮事件处理 */
btnQuery.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (txtName.getText().trim().equals(&&)) {
JOptionPane.showMessageDialog(frame, &请先填写类别名!&, &提示&,
RMATION_MESSAGE);
txtName.requestFocus();
boolean notFind =// 标记变量,未找到时为true
/* 查找 */
for (int i = 0; i & table.getRowCount(); i++) {
// 如果在表格中存在用户输入的类别则跳出循环
if (txtName.getText().trim().equals(
table.getValueAt(i, 1).toString())) {
// 选中查找到的那一行
table.changeSelection(i, 0, false, true);
/* 提示 */
if (notFind) {
// 如果没有找到
table.clearSelection();
JOptionPane.showMessageDialog(frame, &没有你要查找的类别!&, &提示&,
RMATION_MESSAGE);
txtName.requestFocus();
// 如果找到
JOptionPane.showMessageDialog(frame, &找到的类别已被选中!&, &提示&,
RMATION_MESSAGE);
/* 关闭按钮事件处理 */
btnClose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
dispose();
/* 帮助按钮事件处理 */
btnHelp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
// 弹出CHM帮助,并在CHM中查找到关于&大类管理&的帮助
String url = &hh AMSConfiguration&
+ File.separator + &help& + File.separator
+ &help.chm::/categoryManage.html&;
Runtime.getRuntime().exec(url);// &hh help.chm::& +
} catch (IOException e) {
e.printStackTrace();
/* 表格单击事件处理 */
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent me) {
// 获得当前选择行号(第一行行号为0)
int rowNumber = table.getSelectedRow();
// 设置txtName显示的文本为当前选择行第二列的值(类别名)
txtName.setText(table.getValueAt(rowNumber, 1).toString());
/* 文本框焦点事件处理 */
txtName.addFocusListener(new FocusAdapter() {
public void focusGained(FocusEvent fe) {
// 如果txtName文本框的内容不为空时选中全部
if (!txtName.getText().equals(&&)) {
txtName.selectAll();
* 设置表模型
* @param table
* @param dataSet
* @param head
+ private void setTableModel(JTable table, Collection dataSet, String[] head) {
Object[][]
int size = dataSet.size();
// 判断dataSet中是否有元素
if (size & 0) {
// 如果dataSet中有元素
data = new Object[size][head.length];
// 用dataSet给data赋值
for (int i = 0; i & i++) {
Category c = (Category) (dataSet.toArray())[i];
data[i][0] = c.getId();
data[i][1] = c.getName();
MyDefaultTableModel mdtm = new MyDefaultTableModel(data, head);
table.setModel(mdtm);
* isSelectedRow 判断是否有选中行
* @return boolean 有选中行返回true,否则返回false.
+ private boolean isSelectedRow() {
// 如果有选中行时(即rowNumber不等于-1时)则返回true
return table.getSelectedRow() != -1 ? true :
Index: EmpUpdatingView.java
===================================================================
--- EmpUpdatingView.java (revision 0)
+++ EmpUpdatingView.java (revision 9)
@@ -0,0 +1,314 @@
+package cn.ysf.asset.
+import java.awt.event.ActionE
+import java.awt.event.ActionL
+import java.awt.event.MouseA
+import java.awt.event.MouseE
+import java.io.F
+import java.io.IOE
+import java.util.C
+import javax.swing.JB
+import javax.swing.JComboB
+import javax.swing.JD
+import javax.swing.JL
+import javax.swing.JOptionP
+import javax.swing.JScrollP
+import javax.swing.JT
+import javax.swing.JTextA
+import javax.swing.JTextF
+import javax.swing.ListSelectionM
+import cn.ysf.asset.contrl.DBW
+import cn.ysf.asset.contrl.ImageG
+import cn.ysf.asset.contrl.WindowC
+import cn.ysf.asset.contrl.DBWorker.EmployeeSelT
+import cn.ysf.asset.entity.E
+ * 用户界面类--添加职员界面
+public class EmpUpdatingView extends JDialog {
+ private static final long serialVersionUID = 1L;
+ private MM frame =
+ // 职员姓名
+ private JTextField txtName =
+ private JTextField txtAge =
+ private JComboBox cboSex =
+ private JTextField txtPosition =
+ private JTextArea txaRemark =
+ // 修改按钮
+ private JButton btnUpdate =
+ // 关闭按钮
+ private JButton btnClose =
+ // 帮助按钮
+ private JButton btnHelp =
+ // 显示所有职员
+ private JTable table =
+ private String[] head = { &编号&, &姓名&, &性别&, &年龄&, &职务&, &备注& };
* 构造方法
* @param frame
对话框所属窗口
* @param title
对话框标题
+ public EmpUpdatingView(MM frame, String title) {
super(frame, title);
this.frame =
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
WindowCenter.showCenter(frame, this);
} catch (Exception e) {
e.printStackTrace();
* 初始化对话框
* @throws Exception
+ private void init() throws Exception {
txtName = new JTextField();
txtAge = new JTextField();
cboSex = new JComboBox();
txtPosition = new JTextField();
txaRemark = new JTextArea();
btnUpdate = new JButton(&修改&);
btnClose = new JButton(&关闭&);
btnHelp = new JButton(&帮助&);
table = new JTable();
JLabel lblName = new JLabel(&姓名:&);
JLabel lblAge = new JLabel(&年龄:&);
JLabel lblSex = new JLabel(&性别:&);
JLabel lblPosition = new JLabel(&职务:&);
JLabel lblRemark = new JLabel(&备注:&);
JLabel lblAll = new JLabel(&所有职员信息:&);
JScrollPane scp = new JScrollPane();
JScrollPane scpTable = new JScrollPane();
JLabel lblImg = new JLabel();
// 显示所有职员信息
setTableModel(table, DBWorker.selEmp(&&, EmployeeSelType.ALL), head);
getContentPane().setLayout(null);
lblName.setBounds(20, 20, 50, 20);
add(lblName);
txtName.setBounds(70, 20, 100, 20);
add(txtName);
lblAge.setBounds(180, 20, 50, 20);
add(lblAge);
txtAge.setBounds(230, 20, 100, 20);
add(txtAge);
lblSex.setBounds(20, 50, 50, 20);
add(lblSex);
cboSex.addItem(&男&);
cboSex.addItem(&女&);
cboSex.setBounds(70, 50, 100, 20);
add(cboSex);
lblPosition.setBounds(180, 50, 50, 20);
add(lblPosition);
txtPosition.setBounds(230, 50, 100, 20);
add(txtPosition);
lblRemark.setBounds(20, 80, 50, 20);
add(lblRemark);
// 设置表格选择模式为单选
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
// 禁止改变表头顺序
table.getTableHeader().setReorderingAllowed(false);
scp.getViewport().add(txaRemark);
scp.setBounds(20, 100, 150, 60);
lblImg.setIcon(ImageGetter.getIcon(&AMSConfiguration& + File.separator
+ &img& + File.separator + &updemp.gif&));
lblImg.setBounds(200, 100, 100, 100);
add(lblImg);
lblAll.setBounds(20, 170, 100, 20);
add(lblAll);
scpTable.getViewport().add(table);
scpTable.setBounds(10, 190, 325, 150);
add(scpTable);
btnUpdate.setBounds(50, 370, 60, 20);
add(btnUpdate);
btnClose.setBounds(145, 370, 60, 20);
add(btnClose);
btnHelp.setBounds(235, 370, 60, 20);
add(btnHelp);
txaRemark.setLineWrap(true);
txaRemark.setWrapStyleWord(true);
setSize(350, 440);
setModal(true);
setResizable(false);
/* 帮助按钮事件处理 */
btnHelp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
// 弹出CHM帮助
String url = &hh AMSConfiguration&
+ File.separator + &help& + File.separator
+ &help.chm::/employeeManage.html#updemp&;
Runtime.getRuntime().exec(url);
} catch (IOException e) {
e.printStackTrace();
/* 关闭按钮事件处理 */
btnClose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
dispose();
/* 修改按钮事件处理 */
btnUpdate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String name = txtName.getText().trim();
String age = txtAge.getText().trim();
String position = txtPosition.getText().trim();
String remark = txaRemark.getText().trim();
String sex = cboSex.getSelectedItem().toString();
if (!isSelectedRow()) {
// 如果未选中任一行
JOptionPane.showMessageDialog(frame, &请先选择要修改的职员!&, &提示&,
RMATION_MESSAGE);
if (name.equals(&&)) {
JOptionPane.showMessageDialog(frame, &请先填写职员姓名!&, &提示&,
RMATION_MESSAGE);
txtName.requestFocus();
if (!age.matches(&1[8,9]|[2-6][0-9]&)) {
JOptionPane.showMessageDialog(frame, &职员年龄必须为18-69之间!&,
&提示&, RMATION_MESSAGE);
txtAge.requestFocus();
txtAge.selectAll();
if (position.equals(&&)) {
JOptionPane.showMessageDialog(frame, &请先填写职务!&, &提示&,
RMATION_MESSAGE);
txtPosition.requestFocus();
if (remark.equals(&&)) {
remark = &暂无备注&;
String proc = &proc_updEmp '&
+ table.getValueAt(table.getSelectedRow(), 0)
.toString() + &','& + name + &','& + sex
+ &','& + age + &','& + position + &','& + remark + &'&;
if (DBWorker.modifyRecord(proc) != 0) {
// 如果修改成功
JOptionPane.showMessageDialog(frame, &修改成功!&, &提示&,
RMATION_MESSAGE);
// 更新显示
setTableModel(table, DBWorker.selEmp(&&,
EmployeeSelType.ALL), head);
JOptionPane.showMessageDialog(frame, &数据库访问错误!修改失败!&, &错误&,
JOptionPane.ERROR_MESSAGE);
// 将错误写入错误日志
/* 表格单击事件处理 */
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent me) {
// 获得当前选择行号(第一行行号为0)
int rowNumber = table.getSelectedRow();
// 设置对应输入为选中行的内容
txtName.setText(table.getValueAt(rowNumber, 1).toString());
cboSex.setSelectedItem(table.getValueAt(rowNumber, 2));
txtAge.setText(table.getValueAt(rowNumber, 3).toString());
txtPosition.setText(table.getValueAt(rowNumber, 4).toString());
txaRemark.setText(table.getValueAt(rowNumber, 5).toString());
* 设置表模型
* @param table
* @param dataSet
* @param head
+ private void setTableModel(JTable table, Collection dataSet, String[] head) {
Object[][]
int rows = 1;
int size = dataSet.size();
// 判断dataSet中是否有元素
if (size & 0) {
// 如果超过rows行数据
if (size & rows) {
// 如果dataSet中有元素
data = new Object[rows][head.length];
// 用dataSet给data赋值
for (int i = 0; i & i++) {
Employee emp = (Employee) (dataSet.toArray())[i];
data[i][0] = emp.getId();
data[i][1] = emp.getName();
data[i][2] = emp.getSex();
data[i][3] = emp.getAge();
data[i][4] = emp.getPosition();
data[i][5] = emp.getRemark();
data = new Object[rows][head.length];
MyDefaultTableModel mdtm = new MyDefaultTableModel(data, head);
table.setModel(mdtm);
* isSelectedRow 判断是否有选中行
* @return boolean 有选中行返回true,否则返回false.
+ private boolean isSelectedRow() {
// 获得当前选择行的行号
int rowNumber = table.getSelectedRow();
// 如果有选中行时(即rowNumber不等于-1时)则返回true
return rowNumber != -1 ? true :
Index: Login.java
===================================================================
--- Login.java (revision 0)
+++ Login.java (revision 9)
@@ -0,0 +1,169 @@
+package cn.ysf.asset.
+import java.awt.BorderL
+import java.awt.F
+import java.awt.event.ActionE
+import java.awt.event.ActionL
+import java.io.F
+import java.util.ArrayL
+import java.util.C
+import javax.swing.BorderF
+import javax.swing.JB
+import javax.swing.JF
+import javax.swing.JL
+import javax.swing.JOptionP
+import javax.swing.JP
+import javax.swing.JPasswordF
+import javax.swing.JTextF
+import javax.swing.border.TitledB
+import cn.ysf.asset.contrl.DBW
+import cn.ysf.asset.contrl.IOW
+import cn.ysf.asset.contrl.ImageG
+import cn.ysf.asset.contrl.WindowC
+import cn.ysf.asset.contrl.DBWorker.OperatorSelT
+ * 用户界面类--管理员登录界面
+ * @author pengwenfu
+public class Login extends JFrame implements ActionListener {
+ private static final long serialVersionUID = 1L;
+ // 登录名
+ private JTextField txtName =
+ private JPasswordField txtPassword =
+ // 类型:登录或切换用户
+ private String type =
* 构造方法
* @param title
* @param type
类型:登录或切换用户
+ public Login(String title, String type) {
super(title);
this.type =
if (type.equals(&login&)) {
// 如果是登录系统
setDefaultCloseOperation(EXIT_ON_CLOSE);
// 如果是切换用户
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
} catch (Exception e) {
e.printStackTrace();
* 按钮事件处理
+ public void actionPerformed(ActionEvent e) {
// 登录按钮
if (e.getActionCommand().equals(&login&)) {
String name = txtName.getText().trim();
char[] pwdChars = txtPassword.getPassword();
String pwd = &&;
if (name.equals(&&)) {
JOptionPane.showMessageDialog(this, &管理员不能为空,请输入!&, &提示&,
RMATION_MESSAGE);
txtName.requestFocus();
} else if (pwdChars.length == 0) {
JOptionPane.showMessageDialog(this, &密码不能为空,请输入!&, &提示&,
RMATION_MESSAGE);
txtPassword.requestFocus();
for (int i = 0; i & pwdChars. i++) {
pwd += pwdChars[i];
Collection opc = new ArrayList();
opc = DBWorker.selOperator(name, pwd,
OperatorSelType.IN_NAME_PWD);
if (opc.size() == 0) {
JOptionPane.showMessageDialog(this, &用户名或密码错误!&, &提示&,
RMATION_MESSAGE);
txtName.requestFocus();
// 如果用户名和密码正确并且类型为登录
if (type.equals(&login&)) {
new MM(&欢迎使用pengwenfu固定资产管理系统v1.0&);
dispose();
// 将用户名写入文件以备用
new IOWorker().outPut(name, &AMSConfiguration&
+ File.separator + &config& + File.separator
+ &loginuser.tsc&);
// 重置按钮
if (e.getActionCommand().equals(&reset&)) {
txtName.setText(&&);
txtPassword.setText(&&);
txtName.requestFocus();
* 初始化窗口
+ private void init() throws Exception {
JPanel pnlContentPane = (JPanel) getContentPane();
JPanel pnl = new JPanel();
txtName = new JTextField(10);
txtPassword = new JPasswordField(10);
JLabel lblName = new JLabel(&管理员:&);
JLabel lblPassword = new JLabel(&密
JButton btnLogin = new JButton(&登 录&);
JButton btnReset = new JButton(&重 置&);
Font font = new Font(&Dialog&, Font.PLAIN, 16);
pnlContentPane.setBorder(BorderFactory
.createEmptyBorder(10, 10, 10, 10));
pnl.setBorder(new TitledBorder(&&));
txtPassword.setEchoChar((char) 9793);
btnLogin.setActionCommand(&login&);
btnReset.setActionCommand(&reset&);
lblName.setFont(font);
lblPassword.setFont(font);
txtName.setFont(font);
txtPassword.setFont(font);
this.setIconImage(ImageGetter.getImage(&AMSConfiguration&
+ File.separator + &img& + File.separator + &loginlogo.gif&));
pnl.add(lblName);
pnl.add(txtName);
pnl.add(lblPassword);
pnl.add(txtPassword);
pnl.add(btnLogin);
pnl.add(btnReset);
pnlContentPane.add(pnl, BorderLayout.CENTER);
setSize(300, 160);
setResizable(false);
WindowCenter.showCenter(this);
btnLogin.addActionListener(this);
btnReset.addActionListener(this);
Index: MM.java
===================================================================
--- MM.java (revision 0)
+++ MM.java (revision 9)
@@ -0,0 +1,304 @@
+package cn.ysf.asset.
+// download by http://www.codefans.net
+import java.awt.BorderL
+import java.awt.event.ActionE
+import java.awt.event.ActionL
+import java.ponentA
+import java.ponentE
+import java.io.F
+import java.util.C
+import java.util.T
+import javax.swing.BorderF
+import javax.swing.JF
+import javax.swing.JL
+import javax.swing.JOptionP
+import javax.swing.JP
+import javax.swing.event.TreeSelectionE
+import javax.swing.event.TreeSelectionL
+import javax.swing.tree.DefaultMutableTreeN
+import cn.ysf.asset.contrl.DBW
+import cn.ysf.asset.contrl.DateTimeV
+import cn.ysf.asset.contrl.ImageG
+import cn.ysf.asset.contrl.MenuF
+import cn.ysf.asset.contrl.WindowC
+ * 用户界面类--主界面
+public class MM extends JFrame {
+ private static final long serialVersionUID = 1L;
+ // 树的要根结点
+ public DefaultMutableTreeNode root =
+ // 树面板
+ public CategoryTreeView trp =
+ // 表格面板
+ public AssetTableView tap =
+ public String[] head = { &资产编号&, &资产名称&, &大类名称&, &子类名称&, &资产型号&, &价格&,
&购入日期&, &状态&, &使用者&, &备注& };
+ // 查询面板
+ private QueryView qp =
+ // 左上面板:放查询面板
+ private JPanel pnlCTop =
+ // 左下面板:放树面板
+ private JPanel pnlCBottom =
+ // 右面板:放表格面板
+ private JPanel pnlCRight =
+ // 高度偏移量(和菜单栏和状态栏的高度之和有关)
+ private final int HEIGHT_OFFSET = 80;
+ // 显示当前时间
+ private DateTimeView dtv =
* 构造方法
* @param title
+ public MM(String title) {
super(title);
setDefaultCloseOperation(EXIT_ON_CLOSE);
} catch (Exception e) {
e.printStackTrace();
* 初始化窗口
* @throws Exception
+ private void init() throws Exception {
JPanel pnlCenter = new JPanel();
JLabel lblStatusBar = new JLabel(& &);
dtv = new DateTimeView(lblStatusBar);
Timer timer = new Timer();
qp = new QueryView(220, 220);
tap = new AssetTableView(570, 520);
root = new DefaultMutableTreeNode(&PWF固定资产管理系统--类别&);
pnlCTop = new JPanel();
pnlCBottom = new JPanel();
pnlCRight = new JPanel();
trp = new CategoryTreeView(220, 300);
pnlCenter.setLayout(null);
pnlCBottom.setLayout(null);
pnlCRight.setLayout(null);
pnlCTop.setBounds(0, 0, qp.getWidth(), qp.getHeight());
pnlCBottom.setBounds(0, qp.getWidth(), trp.getWidth(), trp.getHeight());
pnlCRight.setBounds(qp.getWidth(), 0, tap.getWidth(), tap.getHeight());
// 设置trp面板的宽高等于pnlCBottom面板的宽高
trp.setBounds(0, 0, pnlCBottom.getWidth(), pnlCBottom.getHeight());
// 设置tap面板的宽高等于pnlCRight面板的宽高
tap.setBounds(0, 0, pnlCRight.getWidth(), pnlCRight.getHeight());
// 添加大类结点
trp.addNodes(trp.tree, root, trp.getNodes());
// 设置树模型
trp.setTreeModel(trp.tree, root);
// 设置表模型
tap.setTableModel(tap.table, DBWorker.selAsset(&proc_selAsset&, &all&),
setIconImage(ImageGetter.getImage(&AMSConfiguration& + File.separator
+ &img& + File.separator + &mainlogo.gif&));
pnlCTop.add(qp);
pnlCBottom.add(trp);
pnlCRight.add(tap);
pnlCenter.add(pnlCTop);
pnlCenter.add(pnlCBottom);
pnlCenter.add(pnlCRight);
setJMenuBar(new MenuFactory(this).buildMenuBar());
lblStatusBar.setBorder(BorderFactory.createEtchedBorder());
lblStatusBar.setFont(new java.awt.Font(&Dialog&, java.awt.Font.PLAIN,
// 开始每隔一秒显示时间一次
timer.scheduleAtFixedRate(dtv, 0, 1000);
getContentPane().add(pnlCenter, BorderLayout.CENTER);
getContentPane().add(lblStatusBar, BorderLayout.SOUTH);
setSize(800, 600);
// 居中显示窗口
WindowCenter.showCenter(this);
/* 树事件处理 */
trp.tree.addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) e
.getPath().getLastPathComponent();
if (node.isRoot()) {
// 如果用户单击根结点,显示所有资产信息
tap.setTableModel(tap.table, DBWorker.selAsset(
&proc_selAsset&, &all&), head);
} else if (node.isLeaf() && node.getParent() == node.getRoot()) {
// 如果用户单击了根结点下的叶了结点(大类结点),显示指定子类别的资产信息,并且给其添加子结点
// 给node添加子结点
trp.addNodes(trp.tree, node, trp.getSubNodes(node
.toString()));
// 显示指定大类别的资产信息
tap.setTableModel(tap.table, DBWorker.selAsset(
&proc_selAssetInCate&, node.toString()), head);
// 如果用户单击子类结点
// 显示指定子类别的资产信息
tap.setTableModel(tap.table, DBWorker.selAsset(
&proc_selAssetInCate&, node.toString()), head);
/* 窗口宽高改变事件处理 */
addComponentListener(new ComponentAdapter() {
// 窗口改变大小时
public void componentResized(ComponentEvent e) {
// pnlCTop的宽高保持不变
.setBounds(0, 0, pnlCTop.getWidth(), pnlCTop
.getHeight());
// pnlCBottom的宽度保持不变,高度由窗口高度而定
pnlCBottom.setBounds(0, pnlCTop.getHeight(), pnlCBottom
.getWidth(), getHeight() - pnlCTop.getHeight());
// pnlCRight的宽高由窗口宽高而定(到底为什么要减10还没弄出来)
pnlCRight.setBounds(pnlCTop.getWidth(), 0, getWidth()
- pnlCTop.getWidth() - 10, getHeight() - HEIGHT_OFFSET);
// trp随着pnlCBottom宽高的改变而改变
trp.setBounds(0, 0, pnlCBottom.getWidth(), pnlCBottom
.getHeight());
// tap随着pnlCRight宽高的改变而改变
.setBounds(0, 0, pnlCRight.getWidth(), pnlCRight
.getHeight());
// trp.scp随着trp宽高的改变而改变宽高
.setBounds(trp.WIDTH_OFFSET / 2, 0, trp.getWidth()
- trp.WIDTH_OFFSET, trp.getHeight()
- trp.HEIGHT_OFFSET);
// 改变trp.tree的状态
trp.tree.setBounds(0, 0, 0, 0);
// tap.scp随着tap宽高的改变而改变宽高
tap.scp.setBounds(0, 0, tap.getWidth(), tap.getHeight());
// 改变tap.table的状态
tap.table.setBounds(0, 0, 0, 0);
/* 待解决方案:当窗口缩小到一定宽高时限制继续缩小 */
/* 按编号查 按钮事件处理 */
qp.btnById.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 获得用户输入的编号
String id = qp.txtId.getText().trim();
if (id.equals(&&)) {
// 如果输入为空
showTip(2, &请先填写编号!&);
// 如果输入不为空
Collection ac = DBWorker.selAsset(&proc_selAssetInAid&, id);
if (ac.size() & 0) {
// 如果查到
tap.setTableModel(tap.table, ac, head);
// 如果没有查到
showTip(2, &没有查到任何信息!&);
/* 按类别查 按钮事件处理 */
qp.btnByCate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 获得用户输入的类别名
String cate = qp.txtCate.getText().trim();
if (cate.equals(&&)) {
showTip(2, &请先输入部分或完整的类别名!&);
Collection ac = DBWorker.selAsset(&proc_selAssetInCate&,
if (ac.size() & 0) {
// 如果查到
tap.setTableModel(tap.table, ac, head);
// 如果没有查到
tap.clearTable(tap.table);
showTip(2, &没有查到任何信息!&);
/* 按使用者查 按钮事件处理 */
qp.btnByUser.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 获得用户输入的使用者姓名
String name = qp.txtUser.getText().trim();
if (name.equals(&&)) {
// 如果输入为空
showTip(2, &请先填写使用者姓名!&);
// 如果输入不为空
Collection ac = DBWorker.selAsset(&proc_selAssetInUser&,
if (ac.size() & 0) {
// 如果查到
tap.setTableModel(tap.table, ac, head);
// 如果没有查到
showTip(2, &没有查到任何信息!&);
* 弹出提示窗口
* @param type
提示类型:0错误,1警告,2提示
* @param mess
+ private void showTip(int type, String mess) {
switch (type) {
JOptionPane.showMessageDialog(this, mess, &错误&,
JOptionPane.ERROR_MESSAGE);
JOptionPane.showMessageDialog(this, mess, &警告&,
JOptionPane.WARNING_MESSAGE);
JOptionPane.showMessageDialog(this, mess, &提示&,
RMATION_MESSAGE);
Index: About.java
===================================================================
--- About.java (revision 0)
+++ About.java (revision 9)
@@ -0,0 +1,86 @@
+package cn.ysf.asset.
+// download by http://www.codefans.net
+import java.awt.event.ActionE
+import java.awt.event.ActionL
+import java.io.F
+import javax.swing.JB
+import javax.swing.JD
+import javax.swing.JL
+import cn.ysf.asset.contrl.ImageG
+import cn.ysf.asset.contrl.WindowC
+ * 用户界面类--关于
+public class About extends JDialog {
+ private static final long serialVersionUID = 1L;
* 构造方法
* @param frame
对话框所属窗口
* @param title
对话框标题
+ public About(MM frame, String title) {
super(frame, title);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
WindowCenter.showCenter(frame, this);
} catch (Exception e) {
e.printStackTrace();
* 初始化窗口
* @throws Exception
+ private void init() throws Exception {
JLabel lblTitle = new JLabel(&固定资产管理系统v1.0&);
JLabel lblLanguage = new JLabel(&开发语言:JAVA&);
JLabel lblAuthor = new JLabel(&作者:彭文福&);
JLabel lblEmail = new JLabel(&&);
JLabel lblQQ = new JLabel(&QQ:&);
JLabel lblCopy = new JLabel(&Copyright &);
JLabel lblImg = new JLabel();
JButton btnConfirm = new JButton(&确定&);
getContentPane().setLayout(null);
lblImg.setIcon(ImageGetter.getIcon(&AMSConfiguration& + File.separator
+ &img& + File.separator + &mainlogo.gif&));
lblImg.setBounds(30, 20, 50, 40);
add(lblImg);
lblTitle.setBounds(70, 20, 180, 20);
add(lblTitle);
lblLanguage.setBounds(90, 50, 180, 20);
add(lblLanguage);
lblAuthor.setBounds(90, 70, 180, 20);
add(lblAuthor);
lblQQ.setBounds(90, 90, 180, 20);
add(lblQQ);
lblEmail.setBounds(65, 110, 220, 20);
add(lblEmail);
lblCopy.setBounds(85, 130, 180, 20);
add(lblCopy);
btnConfirm.setBounds(95, 160, 60, 20);
add(btnConfirm);
setSize(250, 225);
setModal(true);
setResizable(false);
/* 确定按钮事件处理 */
btnConfirm.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
dispose();
Index: AssetView.java
===================================================================
--- AssetView.java (revision 0)
+++ AssetView.java (revision 9)
@@ -0,0 +1,511 @@
+package cn.ysf.asset.
+// download by http://www.codefans.net
+import java.awt.event.ActionE
+import java.awt.event.ActionL
+import java.io.F
+import java.io.IOE
+import java.util.C
+import java.util.I
+import javax.swing.JB
+import javax.swing.JComboB
+import javax.swing.JD
+import javax.swing.JL
+import javax.swing.JOptionP
+import javax.swing.JScrollP
+import javax.swing.JTextA
+import javax.swing.JTextF
+import cn.ysf.asset.contrl.DBW
+import cn.ysf.asset.contrl.IOW
+import cn.ysf.asset.contrl.WindowC
+import cn.ysf.asset.contrl.DBWorker.CateSelT
+import cn.ysf.asset.contrl.DBWorker.LentSelT
+import cn.ysf.asset.contrl.DBWorker.SubcateSelT
+import cn.ysf.asset.entity.A
+import cn.ysf.asset.entity.C
+import cn.ysf.asset.entity.S
+ * 用户界面类--资产信息管理界面
+public class AssetView extends JDialog {
+ private static final long serialVersionUID = 1L;
+ private MM frame =
+ private JButton btnAdd = new JButton(&添加&);
+ private JButton btnDelete = new JButton(&删除&);
+ private JButton btnUpdate = new JButton(&修改&);
+ private JButton btnQuery = new JButton(&查找&);
+ private JButton btnReset = new JButton(&重置&);
+ private JButton btnHelp = new JButton(&帮助&);
+ private JComboBox cboCate = new JComboBox();
+ private JComboBox cboSubcate = new JComboBox();
+ private JComboBox cboStatus = new JComboBox();
+ private JTextField txtID = new JTextField(&(系统自动生成)&);
+ private JTextField txtName = new JTextField();
+ private JTextField txtPrice = new JTextField();
+ private JTextField txtModel = new JTextField();
+ private JTextField txtPurDate = new JTextField();
+ private JTextArea txaRemark = new JTextArea();
* 构造方法
* @param frame
JFrame 对话框所属窗口
* @param title
String 对话框标题
+ public AssetView(MM frame, String title) {
super(frame, title);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.frame =
WindowCenter.showCenter(frame, this);
} catch (Exception e) {
e.printStackTrace();
* 初始化对话框
* @throws Exception
+ private void init() throws Exception {
JLabel lblID = new JLabel(&资产编号:&);
JLabel lblName = new JLabel(&资产名称:&);
JLabel lblCate = new JLabel(&大类名称:&);
JLabel lblSubcate = new JLabel(&小类名称:&);
JLabel lblPrice = new JLabel(&价格:&);
JLabel lblPurDate = new JLabel(&购入日期:&);
JLabel lblStatus = new JLabel(&状态:&);
JLabel lblModel = new JLabel(&型号:&);
JLabel lblRemark = new JLabel(&备注:&);
JLabel lblTip = new JLabel(&格式:xxxx-xx-xx或者xxxx.xx.xx&);
JScrollPane scpRemark = new JScrollPane();
getContentPane().setLayout(null);
lblID.setBounds(20, 20, 80, 20);
add(lblID);
txtID.setBounds(90, 20, 100, 20);
txtID.setEditable(false);
add(txtID);
lblName.setBounds(200, 20, 80, 20);
add(lblName);
txtName.setBounds(270, 20, 100, 20);
add(txtName);
lblCate.setBounds(20, 50, 80, 20);
add(lblCate);
cboCate.setBounds(90, 50, 100, 20);
add(cboCate);
lblSubcate.setBounds(200, 50, 80, 20);
add(lblSubcate);
cboSubcate.setBounds(270, 50, 100, 20);
add(cboSubcate);
lblPurDate.setBounds(20, 80, 80, 20);
add(lblPurDate);
txtPurDate.setBounds(90, 80, 100, 20);
add(txtPurDate);
lblTip.setBounds(25, 105, 240, 20);
add(lblTip);
lblPrice.setBounds(20, 140, 50, 20);
add(lblPrice);
txtPrice.setBounds(70, 140, 70, 20);
add(txtPrice);
lblStatus.setBounds(20, 170, 50, 20);
add(lblStatus);
cboStatus.addItem(&正常&);
cboStatus.addItem(&维修&);
cboStatus.addItem(&报废&);
cboStatus.setBounds(70, 170, 70, 20);
add(cboStatus);
lblModel.setBounds(20, 200, 50, 20);
add(lblModel);
txtModel.setBounds(70, 200, 70, 20);
add(txtModel);
lblRemark.setBounds(170, 140, 50, 20);
add(lblRemark);
scpRemark.setBounds(220, 140, 150, 80);
.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
txaRemark.setLineWrap(true);
txaRemark.setWrapStyleWord(true);
scpRemark.getViewport().add(txaRemark);
add(scpRemark);
btnAdd.setBounds(50, 250, 60, 20);
add(btnAdd);
btnDelete.setEnabled(false);
btnDelete.setBounds(160, 250, 60, 20);
add(btnDelete);
btnUpdate.setEnabled(false);
btnUpdate.setBounds(270, 250, 60, 20);
add(btnUpdate);
btnQuery.setBounds(50, 290, 60, 20);
add(btnQuery);
btnReset.setBounds(160, 290, 60, 20);
add(btnReset);
btnHelp.setBounds(270, 290, 60, 20);
add(btnHelp);
setSize(395, 350);
setModal(true);
setResizable(false);
cboCate.addItem(&请选择&);
// 添加含有了类的大类名
addCateItem(cboCate, DBWorker.selCate(&&, CateSelType.BY_HAVE_SUBCATE));
/* 单击大类名称列表框中的某项时 */
cboCate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
/* 先删除存在的元素再添加新元素 */
cboSubcate.removeAllItems();
/* 当选中项不为&请选择&时,将执行添加操作 */
if (cboCate.getSelectedIndex() != 0) {
addSubcateItem(cboSubcate, DBWorker.selSubcate(cboCate
.getSelectedItem().toString(),
SubcateSelType.BY_CATE_NAME));
/* 处理添加按钮事件 */
btnAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (isLegality()) {
String remark = txaRemark.getText().trim();
// 如果备注为空则在读取数据时将会报错
if (remark.equals(&&)) {
remark = &暂无备注&;
String proc = &proc_addAsset '& + txtName.getText().trim()
+ &','& + cboCate.getSelectedItem().toString()
+ &','& + cboSubcate.getSelectedItem().toString()
+ &','& + txtModel.getText().trim() + &','&
+ txtPrice.getText().trim() + &','&
+ txtPurDate.getText().trim() + &','&
+ cboStatus.getSelectedItem() + &','& + remark
+ &'&;
if (DBWorker.modifyRecord(proc) != 0) {
JOptionPane.showMessageDialog(frame, &资产信息添加成功!&, &提示&,
RMATION_MESSAGE);
// 更新显示
frame.tap.setTableModel(frame.tap.table, DBWorker
.selAsset(&proc_selAsset&, &all&), frame.head);
JOptionPane.showMessageDialog(frame,
&数据库访问错误,无法完成添加操作!&, &提示&,
JOptionPane.ERROR_MESSAGE);
// 这里将错误信息写入日志里
/* 删除按钮事件处理 */
btnDelete.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String id = txtID.getText().trim();
String name = txtName.getText().trim();
// 检查该资产是否被领用
if (!DBWorker.selLent(id, LentSelType.BY_ASSET_ID).isEmpty()) {
// 如果已被借用
JOptionPane.showMessageDialog(frame, &该资产已被领用!不能删除!&, &警告&,
JOptionPane.WARNING_MESSAGE);
int confirm = JOptionPane.showConfirmDialog(frame, &确定删除资产 \&&
+ name + &\& 吗?&, &确认&, JOptionPane.OK_CANCEL_OPTION);
// 如果用户单击的不是确定按钮则不执行if块后面的语句
if (confirm != JOptionPane.OK_OPTION) {
int success = DBWorker.modifyRecord(&proc_delAsset '& + id
+ &'&);
if (success != 0) {
JOptionPane.showMessageDialog(frame, &删除成功!&, &提示&,
RMATION_MESSAGE);
// 更新显示
frame.tap.setTableModel(frame.tap.table, DBWorker.selAsset(
&proc_selAsset&, &all&), frame.head);
JOptionPane.showMessageDialog(frame, &数据库访问错误!删除失败!&, &错误&,
JOptionPane.ERROR_MESSAGE);
// 将错误写入错误日志
/* 修改按钮事件处理 */
btnUpdate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (isLegality()) {
String assetID = txtID.getText().trim();
String assetName = txtName.getText().trim();
int confirm = JOptionPane.showConfirmDialog(frame,
&确认修改资产 \&& + assetName + &\& 吗?&, &提示&,
JOptionPane.OK_CANCEL_OPTION);
if (confirm != JOptionPane.OK_OPTION) {
String remark = txaRemark.getText().trim();
// 如果备注为空则在读取数据时将会报错
if (remark.equals(&&)) {
remark = &暂无说明&;
String proc = &proc_updAsset '& + assetID + &','&
+ assetName + &','&
+ cboCate.getSelectedItem().toString() + &','&
+ cboSubcate.getSelectedItem().toString() + &','&
+ txtModel.getText().trim() + &','&
+ txtPrice.getText().trim() + &','&
+ txtPurDate.getText().trim() + &','&
+ cboStatus.getSelectedItem() + &','& + remark
+ &'&;
int success = DBWorker.modifyRecord(proc);
if (success != 0) {
JOptionPane.showMessageDialog(frame, &修改成功!&, &提示&,
RMATION_MESSAGE);
// 更新显示
frame.tap.setTableModel(frame.tap.table, DBWorker
.selAsset(&proc_selAsset&, &all&), frame.head);
JOptionPane.showMessageDialog(frame, &数据库访问错误!修改失败!&,
&错误&, JOptionPane.ERROR_MESSAGE);
// 这里将错误写入日志文件
/* 查找按钮事件处理 */
btnQuery.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
InputDialog id = new InputDialog(frame, &输入--查找&);
String inputId = id.getInputId();
String inputName = id.getInputName();
// 如果用户单击了取消或关闭按钮(inputId和inputName的值都为空), 则不执行if块后的语句
if (inputId == null && inputName == null) {
// 如果inputId为空(用户选择按钮名称查)
if (inputId == null) {
// 取得指定名称的资产信息
Collection ac = DBWorker.selAsset(&proc_selAssetInName&,
inputName);
if (ac.isEmpty()) {
JOptionPane.showMessageDialog(frame, &没有你要查找的资产信息!&,
&提示&, RMATION_MESSAGE);
txtName.requestFocus();
// 禁用添加按钮直到用户单击重置按钮
btnAdd.setEnabled(false);
// 显示资产信息
showResult(ac);
// 将删除按钮和修改按钮启用
btnDelete.setEnabled(true);
btnUpdate.setEnabled(true);
// 如果inputName为空(用户选择按钮编号查)
if (inputName == null) {
// 取得指定编号的资产信息
Collection ac = DBWorker.selAsset(&proc_selAssetInAid&,
if (ac.isEmpty()) {
JOptionPane.showMessageDialog(frame, &没有你要查找的资产信息!&,
&提示&, RMATION_MESSAGE);
txtName.requestFocus();
// 禁用添加按钮直到用户单击重置按钮
btnAdd.setEnabled(false);
// 显示资产信息
showResult(ac);
// 将删除按钮和修改按钮启用
btnDelete.setEnabled(true);
btnUpdate.setEnabled(true);
/* 待解决问题:如果按名称查时可能查出很多条记录,因为资产名称不是唯一的 */
/* 重置按钮事件处理 */
btnReset.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
/* 帮助按钮事件处理 */
btnHelp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
// 弹出CHM帮助文件,并指向关于资产添加的帮助页面
String url = &hh AMSConfiguration& + File.separator
+ &help& + File.separator
+ &help.chm::/infoManage.html&;
Runtime.getRuntime().exec(url);
} catch (IOException e) {
e.printStackTrace();
* 给大类列表框添加元素
* @param cbo
* @param dataSet
+ private void addCateItem(JComboBox cbo, Collection dataSet) {
Iterator i = dataSet.iterator();
while (i.hasNext()) {
cbo.addItem(((Category) i.next()).getName());
* 给子类列表框添加元素
* @param cbo
* @param dataSet
+ private void addSubcateItem(JComboBox cbo, Collection dataSet) {
Iterator i = dataSet.iterator();
while (i.hasNext()) {
cbo.addItem(((Subcate) i.next()).getName());
* reset 重置
+ private void reset() {
txtID.setText(&(系统自动生成)&);
txtName.setText(&&);
cboCate.setSelectedIndex(0);
cboSubcate.removeAllItems();
txtPurDate.setText(&&);
txtPrice.setText(&&);
txtModel.setText(&&);
cboStatus.setSelectedIndex(0);
txaRemark.setText(&&);
btnUpdate.setEnabled(false);
btnDelete.setEnabled(false);
btnAdd.setEnabled(true);
* 显示结果
* @param dataSet
+ private void showResult(Collection dataSet) {
Iterator aci = dataSet.iterator();
while (aci.hasNext()) {
Asset a = (Asset) aci.next();
txtID.setText(a.getId() + &&);
txtName.setText(a.getName());
cboCate.setSelectedItem(a.getCateName());
cboSubcate.setSelectedItem(a.getSubcateName());
txtPurDate.setText(a.getPurDate());
txtModel.setText(a.getModel());
txtPrice.setText(a.getPrice() + &&);
cboStatus.setSelectedItem(a.getStatus());
txaRemark.setText(a.getRemark());
* 检查输入是否合法
+ private boolean isLegality() {
boolean legality =
// 取得用户设置的价格下限
double price = Double.parseDouble(new IOWorker()
.inPut(&AMSConfiguration& + File.separator + &config&
+ File.separator + &config.tsc&));
if (txtName.getText().trim().equals(&&)) {
JOptionPane.showMessageDialog(frame, &资产名称不能为空!&, &提示&,
RMATION_MESSAGE);
txtName.requestFocus();
} else if (cboCate.getSelectedIndex() == 0) {
JOptionPane.showMessageDialog(frame, &未选择类别&, &提示&,
RMATION_MESSAGE);
cboCate.requestFocus();
} else if (txtPurDate.getText().trim().equals(&&)) {
JOptionPane.showMessageDialog(frame, &日期不能为空!&, &提示&,
RMATION_MESSAGE);
txtPurDate.requestFocus();
} else if (!txtPurDate.getText().trim().matches(
&^[1-3][0-9]{3}(-|\\.)(0?[1-9]|1[0-2])(-|\\.)&
+ &(0?[1-9]|[1,2][0-9]|30|31)$&)) {
// 如果日期格式不为:xxxx-(xx|x)-(xx|x)或者xxxx.(xx|x).(xx|x)
JOptionPane.showMessageDialog(frame, &日期格式不正确!&, &提示&,
JOptionPane.ERROR_MESSAGE);
txtPurDate.requestFocus();
txtPurDate.selectAll();
} else if (txtPrice.getText().trim().equals(&&)) {
JOptionPane.showMessageDialog(frame, &价格不能为空&, &提示&,
RMATION_MESSAGE);
txtPrice.requestFocus();
} else if (!txtPrice.getText().trim().matches(
&^([1-9]|[1-9]\\d*)|([1-9]|[1-9]\\d*\\.\\d{1,2})$&)) {
// 价格必须大于0或0.00或0.0
JOptionPane.showMessageDialog(frame, &价格输入非法!请重新输入!&, &提示&,
JOptionPane.ERROR_MESSAGE);
txtPrice.requestFocus();
txtPrice.selectAll();
} else if (Double.parseDouble(txtPrice.getText().trim()) & price) {
// 价格必须大于等于用户设置的价格下限
JOptionPane.showMessageDialog(frame, &价格至少& + price + &元才算固定资产!&,
&提示&, RMATION_MESSAGE);
txtPrice.requestFocus();
txtPrice.selectAll();
} else if (txtModel.getText().trim().equals(&&)) {
JOptionPane.showMessageDialog(frame, &型号不能为空!&, &提示&,
RMATION_MESSAGE);
txtModel.requestFocus();
legality =
Index: AssetLendingView.java
===================================================================
--- AssetLendingView.java (revision 0)
+++ AssetLendingView.java (revision 9)
@@ -0,0 +1,353 @@
+package cn.ysf.asset.
+import java.awt.event.ActionE
+import java.awt.event.ActionL
+import java.awt.event.MouseA
+import java.awt.event.MouseE
+import java.io.F
+import java.io.IOE
+import java.util.C
+import java.util.I
+import javax.swing.JB
+import javax.swing.JComboB
+import javax.swing.JD
+import javax.swing.JL
+import javax.swing.JOptionP
+import javax.swing.JScrollP
+import javax.swing.JT
+import javax.swing.JTextA
+import javax.swing.JTextF
+import javax.swing.ListSelectionM
+import javax.swing.table.DefaultTableM
+import cn.ysf.asset.contrl.DBW
+import cn.ysf.asset.contrl.IOW
+import cn.ysf.asset.contrl.WindowC
+import cn.ysf.asset.contrl.DBWorker.EmployeeSelT
+import cn.ysf.asset.entity.A
+import cn.ysf.asset.entity.E
+ * 用户界面类--资产领用界面
+public class AssetLendingView extends JDialog {
+ private static final long serialVersionUID = 1L;
+ private MM frame =
+ // 资产编号
+ private JTextField txtId =
+ // 使用者
+ private JComboBox cboUser =
+ // 领用者职务
+ private JComboBox cboPosition =
+ // 管理员
+ private JTextField txtOperator =
+ private JTextField txtPurpose =
+ private JTextArea txaRemark =
+ // 领用按钮
+ private JButton btnLend =
+ // 取消按钮
+ private JButton btnCancel =
+ // 帮助按钮
+ private JButton btnHelp =
+ // 显示可领用资产
+ private JTable table =
+ private String[] head = { &编号&, &名称&, &型号&, &类别&, &价格& };
* 构造方法
* @param frame
JFrame 对话框所属窗口
* @param title
String 对话框标题
+ public AssetLendingView(MM frame, String title) {
super(frame, title);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.frame =
WindowCenter.showCenter(frame, this);
} catch (Exception e) {
e.printStackTrace();
* 初始化对话框
* @throws Exception
+ private void init() throws Exception {
txtId = new JTextField();
cboUser = new JComboBox();
txtOperator = new JTextField();
txtPurpose = new JTextField();
txaRemark = new JTextArea();
cboPosition = new JComboBox();
btnLend = new JButton(&领用&);
btnCancel = new JButton(&取消&);
btnHelp = new JButton(&帮助&);
table = new JTable();
JLabel lblId = new JLabel(&资产编号:&);
JLabel lblUser = new JLabel(&领用人:&);
JLabel lblPosition = new JLabel(&职务:&);
JLabel lblOperator = new JLabel(&管理员:&);
JLabel lblPurpose = new JLabel(&用途:&);
JLabel lblRemark = new JLabel(&备注:&);
JLabel lblTip = new JLabel(&可领用的资产:&);
JScrollPane scp = new JScrollPane();
JScrollPane scpTable = new JScrollPane();
getContentPane().setLayout(null);
lblId.setBounds(20, 20, 80, 20);
add(lblId);
txtId.setBounds(100, 20, 100, 20);
add(txtId);
lblPosition.setBounds(20, 50, 80, 20);
add(lblPosition);
cboPosition.setBounds(100,

我要回帖

更多关于 内存条上面参数详解 的文章

 

随机推荐