title: JTable not returning selected row correctly
body: <p>I am working with an extension of the DefaultTableModel as follows: </p>
  
  <p>This is the NEW AchievementTableModel after updating it to reflect input from some answers.</p>
  
  <pre><code>public AchievementTableModel(Object[][] c, Object[] co) {
      super(c,co);
  }
  public boolean isCellEditable(int r, int c) {return false;}
  public void replace(Object[][] c, Object[] co) {
      setDataVector(convertToVector(c), convertToVector(co));
      fireTableDataChanged();
  }
  </code></pre>
  
  <p>My GUI is a JTable that has the following properties:</p>
  
  <pre><code>if(table==null)
      table = new JTable(model);
  else
      table.setModel(model);
  table.setFillsViewportHeight(true);
  table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
  table.getTableHeader().setReorderingAllowed(false);
  table.getTableHeader().setResizingAllowed(false);
  table.setSelectionMode(DefaultListSelectionModel.SINGLE_SELECTION);
  table.getColumnModel().setColumnSelectionAllowed(false);
  </code></pre>
  
  <p>I have a JComboBox that selects which data to display. The TableModel is updated with a call to model.replace(cells) and then runs through the above table creation code again.</p>
  
  <p>When selecting a row in the GUI JTable, and printing the table.getSelectedRow() value, I ALWAYS get -1 after changing the table data with a model.replace(cells) call from the first selection, even if I reselect the first JComboBox option. Is there a reason for this that I'm missing? Should I change some code?</p>
  
  <p>EDIT: The code has changed a lot over trying to answer this question so here is the updated code. The new AchievementTableModel is above.</p>
  
  <p>This sets up the model and table to be viewed correctly and displayed in a ScrollPane</p>
  
  <pre><code>if(model==null)
      model = new AchievementTableModel(cells, columns);
  else
      model.replace(cells, columns);
  if(table==null) {
      table = new JTable(model);
      table.setFillsViewportHeight(true);
      table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
      table.getTableHeader().setReorderingAllowed(false);
      table.setSelectionMode(DefaultListSelectionModel.SINGLE_SELECTION);
      table.getColumnModel().setColumnSelectionAllowed(false);
      table.getTableHeader().setResizingAllowed(false);
  } else
      table.setModel(model);
  
  column = table.getColumn(columns[0]);
  column.setPreferredWidth(25);
  column = table.getColumn(columns[1]);
  column.setPreferredWidth(225);
  column = table.getColumn(columns[2]);
  column.setPreferredWidth(40);
  table.doLayout();
  
  add(new JScrollPane(table), BorderLayout.CENTER);
  </code></pre>