Метод getRowCount() возвращает ошибку при сортировке Jtable
Я новичок в java swing и, пожалуйста, помогите мне с этим. У меня есть простое приложение, которое получает данные от 2 JTextfileds
(имя и род занятий) и представить их в JTable
после нажатия кнопки. Данные хранятся в List<Person>
где Person(String name, String occupation)
, Приложение работает нормально, пока я не попробую отсортировать таблицу, используя TableRowSorter
, Я дам тебе только TablePanel
а также PersonTableModel
код
Класс TablePanel
import model.Person;
public class TablePanel extends JPanel {
private JTable table;
private PersonTableModel tablemodel;
private TableListener tableListener;
private RowSorter<PersonTableModel> sorter;
public TablePanel(){
tablemodel = new PersonTableModel();
table = new JTable(tablemodel);
//addSorter(); --- > comment this for you to see the problem
setLayout(new BorderLayout());
add(new JScrollPane(table),BorderLayout.CENTER);
}
private void addSorter() {
if (tablemodel.getRowCount() != 0){
sorter = new TableRowSorter<PersonTableModel>(tablemodel);
table.setRowSorter(sorter);
refresh();
}
}
public void setData(List<Person> db){
tablemodel.setData(db);
}
public void refresh(){
tablemodel.fireTableDataChanged();
}
public void addTableListener(TableListener tableListener) {
this.tableListener = tableListener;
}
}
Класс PersonTableModel
public class PersonTableModel extends AbstractTableModel {
private List<Person> db = null;
private String[] colNames = { "Id", "Name", "Occupation" };
public void setData(List<Person> db) {
this.db = db;
}
public String getColumnName(int column) {
return colNames[column];
}
public int getRowCount() {
return db.size();
}
@Override
public int getColumnCount() {
return 3;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Person person = db.get(rowIndex);
switch (columnIndex) {
case 0:
return person.getId();
case 1:
return person.getName();
case 2:
return person.getOccupation();
}
return null;
}
}
Почему я получаю NullPointerException
в методе getRowCount()
в PersonTableModel
если я активирую метод addSorter()
?