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

добавлено условие и работает отлично сейчас. Должно было видеть это раньше.

Смежные вопросы