⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 codeset.java

📁 此程序是在JBuilderX中开发。若采用低版本JBuilder
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 + -