我几乎已经使用使用JTable的Eclipse在Java中创建了一个程序。我所做的是创建JTable,将其与扩展AbstractTableModel的类(我称为ResultsTableModel)相关联,并创建一个名为refresh的方法,该方法使用fireTableDataChanged()方法。该课程如下:
public class ResultPanel extends JPanel {
ResultsTableModel rm;
JTable table;
public ResultPanel() {
rm = new ResultsTableModel();
table = new JTable();
setLayout(new BorderLayout());
add(new JScrollPane(table), BorderLayout.CENTER);
}
public void setData(List<Entry> entries) {
rm.setData(entries);
}
public void refresh() {
rm.fireTableDataChanged();
}
}
问题在于,当我运行程序时,在某个时刻调用了refresh()方法,表数据不会刷新,事实上,表甚至都没有显示。这是我构建表模型的类:
public class ResultsTableModel extends AbstractTableModel {
private List<Entry> entries = new ArrayList<Entry>();
private String[] colNames = {"STATUS", "ROOT", "DEFINITION"};
public void setData(List<Entry> list) {
this.entries = list;
}
@Override
public String getColumnName(int column) {
return colNames[column];
}
@Override
public int getColumnCount() {
return 3;
}
@Override
public int getRowCount() {
return entries.size();
}
@Override
public Object getValueAt(int arg0, int arg1) {
Entry entry = entries.get(arg0);
switch(arg1) {
case 0:
return entry.getStatus();
case 1:
return entry.getRoot();
case 2:
return entry.getDef();
default:
return "Invalid index";
}
}
}
这是我能解决的问题的最佳描述。程序没有抛出任何异常,它只是没有显示表事件,虽然我调用了setVisible(true);方法就可以了。非常感谢任何帮助,谢谢。