Обычно вы просто определяете TableModel (путем подкласса AbstractTableModel
) и создаете экземпляр JTable с этой табличной моделью в качестве аргумента.
Если вы правильно внедрили getColumnClass()
в вашу табличную модель, JTable
автоматически выберет подходящий рендерер для каждого столбца.Если некоторые ячейки доступны для редактирования (вы указываете переопределение isCellEditable()
в табличной модели), соответствующий редактор ячеек также будет связан со столбцом.Вам нужно будет инициировать события (используя один из методов fireXxx в AbstractTableModel) при изменении модели.
Конечно, если у вас есть специальные объекты в ваших ячейках (то есть что-то отличное от String, Boolean, Integer,и т. д.), вам придется связать визуализатор со столбцом (и редактором, если ячейки в этих ячейках доступны для редактирования).Это делается путем установки рендерера / редактора в столбце модели столбца.Однако модель столбца автоматически создается JTable из модели таблицы.Обычно вам не нужно создавать его самостоятельно.
Итак, чтобы ответить на ваши конкретные вопросы:
- TableModel используется для хранения данных, отображаемых в JTable.Вы должны реализовать это самостоятельно.TableColumnModel автоматически создается JTable и обычно используется для привязки рендерера и редактора к определенным столбцам.
- Если вам нужен определенный рендерер для n-го столбца, вы получите n-й столбец из модели столбца JTableи вы устанавливаете рендер в этом столбце.
- Обычно достаточно подкласса AbstractTableModel.