有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

具有可变列长的java JTable

我试图读取一个csv文件,并将其设置为转换为另一种格式,以节省工作时间,但当一行的长度小于预期的列时,我加载到的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 row,int col)方法,如果col超过字符串[],就会导致错误。长度


共 (1) 个答案

  1. # 1 楼答案

    我发帖后就解决了。橡皮鸭调试

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

    添加了一个条件,现在可以正常工作了。我以前应该看过的