CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2EE / EJB / JMS

JTable

楼主yanleon1228()2004-12-02 10:48:46 在 Java / J2EE / EJB / JMS 提问

class   SimpleTableModel   extends   AbstractTableModel  
          {  
  Vector   columnNames   =   new   Vector();    
  Vector   data   =   new   Vector();    
   
                  //获取字段的名称  
  public   SimpleTableModel(ResultSet   rs)  
  {  
  try  
  {  
                    ResultSetMetaData   rsmd=rs.getMetaData();  
    for(int   i=1;i<=rsmd.getColumnCount();i++)  
  {  
  columnNames.addElement(rsmd.getColumnName(i));  
                    }  
   
  //获取记录集  
                                     
    while(rs.next())  
            {    
      for(int   i=1;i<=rsmd.getColumnCount();i++)  
              {  
  System.out.println(rs.getString(i));//我想用这一句输出  
                                                                                                                                          //数据进行验证,  
                                                                                                                                              可是提示我没有数据  
                                                                          data.addElement(rs.getObject(i));                                  
      }  
        }  
    }  
          catch(SQLException   ex)  
  {  
                                      System.err.println("SQLException:   "   +   ex.getMessage());  
                                      System.err.println("SQLState:   "   +   ex.getSQLState());  
                                      System.err.println("Message:   "   +   ex.getMessage());  
                                      System.err.println("Vendor:   "   +   ex.getErrorCode());  
  }  
  }  
   
   
                  public   int   getColumnCount()  
                  {  
   
                          return   columnNames.size();  
   
                  }  
                  public   int   getRowCount()  
                  {  
      System.out.println(data.size());  
                          return   data.size();  
                  }  
                  public   String   getColumnName(int   col)  
                  {  
      System.out.println((String)columnNames.elementAt(col));  
                          return   (String)columnNames.elementAt(col);  
                  }  
                  public   Object   getValueAt(int   row,   int   col)  
                  {  
  // System.out.println(row);  
  // System.out.println(col);  
                  //         System.out.println((String)data.elementAt(row*getColumnCount()+col));  
                          return   (String)data.elementAt(row*getColumnCount()+col);  
                  }  
                  public   boolean   isCellEditable(int   row,   int   col)  
                  {  
                          if   (col   ==   0)   {return   false;}  
                          else                   {return   true;   }  
                  }  
   
                  public   void   setValueAt(Object   aValue,   int   rowIndex,   int   columnIndex)  
          {  
                              return;  
  }  
  }  
   
   
  //生成Table的语句  
   
                          JTable   table   ;  
          JScrollPane   scrollPane   =   new   JScrollPane(table);  
                          SimpleTableModel   myModel   =   new   SimpleTableModel(rs);  
      table   =   new   JTable(myModel);  
   
   
  为什么不出现表格,是否要进行刷新?大家帮我找找错误呀 问题点数:10、回复次数:7Top

1 楼yanleon1228()回复于 2004-12-02 12:05:46 得分 0

大家帮我看看呀!而且我发现一个奇怪的问题  
  如果不加System.out.println(rs.getString(i));这句话,返回的行值就是对的,可是一有这句话,返回的行值就是0,这是为什么呀?  
   
  帮帮忙吧,被困了两天了Top

2 楼zhaohao19853(小人物)回复于 2004-12-02 12:16:50 得分 0

你干嘛要加这么一句话?  
  不加又不干扰程序本身的  
  也有可能是你位置放的不对Top

3 楼zhaohao19853(小人物)回复于 2004-12-02 12:20:00 得分 5

for循环好象有问题  
  你获取的字段不是放在一个数组里的嘛????Top

4 楼yanleon1228()回复于 2004-12-02 16:12:08 得分 0

那句话是调试用的,不要了。  
   
   
  可是现在表格不显示数据,为什么呀  
  class   SimpleTableModel   extends   AbstractTableModel  
          {  
  Vector   columnNames   =   new   Vector();    
  Vector   data   =   new   Vector();    
   
                  //获取字段的名称  
  public   SimpleTableModel(ResultSet   rs)  
  {  
  try  
  {  
          ResultSetMetaData   rsmd=rs.getMetaData();  
        for(int   i=1;i<=rsmd.getColumnCount();i++)  
        {  
            columnNames.addElement(rsmd.getColumnName(i));  
                          }  
   
  //获取记录集  
                                     
        while(rs.next())  
    {    
          for(int   i=1;i<=rsmd.getColumnCount();i++)  
                                {  
  data.addElement(rs.getObject(i));                                  
              }  
      }  
              }  
      catch(SQLException   ex)  
  {  
                                      System.err.println("SQLException:   "   +   ex.getMessage());  
                                      System.err.println("SQLState:   "   +   ex.getSQLState());  
                                      System.err.println("Message:   "   +   ex.getMessage());  
                                      System.err.println("Vendor:   "   +   ex.getErrorCode());  
  }  
        }  
   
   
                  public   int   getColumnCount()  
                  {  
   
                          return   columnNames.size();  
   
                  }  
                  public   int   getRowCount()  
                  {  
    //   System.out.println(data.size());  
                          return   data.size()/columnNames.size();  
                  }  
                  public   String   getColumnName(int   col)  
                  {  
      System.out.println((String)columnNames.elementAt(col));  
                          return   (String)columnNames.elementAt(col);  
                  }  
                  public   Object   getValueAt(int   row,   int   col)  
                  {  
   
                          return   (String)data.elementAt(row*getColumnCount()+col);  
                  }  
                  public   boolean   isCellEditable(int   row,   int   col)  
                  {  
                          if   (col   ==   0)   {return   false;}  
                          else                   {return   true;   }  
                  }  
   
                  public   void   setValueAt(Object   aValue,   int   rowIndex,   int   columnIndex)  
          {  
                              return;  
  }  
  }  
   
   
  //生成Table的语句  
   
                          JTable   table   ;  
          JScrollPane   scrollPane   =   new   JScrollPane(table);  
                          SimpleTableModel   myModel   =   new   SimpleTableModel(rs);  
      table   =   new   JTable(myModel);  
   
  我把程序稍微改了一下Top

5 楼yanleon1228()回复于 2004-12-02 18:04:53 得分 0

大家帮忙看看呀Top

6 楼xuan9932()回复于 2004-12-03 04:10:24 得分 5

 
  试试这样  
   
   
  Vector   columnNames   =   new   Vector();    
  Vector   data   =   new   Vector();    
  public   SimpleTableModel(ResultSet   rs)  
  {  
  try  
  {  
          ResultSetMetaData   rsmd=rs.getMetaData();  
        for(int   i=1;i<=rsmd.getColumnCount();i++)  
        {  
            columnNames.addElement(rsmd.getColumnName(i));  
                          }  
   
  //获取记录集  
                                     
        while(rs.next())  
    {    
          for(int   i=1;i<=rsmd.getColumnCount();i++)  
                                {  
  data.addElement(rs.getObject(i));                      
                                          (这里面应该是一个2维的表,你自己写了,再弄一个vector   存你数据库每一行,然后把这些vector   存到data   里去)              
              }  
      }  
              }  
   
   
   
   
   
   
   
   
  class   myModel   extends   DefaultTableModel  
  {  
      public   myModel(Vector   data,Vector   columnNames)  
      {  
          super(data,columnNames);  
      }  
      public   Class   getColumnClass(int   col)  
        {  
            Vector   v=(Vector)   dataVector.elementAt(0);  
            return   v.elementAt(col).getClass();  
        }  
        public   boolean   isCellEditable(int   row,int   col)  
        {  
            Class   columnClass=getColumnClass(col);  
            return   columnClass!=ImageIcon.class   &&columnClass!=String.class;  
        }  
  }  
   
  然后  
  myModel   mm=new   myModel(columnNames   ,data)  
  JTable   jt=new   JTable(mm);  
   
   
  Top

7 楼yanleon1228()回复于 2004-12-03 11:48:03 得分 0

谢谢各位,我找到答案了,是因为添加scrollpane,和table的顺序错误Top

相关问题

  • JTable?
  • JTABLE
  • jtable
  • java 基础:JTable
  • JTable的问题
  • JTable 问 题
  • 关于JTable,急!
  • about Date format in JTable
  • JTable的问题!
  • JTable的问题

关键词

  • vector
  • simpletablemodel
  • rs

得分解答快速导航

  • 帖主:yanleon1228
  • zhaohao19853
  • xuan9932

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo