我定义的TableModel在getValueAt里直接返回结果集中的数据,没有用Vector和Object存储数据,运行没什么问题,但是对鼠标选中某一列的响应有问题,好像不能及时刷新,显示很有问题。那位有什么好办法吗?

解决方案 »

  1.   

    不太明白你的意思这里有个例子,看能不能对你有帮助
    http://community.csdn.net/Expert/topic/4869/4869338.xml?temp=.6329462
      

  2.   


    /**
     * <p>Title: 自己定义的表格</p>
     * <p>Description: 继承AbstractTableModel类,实现自己的表格</p>
     * <p>Copyright: Copyright (c) 2003</p>
     * <p>Filename: MyTableDemo.java</p>
     * @version 1.0
     */
    /**
     * <p>Title: 定义自己的表格模式</p>
     * <p>Description: 通过继承AbstractTableModel类来定义自己的表格模式</p>
     */
    public class TitleTableModel
        extends AbstractTableModel {
      //定义表头
      final String columnNames[] = {
          "序号", "重要性", "标题", "链接", "网址", "文件时间", "跟踪时间", "文件大小", "文件类型", "摘要",
          "关键字"};
      public ResultSet rs = null;
      /**
       *<br>方法说明:继承AbstractTableModel必须实现的方法
       *<br>输入参数:
       *<br>返回类型:int 列数
       */
      public int getColumnCount() {
        return columnNames.length;
      }  /**
       *<br>方法说明:继承AbstractTableModel必须实现的方法
       *<br>输入参数:
       *<br>返回类型:int 列数
       */
      public int getRowCount() {
        if (rs == null) {
          return 0;
        }
        try {
          int i = 1;
          if (!rs.first()) {
            return 0;
          }
          while (rs.next()) {
            i++;
          }
          return i;
        }
        catch (SQLException ex) {
          return 0;
        }
      }  /**
       *<br>方法说明:继承AbstractTableModel必须实现的方法
       *<br>输入参数:
       *<br>返回类型:String 列名
       */
      public String getColumnName(int col) {
        return columnNames[col];
      }  /**
       *<br>方法说明:继承AbstractTableModel必须实现的方法,获取表格中的数据
       *<br>输入参数:int row 行数
       *<br>输入参数:int col 列数
       *<br>返回类型:Object 数据对象
       */
      public Object getValueAt(int row, int col) {
        if (rs == null) {
          return null;
        }
        try {
          if (rs.absolute(row + 1)) {
           String strColumn = getColumnName(col);
           return rs.getObject(strColumn); 
          }
        }
        catch (SQLException ex) {
          System.out.print(ex.toString() + row + "  " + col);
        }
        return null;
      }
     }
      

  3.   

    我感觉可能是每次getValueAt都移动rs的指针,使得开销太大,响应不及时。没办法确定问题的原因,真的很难办啊。
      

  4.   

    dongle2001(dl) 
    我感觉可能是每次getValueAt都移动rs的指针,使得开销太大,响应不及时。没办法确定问题的原因,真的很难办啊。
    ----------------------
    如果你读一下DefaultTableModel的代码的话,会发现你有件事忘做了,通知JTable更新.