可视化Swing中JTable控件绑定SQL数据源的两种方法深入解析

在 MyEclipse 的可视化 Swing 中,有 JTable 控件。JTable 用来显示和编辑常规二维单元表。那么,如何将 数据库SQL中的数据绑定至JTable中呢?在这里,提供两种方法。JTable的构造方法通过查阅Java的API,可以可以得到JTable的两个重要的构造方法:JTable(Object[][] rowData, Object[] columnNames)构造一个 JTable 来显示二维数组 rowData 中的值,其列名称为 columnNames。JTable(TableModel dm)构造一个 JTable,使用数据模型 dm、默认的列模型和默认的选择模型对其进行初始化。

以下,我们就通过这两个构造方法来将JTable绑定到SQL数据库。

必要的准备工作一、有一个可供绑定的数据库。二、在可视化Swing中拖拉进来一个Jtable控件。方法一:通过二维数组绑定该方法用到的构造方法为:JTable(Object[][] rowData, Object[] columnNames)构造一个 JTable 来显示二维数组 rowData 中的值,其列名称为 columnNames。构建二维数组rowData通过上节博文“预编译”的学习,我们已经能够将SQL数据库读取至ResultSet 中。《JDBC之PreparedStatement类中预编译的综合应用解析》回顾如下:

代码如下:
 /** 查询并返回记录集 */ public ResultSet getResultSet(String sql, Object[] objArr){  getConnection();  try {   pStatement = connection.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);   if(objArr!=null && objArr.length>0) {    for (int i = 0; i < objArr.length; i++) {     pStatement.setObject(i+1, objArr[i]);    }   }   rSet = pStatement.executeQuery();   //list = resultSetToList(rs);  } catch (SQLException e) {   e.printStackTrace();  } finally {   //close();  }  return rSet; }
【注】只是与上节博客的方法名不同而已。。现在,我们为了将ResultSet 转化为二维数组,写如下方法:
代码如下:
 /** 把结果集转成Object[][] */ public Object[][] resultSetToObjectArray(ResultSet rs) {  Object[][] data = null;  try {    rs.last();   int rows = rs.getRow();   data = new Object[rows][];     ResultSetMetaData md = rs.getMetaData();//获取记录集的元数据   int columnCount = md.getColumnCount();//列数   rs.first();   int k = 0;   while(rs.next()) {    System.out.println("i"+k);    Object[] row = new Object[columnCount];    for(int i=0; i<columnCount; i++) {     row[i] = rs.getObject(i+1).toString();    }    data[k] = row;    k++;   }  } catch (Exception e) {  }  return data; } 
并将这两个方法存至文件UserDAO.java中。在Swing所在的Java文件中先实例化UserDAO:
代码如下:
 UserDAO userDAO = new UserDAO();
即可将SQL数据转化为二维数组:
代码如下:
  Object[][] dataObjects = userDAO.resultSetToObjectArray(userDAO.getResultSet(      "select id,username,password from t_userr", null));
构建列名称 columnNames这个比较简单,只需要将列名称写入String数组即可。
代码如下:
 String[] tableStrings = { "id", "username", "password" };
构建JTable的Model:
代码如下:
 jTable1.setModel(new DefaultTableModel(dataObjects, tableStrings));
整体代码视图:

整体代码视图:

方法二:通过Model绑定该方法用到的构造方法为:

JTable(TableModel dm)构造一个 JTable,使用数据模型 dm、默认的列模型和默认的选择模型对其进行初始化。

设置Model路径

进入 JTable 控件的控制面板,点击model。

选择Model来自代码。

填写 model 的方法路径:包名.Java文件名.方法名。

为了调用方便,建议将方法设置为静态方法。

写入Model 方法

在刚刚设置的路径下写入Model的方法,注意其返回类型为TableModel。

方法的写法与上面的大同小异,不再赘述。

代码如下:
 public static TableModel Member() {  String[][] playerInfo = new String[80][8];  BaseDAO bDao = new BaseDAO();  String sql = "select id,realName,username,sex,phone,email,vocation,city from jdbctest";  String[] ss = {};  ArrayList<HashMap<Object, Object>> list = bDao.Query(sql, ss);//  bDao.AllArray(list);  int i = 0, j = 0;  for (HashMap<Object, Object> maps : list) {   Set<Object> keysObjects = maps.keySet();   for (Object kObject : keysObjects) {    playerInfo[i][j] = maps.get(kObject).toString();    j++;   }   i++;   j = 0;  }  String[] Names = { "id", "username", "sex", "phone","vocation","email","realName",   "city" };  DefaultTableModel dModel = new DefaultTableModel(playerInfo, Names);  return (TableModel)dModel; }
JTable 效果

以上是 可视化Swing中JTable控件绑定SQL数据源的两种方法深入解析 的全部内容, 来源链接: utcz.com/p/207816.html

回到顶部