Я пытаюсь создать свой собственный настраиваемый TableModel для моего JTable (потому что я хотел бы включить строку JCheckBox в мою таблицу.) У меня есть JTable в JScrollPane также. Прежде чем я попытался включить JCheckBox и пользовательский AbstractTableModel, JTable будет отображаться отлично, если я использовал конструктор по умолчанию (Object [] [], Object []). Я прочитал в JTable учебнике по Sun, что эти конструкторы используют по умолчанию обработку всех данных в виде строк.Получение JTable с пользовательской моделью таблицы для отображения в JScrollPane
Затем я создал свой обычай AbstractTableModel и пошел от этого:
JTable table = new JTable(dataArray, col);
к этому:
JTable table = new JTable();
Я предполагаю, что это будет назвать попытку создать JTable с заказным классом который расширяет AbstractTableModel, но теперь ничего не появляется в JScrollPane.
Я использую это неправильно? Я практически скопировал код из учебника Sun и только изменил имена связанных файлов. Я также поместил этот метод в один класс. Есть ли другой способ убедиться, что ваша таблица создана с помощью вашей пользовательской модели таблиц? Любое понимание было бы оценено.
Я думаю, что это то, что я смущен. JTable Информация о Sun веба-странице состоянии: Есть два JTable конструкторов, которые непосредственно принимают данные (SimpleTableDemo использует первое): JTable (Object [] [] ROWDATA, Object [] columnNames) JTable (Vector ROWDATA, Vector columnNames) В нем затем указывается: Преимущество этих конструкторов в том, что они просты в использовании. Однако эти конструкторы также имеют недостатки: Они обрабатывают все типы данных одинаково (как строки). – MarcZero
Итак, читаю, у меня создается впечатление, что мне нужно создать собственный класс, который расширяет AbstractTableModel, и как-то создающая таблица будет использовать это вместо стандартного конструктора. Если я использую конструктор JTable (Object [] [], Object []), он обрабатывает каждую ячейку как строки, поэтому я «предполагаю», что вызов метода без конструктора: JTable() будет использовать пользовательский, который я создал, но мой экран теперь пуст. Я могу вернуться к конструктору по умолчанию, и он выглядит просто отлично, но я не могу заставить его использовать мою пользовательскую таблицу. – MarcZero
@MarcZero: См. Изменения в моем ответе. (Если это не имеет смысла, возможно, разместите еще какой-нибудь код. У меня такое чувство, что я могу что-то упустить в том, что вы пытаетесь сделать ...) – Ash