code: public static TableModel createTableModel(final CSTable src) {
          final List<String[]> rows = new ArrayList<String[]>();
          for (String[] row : src.rows()) {
              rows.add(row);
          }
  
          return new TableModel() {
  
              @Override
              public int getColumnCount() {
                  return src.getColumnCount();
              }
  
              @Override
              public String getColumnName(int column) {
                  return src.getColumnName(column);
              }
  
              @Override
              public int getRowCount() {
                  return rows.size();
              }
  
              @Override
              public Class<?> getColumnClass(int columnIndex) {
                  return String.class;
              }
  
              @Override
              public boolean isCellEditable(int rowIndex, int columnIndex) {
                  return false;
              }
  
              @Override
              public Object getValueAt(int rowIndex, int columnIndex) {
                  return rows.get(rowIndex)[columnIndex];
              }
  
              @Override
              public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
  //        rows.get(rowIndex)[columnIndex] = (String) aValue;
              }
  
              @Override
              public void addTableModelListener(TableModelListener l) {
              }
  
              @Override
              public void removeTableModelListener(TableModelListener l) {
              }
          };
      }
docs: Create a r/o data tablemodel
  
  @param src
  @return a table model to the CSTable