title: TableModel vs ColumnModel: who owns the column value?
body: <p>What's the difference between <code>JTable.getModel().getColumnName()</code> and <code>JTable.getColumnModel().getColumn(index).getHeaderValue()</code>? The two don't seem to share any data. My guess is that <code>TableModel.getColumnName()</code> indicates the textual representation of a column while <code>TableColumn.getHeaderValue()</code> and <code>TableColumn.getHeaderRenderer()</code> determine what the column looks like (it doesn't need to be plain text).</p>
  
  <p>What guarantees that the two are kept in sync? What happens if the two conflict?</p>