В чем разница между JTable.getModel().getColumnName() и JTable.getColumnModel().getColumn(index).getHeaderValue()? Кажется, что эти данные не разделяют никаких данных. Я предполагаю, что TableModel.getColumnName() указывает текстовое представление столбца, а TableColumn.getHeaderValue() и TableColumn.getHeaderRenderer() определяет, как выглядит столбец (он не должен быть простым текстом).
Что гарантирует синхронизацию этих двух? Что произойдет, если оба конфликта?