Передайте 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 и отправьте этот список конструктору модели таблицы.

Другие вопросы по тегам