📄 codeset.java
字号:
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);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -