2013-11-28 97 views
0

我想读取一个CSV文件,并将其设置为转换为另一种格式以节省一些时间在工作,但JTable我加载它引发一个异常,当一行有一个长度小于预期的列。如果行长度为<列长度,是否有创建空单元格的方法?不同列长度的JTable

这里是表型号:

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行,诠释山口)方法,如果山坳超过的String []长度会导致错误。

+0

'“如果行长度<列的长度是否有创建空单元格的方法?” - 是的,你自己编码。如果发生这种情况,请添加空值。 –

回答

0

我在发帖后从字面上解决了这个问题。橡皮鸭调试。

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

增加了一个条件,现在工作正常。以前应该看过它。