2013-04-10 1 views
0

Итак, в настоящее время я создаю GUI для своей программы. Я использую JTables с пользовательским AbstractTableModel, чтобы заполнить их содержимым моих разных LinkedLists. Однако, если я добавлю JTable в свой GUI-класс и инициализирую класс LinkedList, то это не LinkedList, который мне нужен. Мне нужен LinkedList Studentlist, который я сохранил в своем классе Database. Как мне сказать таблицу? Я не могу показать какой-либо GUI-код, потому что он все еще находится в процессе разработки, и сейчас я просто тестирую вещи.Pass LinkedList из другого класса для JTable. Автоматически обновлять таблицу

Мой другой вопрос, это мой 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; 
    } 
} 

}

мне нужно добавить что-либо к коду, чтобы сделать таблицу автоматически обновлять, когда студент будет добавлен в список ли?

Заранее благодарен.

ответ

1

как минимум,

  • Как показано here, вы реализация setValueAt() должны стрелять событие соответствующее для обновления вашего.

  • Если вы публикуете публичный метод для мутации data, он также должен выполнить соответствующее событие.

В этом контексте уместно означает, что один из fireXxx() методов, унаследованных от AbstractTableModel.

1

Нужно ли что-либо добавить в код, чтобы автоматически сделать таблицу , когда ученик добавлен в список?

Создайте метод в TableModel, чтобы при добавлении ученика передать объект Student в список и добавить его в список. Поскольку вы используете AbstractTableModel, вам необходимо выполнить соответствующие события после изменения данных.

private void addStudent(Student student) { 
    data.add(student); 
    fireTableDataChanged(); 
} 

если добавить JTable в мой класс GUI, и инициализировать класс LinkedList есть, то, что не LinkedList, что мне нужно. Мне нужен LinkedList Studentlist, который я сохранил в своем классе Database.

Пока вы создаете модель таблицы, запрашиваете для StudentList и отправляете этот список в конструктор модели таблицы.