数据的列数不一致:
可能recordField的列数比headerField少。确认你的数据是否正确

解决方案 »

  1.   

    好的,我全贴出来,老大们可要耐心呀,我愁死了  public void run(){
        analizeText();
      }  synchronized private void analizeText(){
        file=new File(fileName);
        try{
         fileIn=new FileInputStream(file);
         bufferIn=new BufferedReader(new InputStreamReader(fileIn));
         readLine=bufferIn.readLine();//--读取文件中的每一行
         StringTokenizer st=new StringTokenizer(readLine,",",false);根据逗号进行拆分
         headerField=new Vector();
         while(st.hasMoreElements()){
           headerField.addElement(st.nextElement());放到vector中,因为文件中第一行是表头
         }
         recordField=new Vector();
         while((readLine=bufferIn.readLine())!=null){
           st=new StringTokenizer(readLine,",",false);读出每个记录
           tempVector=new Vector();
           while(st.hasMoreTokens()){
             tempVector.addElement(st.nextToken());,将每个记录放到一个vector中
           }
           System.out.println("temp:"+tempVector.size());每次大小都是一样的
           recordField.addElement(tempVector);
         }
         bufferIn.close();
         fileIn.close();
         System.out.println("record:"+recordField.size());//--用于校验出错时是否下标发生变化,结果发现,没有变化
         System.out.println("header:"+headerField.size());
         mainGUI.setTable(recordField,headerField);--调用setTable方法
        }
        catch(IOException e){e.printStackTrace();
        }
      }以上代码是分析文件然后放到两个vector中,下面是mainGUI类的setTable方法:class MainGUI extends JFrame{
      public void setTable(Vector recordField,Vector headerField){
    DefaultTableModel defaultTableModel=new DefaultTableModel(recordField,headerField);
      jTable.setModel(defaultTableModel);//---就是这行出错
    }
      

  2.   

    我尝试过了,每次保证传过来的recordField和headerField都是对应的,长度都是一致的,真奇怪了,是不是java的bug呀
      

  3.   

    问题1. 是否文本文件中的 "," 数量都是和 第一行一样多?
    问题2. 仔细看看你的文本文件的最后一行,是否是一个空行,即除了回车换行外,没有其他的字符,此时 当读到最后一行时,readLine() 读到的是 "" 而不是 null
      

  4.   

    hesi726老大,让你多费心了,我觉得不是这个问题,文件内容如下:
    日期,产品名称,规格/用途,地 区,价格类型,最高价,最低价,比上周
    6月27日,PVC ,悬浮 ,东南亚 ,到岸价 ,610?,590?,17.5?
    6月27日,PVC ,悬浮 ,远东 ,到岸价 ,600?,590?,2.5?
    6月27日,PVC ,悬浮 ,美国海湾 ,离岸价 ,530?,520?,5?
    6月27日,PVC ,悬浮 ,西北欧 ,FD ,686?,639?,-10?
    6月27日,PVC ,悬浮 ,西北欧 ,离岸价 ,550?,530?,10?补充,setTable方法修改如下:  public void setTable(Vector recordField,Vector headerField){   DefaultTableModel tableModel=(DefaultTableModel)jTable.getModel();
       tableModel.setColumnCount(0);
       tableModel.setRowCount(0);
       Iterator iterator=headerField.iterator();
       while(iterator.hasNext()){
         tableModel.addColumn("amjn");//--即使每次加这个常量,每个循环8次,他有时候也报错
         iterator.next();
       }
    这里没有增加内容,只是增加列了
    第一次点击肯定是不会错的,关键就是下面的几次点击
    }