📄 codeset.java~43~
字号:
import javax.swing.*;
import java.awt.*;
import com.borland.jbcl.layout.*;
import java.awt.event.*;
import javax.swing.table.*;
import java.util.*;
import java.sql.*;
public class CodeSet
extends JFrame {
JLabel jLabel1 = new JLabel();
XYLayout xYLayout1 = new XYLayout();
JComboBox cboCode = new JComboBox();
JScrollPane jScrollPane1 = new JScrollPane();
JTextField txtCodeDes = new JTextField();
JButton btnAdd = new JButton();
JButton btnEdit = new JButton();
JButton btnDelete = new JButton();
JButton btnSave = new JButton();
JButton btnExit = new JButton();
JLabel jLabel2 = new JLabel();
JTextField txtCode = new JTextField();
JLabel jLabel3 = new JLabel();
//用二维数组存储系统中所用到的代码表物理名称及逻辑名称
String codeTables[][] = {
{
"Gender", "性别"}
, {
"Heading", "房屋朝向"}
, {
"HouseType", "房屋类型"}
, {
"HouseUsage", "房屋用途"}
, {
"Relation", "与房主关系"}
, {
"UseType", "使用方式"}
};
DefaultTableModel model = new DefaultTableModel();
//定义JTable为DefaultTableModel的实例model模式
JTable tblCode = new JTable(model);
//代码值链表,用于建立列表序号与代码值的对应关系
LinkedList linkID = new LinkedList();
//生成数据库操作类新实例,用于数据库操作
DBManager db = new DBManager();
//当前操作表
String curTable = new String();
//当前操作代码ID
String curID = new String();
//是否是窗口初始化过程
boolean isInit;
//操作类型
String operType = new String();
public CodeSet() {
try {
jbInit();
initForm();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
void jbInit() throws Exception {
jLabel1.setFont(new java.awt.Font("宋体", 0, 12));
jLabel1.setText("选择要维护的代码表:");
this.getContentPane().setLayout(xYLayout1);
cboCode.setBackground(SystemColor.activeCaptionBorder);
cboCode.setFont(new java.awt.Font("宋体", 0, 12));
cboCode.addActionListener(new CodeSet_cboCode_actionAdapter(this));
xYLayout1.setWidth(388);
xYLayout1.setHeight(311);
btnAdd.setFont(new java.awt.Font("宋体", 0, 12));
btnAdd.setText("新增");
btnAdd.addActionListener(new CodeSet_btnAdd_actionAdapter(this));
btnEdit.setFont(new java.awt.Font("宋体", 0, 12));
btnEdit.setText("修改");
btnEdit.addActionListener(new CodeSet_btnEdit_actionAdapter(this));
btnDelete.setText("删除");
btnDelete.addActionListener(new CodeSet_btnDelete_actionAdapter(this));
btnDelete.setFont(new java.awt.Font("宋体", 0, 12));
btnSave.setText("保存");
btnSave.addActionListener(new CodeSet_btnSave_actionAdapter(this));
btnSave.setFont(new java.awt.Font("宋体", 0, 12));
btnExit.setText("退出");
btnExit.addActionListener(new CodeSet_btnExit_actionAdapter(this));
btnExit.setFont(new java.awt.Font("宋体", 0, 12));
txtCodeDes.setFont(new java.awt.Font("宋体", 0, 12));
txtCodeDes.setText("");
this.setTitle("代码表设置");
jLabel2.setText("代码值:");
jLabel2.setFont(new java.awt.Font("宋体", 0, 12));
txtCode.setFont(new java.awt.Font("宋体", 0, 12));
txtCode.setText("");
jLabel3.setFont(new java.awt.Font("宋体", 0, 12));
jLabel3.setText("代码描述:");
tblCode.setFont(new java.awt.Font("宋体", 0, 12));
tblCode.setVerifyInputWhenFocusTarget(false);
tblCode.addMouseListener(new CodeSet_tblCode_mouseAdapter(this));
this.getContentPane().add(jScrollPane1, new XYConstraints(19, 77, 346, 146));
jScrollPane1.getViewport().add(tblCode, null);
this.getContentPane().add(jLabel1, new XYConstraints(21, 14, 136, -1));
this.getContentPane().add(cboCode, new XYConstraints(20, 38, 345, 26));
this.getContentPane().add(txtCodeDes, new XYConstraints(189, 231, 176, 25));
this.getContentPane().add(btnExit, new XYConstraints(300, 267, 61, 27));
this.getContentPane().add(btnSave, new XYConstraints(231, 267, 61, 27));
this.getContentPane().add(btnEdit, new XYConstraints(86, 267, 61, 27));
this.getContentPane().add(btnAdd, new XYConstraints(19, 267, 61, 27));
this.getContentPane().add(btnDelete, new XYConstraints(155, 267, 61, 27));
this.getContentPane().add(jLabel2, new XYConstraints(17, 236, 52, -1));
this.getContentPane().add(txtCode, new XYConstraints(65, 231, 51, 25));
this.getContentPane().add(jLabel3, new XYConstraints(125, 237, 65, -1));
}
//初始化窗口
void initForm() {
//设置isInit为true
isInit = true;
//从数组codeTables中读取代码表内容,将代码表逻辑名称显示在组合框中
for (int i = 0; i < codeTables.length; i++) {
cboCode.addItem(codeTables[i][1]);
}
//设置组合框选中项为空
cboCode.setSelectedItem(null);
//组合框初始化完毕,设置isInit为false
isInit = false;
//设置代码值输入框为不可编辑
txtCode.setEnabled(false);
//设置代码描述输入框为不可编辑
txtCodeDes.setEnabled(false);
//设置按钮均不可用
btnSetEnabled(false, false, false, false);
}
//设置操作类型
void setOperType(String type) {
operType = type;
}
//设置当前操作代码值
void setCurID(String ID) {
curID = ID;
}
//设置按钮的可用性
//传入四个boolean类型的参数,分别设置新增、修改、删除和保存按钮的可用性
void btnSetEnabled(boolean add, boolean edit, boolean delete, boolean save) {
btnAdd.setEnabled(add);
btnEdit.setEnabled(edit);
btnDelete.setEnabled(delete);
btnSave.setEnabled(save);
}
//显示代码表内容
void fullCode(String table) {
//根据传入的表名称,得到查询语句
String sql = "select * from " + table + " order by CODE";
//定义变量tempvector存储代码表数据
Vector tempvector;
//清空代码值链表
linkID.clear();
//清空结果列表表头
model.setColumnCount(0);
//清空结果列表
model.setRowCount(0);
//初始化结果列表表头
model.addColumn("代码值");
model.addColumn("代码描述");
try {
//传入查询语句,得到结果集
ResultSet rs = db.getResult(sql);
//判断结果集是否为空
if (rs.first()) {
//若不为空,移动游标,循环加载数据
rs.beforeFirst();
while (rs.next()) {
tempvector = new Vector(1, 1);
//添加代码值
tempvector.add(rs.getString("CODE"));
//将代码值添加到代码值链表中
linkID.add(rs.getString("CODE"));
//添加代码描述
tempvector.add(rs.getString("DESCRIPTION"));
//加入到结果列表中
model.addRow(tempvector);
}
rs.close();
}
else {
//若代码表内容为空,则给出提示信息
CommonDialog.showDialog(CommonDialog.OK, "房产管理系统", "代码表为空!");
rs.close();
}
}
catch (Exception e) {
e.printStackTrace();
}
//设置操作类型为"none",表示没有进行任何操作
setOperType("none");
}
//代码表列表组合框响应事件
void cboCode_actionPerformed(ActionEvent e) {
//因为在对列表组合框进行初始化时,也会触发该事件,而加载过程中cboCode.getSelectedIndex()为-1,
//所以会出现错误,因此定义一个boolean型变量用于判断是否是初始化过程。不是初始化过程时,才执行代码。
if (!isInit) {
//根据选中项序号从代码表数组中得到当前操作表
curTable = codeTables[cboCode.getSelectedIndex()][0];
//调用fullCode函数,显示当前代码表内容
fullCode(curTable);
}
}
//结果列表鼠标点击响应事件
void tblCode_mouseClicked(MouseEvent e) {
//根据结果列表选中行序号从代码值链表中得到当前操作代码值
curID = (linkID.get(tblCode.getSelectedRow())).toString();
//设置代码值输入框内容为当前操作代码值
txtCode.setText(curID);
//调用函数DBManager类中的getByField函数,根据代码值得到代码描述,并显示在代码描述输入框中
txtCodeDes.setText(db.getByField(curTable, "DESCRIPTION",
"CODE='" + curID + "'"));
//设置新增、修改和删除按钮可用
btnSetEnabled(true, true, true, false);
}
//新增按钮响应事件
void btnAdd_actionPerformed(ActionEvent e) {
//新增时会清空输入框数据,所以应判断当前操作类型,若正在进行新增、修改等操作,则给出提示信息
if (!operType.equals("none")) {
//询问用户是否中断当前操作
int ir = CommonDialog.showDialog(3, "房产管理系统", "当前操作尚未保存,确定要新增吗?");
//用户点击取消时,跳出新增过程,继续当前操作
if (ir == 2) {
return;
}
}
//设置代码描述输入框为可编辑
txtCodeDes.setEnabled(true);
String code = new String();
//调用getID函数,得到新的代码值
code = db.getID(curTable, "CODE");
//将新代码值显示在代码值输入框中
txtCode.setText(code);
//设置代码描述输入框为空
txtCodeDes.setText("");
//设置保存按钮可用
btnSetEnabled(true, false, false, true);
//将当前操作代码值置为空
setCurID("");
//设置当前操作类型为add
setOperType("add");
}
boolean checkData() {
if (txtCode.getText().trim().equals("")) {
CommonDialog.showDialog(CommonDialog.OK, "房产管理系统", "代码值不能为空!");
txtCode.setFocusable(true);
return false;
}
if (txtCodeDes.getText().trim().equals("")) {
CommonDialog.showDialog(CommonDialog.OK, "房产管理系统", "代码描述不能为空!");
txtCodeDes.setFocusable(true);
return false;
}
return true;
}
void btnEdit_actionPerformed(ActionEvent e) {
txtCode.setEnabled(false);
txtCodeDes.setEnabled(true);
btnSetEnabled(true, true, false, true);
setOperType("edit");
}
void btnSave_actionPerformed(ActionEvent e) {
if (!checkData()) {
return;
}
String sql = new String();
if (operType.equals("add")) {
sql = "insert into " + curTable + " values('" + txtCode.getText() + "','" +
txtCodeDes.getText() + "')";
}
else if (operType.equals("edit")) {
sql = "update " + curTable + " set DESCRIPTION='" + txtCodeDes.getText() +
"' where CODE='" + curID + "'";
}
if (db.executeSql(sql)) {
CommonDialog.showDialog(CommonDialog.OK, "房产管理系统", "数据库操作成功!");
btnSetEnabled(true, true, true, false);
setOperType("none");
fullCode(curTable);
txtCodeDes.setEnabled(false);
}
else {
CommonDialog.showDialog(CommonDialog.OK, "房产管理系统", "数据库操作失败,请重试!");
}
}
void btnDelete_actionPerformed(ActionEvent e) {
if (!curID.equals("")) {
int ir = CommonDialog.showDialog(3, "房产管理系统", "确定要删除当前记录吗?");
if (ir == 2) {
return;
}
String sql = "delete from " + curTable + " where CODE='" + curID + "'";
if (db.executeSql(sql)) {
CommonDialog.showDialog(CommonDialog.OK, "房产管理系统", "删除记录成功!");
txtCode.setText("");
txtCodeDes.setText("");
btnSetEnabled(true, false, false, false);
setOperType("none");
fullCode(curTable);
}
else {
CommonDialog.showDialog(CommonDialog.OK, "房产管理系统", "删除记录失败,请重试!");
}
}
}
void btnExit_actionPerformed(ActionEvent e) {
if (!operType.equals("none")) {
int ir = CommonDialog.showDialog(3, "房产管理系统", "当前操作尚未保存,确定要退出吗?");
if (ir == 2) {
return;
}
}
this.dispose();
}
}
class CodeSet_btnExit_actionAdapter
implements java.awt.event.ActionListener {
CodeSet adaptee;
CodeSet_btnExit_actionAdapter(CodeSet adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btnExit_actionPerformed(e);
}
}
class CodeSet_cboCode_actionAdapter
implements java.awt.event.ActionListener {
CodeSet adaptee;
CodeSet_cboCode_actionAdapter(CodeSet adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.cboCode_actionPerformed(e);
}
}
class CodeSet_tblCode_mouseAdapter
extends java.awt.event.MouseAdapter {
CodeSet adaptee;
CodeSet_tblCode_mouseAdapter(CodeSet adaptee) {
this.adaptee = adaptee;
}
public void mouseClicked(MouseEvent e) {
adaptee.tblCode_mouseClicked(e);
}
}
class CodeSet_btnAdd_actionAdapter
implements java.awt.event.ActionListener {
CodeSet adaptee;
CodeSet_btnAdd_actionAdapter(CodeSet adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btnAdd_actionPerformed(e);
}
}
class CodeSet_btnEdit_actionAdapter
implements java.awt.event.ActionListener {
CodeSet adaptee;
CodeSet_btnEdit_actionAdapter(CodeSet adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btnEdit_actionPerformed(e);
}
}
class CodeSet_btnSave_actionAdapter
implements java.awt.event.ActionListener {
CodeSet adaptee;
CodeSet_btnSave_actionAdapter(CodeSet adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btnSave_actionPerformed(e);
}
}
class CodeSet_btnDelete_actionAdapter
implements java.awt.event.ActionListener {
CodeSet adaptee;
CodeSet_btnDelete_actionAdapter(CodeSet adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btnDelete_actionPerformed(e);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -