2013-11-28 95 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 ""; 
     } 
    } 

增加了一個條件,現在工作正常。以前應該看過它。