`
ljl_xyf
  • 浏览: 643008 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Jtable利用SetModel进行数据绑定

    博客分类:
  • java
阅读更多

首页定义了一个公用Model类,代码如下:

 

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package TableModel;

import java.sql.ResultSet;
import java.util.LinkedList;
import javax.swing.table.AbstractTableModel;
import zhinengkaiguanjiankong.comm.LoggerUtil;

/**
 *数据库和JTable数据绑定记录数据存放对象
 * @author http://www.my400800.cn
 */
public class TableModel extends AbstractTableModel {

    private int column = 4;
    private String[] columnName = null;
    private LinkedList<String[]> resultSet = null;  

    public TableModel() {
    }

    /** Creates a new instance of TableModel */
    public TableModel(ResultSet rs, String[] DScolumnName, String[] columnName) throws Exception {
        if (DScolumnName.length != columnName.length) {
            throw new Exception("指定JTable列和指定数据库列数不一致,无法进行数据绑定");
        }
        this.columnName = columnName;
        column = columnName.length;
        resultSet = new LinkedList<String[]>();
        try {
            while (rs.next()) {
                String[] row = new String[column];
                for (int i = 0; i < column; i++) {
                    row[i] = rs.getString(DScolumnName[i]);
                }
                resultSet.add(row);             
            }
        } catch (Exception e) {
            LoggerUtil.WriteErrLog(e);
            throw e;
            // System.out.println("err");
        }
    }

    /**
     * 取得总记录数
     * @return  总记录数
     */
    public int getRowCount() {
        return resultSet.size();
    }

    /**
     * 取得总列数
     * @return  总列数
     */
    public int getColumnCount() {
        return column;
    }

    /**
     * 取得指定行指定列数据
     * @param rowIndex      行
     * @param columnIndex   列
     * @return
     */
    public Object getValueAt(int rowIndex, int columnIndex) {
        String[] row = resultSet.get(rowIndex);
        return row[columnIndex];
    }

    /**
     * 取得指定列名称
     * @param i  指定列
     * @return   指定列名称返回
     */
    public String getColumnName(int i) {
        return columnName[i];
    }
}

 

 

model实现类,在这个列里面设定JTable列明和数据库的取得字段名

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package TableModel;

import java.sql.ResultSet;

/**
 *
 * @author 173.114
 */
public class ZhinengkaiguanjiankongViewTableModel extends TableModel {

    public ZhinengkaiguanjiankongViewTableModel(ResultSet rs) throws Exception {
        /**
         * 记录rs   数据库字段名    JTable列明
         */
        super(rs, new String[]{"id", "i64val", "timeval", "val14", "val22", "adv", "val24", "val13"},
                new String[]{"ID", "名称", "时间", "状态", "段位", "属性", "备注", "开关ID"});     
    }
}

 

数据绑定代码

 tableModel = new ZhinengkaiguanjiankongViewTableModel(数据库取得的ResultSet );
            jtbl_DataList.setModel(tableModel);

通过上面的代码,就把数据通过Model绑定到JTable了

 

 

分享到:
评论

相关推荐

    支持ResultSet的JTable

    标题"支持ResultSet的JTable"暗示我们将探讨如何将`ResultSet`对象的数据绑定到`JTable`,以便在GUI中实时显示查询结果。通常,这个过程涉及到以下步骤: 1. **数据库连接**:首先,我们需要使用`DriverManager.get...

    一个jTable的示例文件.rar

    - JTable的数据由DefaultTableModel管理,你可以通过setModel()方法更换模型。 - DefaultTableModel可以动态添加、删除行和列,更新单元格数据。 3. **列和行的操作** - addColumn():向表格添加一列。 - ...

    学生信息管理系统3,学生信息管理系统查询,Java

    通过调用JTable的setModel方法,我们可以将从数据库获取的数据绑定到表格上。此外,JScrollPane组件可以用于包裹JTable,使得在数据过多时可以滚动查看。 为了实现数据的增删改查功能,我们可以添加一系列的菜单项...

    java swing写的资源管理器

    开发者可以通过设置`DefaultTableModel`,并用`setModel`方法将其绑定到JTable上,然后将文件信息(如名称、大小、类型等)填充到表格中。用户可以在JTable中进行排序、筛选和选择文件,同时可以通过添加事件监听器...

    JAVASwing员工管理系统

    开发者需要创建一个TableModel来定义数据结构,并通过setModel()方法将模型绑定到表格上。 6. 数据存储:系统可能采用了数据库如MySQL或SQLite来存储员工数据。Java JDBC(Java Database Connectivity)被用来连接...

    Java Swing MVC使用.rar

    - **设置模型**:将模型绑定到视图组件,例如`table.setModel(model)`。 - **添加控制器**:为视图组件添加事件监听器,如`button.addActionListener(listener)`,并在监听器中处理事件并更新模型。 5. **示例...

    数据库系统代码

    `DefaultTableModel`是`javax.swing.JTable`的模型,它将数据与表格视图关联起来,`mytable1.setModel(t1)`将查询结果加载到表格中。 4. **用户界面组件**: 这段代码使用了`javax.swing`包中的组件来构建图形用户...

    如何在Java中从mysql“订单表”和“付款表”显示客户分类帐

    如果你使用Swing或NetBeans进行GUI开发,你可能需要将数据绑定到表格组件(如`javax.swing.JTable`)上。对于更复杂的需求,可以考虑使用`javax.swing.table.DefaultTableModel`自定义模型来管理数据。例如: ```...

Global site tag (gtag.js) - Google Analytics