我是java swing的新手,请帮助我。我有一个简单的应用程序,它接收来自(姓名和职业)的数据,并在按下按钮后将2 JTextfileds
它们引入。JTable
数据存储在List<Person>
where 中Person(String name, String occupation)
。该应用程序运行良好,直到我尝试使用TableRowSorter
. 我只会给你TablePanel
和PersonTableModel
代码。
表面板类
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
in方法?getRowCount()
PersonTableModel
addSorter()