Передайте LinkedList из другого класса для JTable. Автоматически обновлять таблицу
Итак, я сейчас создаю графический интерфейс для моей программы. Я использую JTables с пользовательским AbstractTableModel, чтобы заполнить их содержимым моих разных LinkedLists. Однако, если я добавлю JTable в свой класс GUI и инициализирую там класс LinkedList, то это не тот LinkedList, который мне нужен. Мне нужен список студентов LinkedList, который я сохранил в своем классе базы данных. Как мне сказать таблице это? Я не могу показать какой-либо GUI-код, потому что он все еще находится в стадии разработки, и сейчас я просто тестирую его.
Мой другой вопрос, это мой AbstractTableModel:
public class StudentTableModel extends AbstractTableModel {
public static final String[] columnNames = { "ID", "First Name",
"Last Name" };
private LinkedList<Student> data;
public StudentTableModel(LinkedList<Student> data) {
this.data = data;
}
@Override
public int getColumnCount() {
return columnNames.length;
}
@Override
public String getColumnName(int column) {
return columnNames[column];
}
@Override
public int getRowCount() {
return data.size();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Student student = data.get(rowIndex);
if (student == null) {
return null;
}
switch (columnIndex) {
case 0:
return student.getID();
case 1:
return student.getFirstname();
case 2:
return student.getLastname();
default:
return null;
}
}
}
Нужно ли что-нибудь добавлять в код, чтобы таблица автоматически обновлялась при добавлении учащегося в список?
Заранее спасибо.
2 ответа
Минимум,
Как показано здесь, вы реализации
setValueAt()
должен запустить событие, соответствующее вашему обновлению.Если вы выставите публичный метод для изменения
data
, он тоже должен запустить соответствующее событие.
В этом контексте соответствующий означает один из fireXxx()
методы, унаследованные от AbstractTableModel
,
Нужно ли что-нибудь добавлять в код, чтобы таблица автоматически обновлялась при добавлении учащегося в список?
Создать метод в TableModel
так что при добавлении объекта Student передайте объект Student в список и добавьте его в список. Так как вы используете AbstractTableModel
вам нужно запустить соответствующие события после изменения данных.
private void addStudent(Student student) {
data.add(student);
fireTableDataChanged();
}
если я добавлю JTable в свой класс GUI и инициализирую там класс LinkedList, то это не тот LinkedList, который мне нужен. Мне нужен список студентов LinkedList, который я сохранил в своем классе базы данных.
Когда вы создаете модель таблицы, запросите StudentList и отправьте этот список конструктору модели таблицы.