我正在尝试读取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,它将导致错误。
答案 0 :(得分:0)
我在帖子后解决了这个问题。橡皮鸭调试。
@Override
public Object getValueAt(int row, int col) {
if ( col < list.get(row).length ) {
return list.get(row)[col];
} else {
return "";
}
}
添加条件并且现在正常工作。应该以前见过它。