Метод 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()?

0 ответов

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