JTable具有不同的列长度

时间:2013-11-28 02:12:39

标签: java swing jtable

我正在尝试读取csv文件并将其设置为转换为另一种格式以节省一些工作时间,但是当一行的长度小于预期时,JTable我将其加载到抛出异常柱。如果行长度<1,是否存在创建空单元的方法?列长度​​?

这是表格型号:

   private class CSVTableModel extends AbstractTableModel{

   private ArrayList<String[]> list;
   private String[] columns;

   public CSVTableModel() {
       this.list = p.getData();
       this.columns = p.getHeaders();
   }

   @Override
   public String getColumnName(int col)   {
       return columns[col];
   }

   @Override
   public int getRowCount() {
       return list.size();
   }

   @Override
   public int getColumnCount() {
       return columns.length;
   }

   @Override
   public Object getValueAt(int row, int col) {
       return list.get(row)[col];
   }

   @Override
   public void setValueAt(Object value, int row, int col)  {
       list.get(row)[col] = (String) value;
       this.fireTableCellUpdated(row, col);
   }
   }

所以你可以看到getValueAt(int row,int col)方法,如果col超过String [] .length,它将导致错误。

1 个答案:

答案 0 :(得分:0)

我在帖子后解决了这个问题。橡皮鸭调试。

@Override
   public Object getValueAt(int row, int col) {
       if ( col < list.get(row).length )   {
            return list.get(row)[col];
       }    else    {
           return "";
       }
   }

添加条件并且现在正常工作。应该以前见过它。