从AbstractTableModel获取列名称
问题描述:
我找不出使用构造函数JTable(TableModel dm)
的东西。从AbstractTableModel获取列名称
我使用一个LinkedList来管理我的数据,因此,以显示它,我延长AbstractTableModel
:
public class VolumeListTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private LinkedList<Directory> datalist;
private Object[] columnNames= {"ID", "Directory", "Wildcard"};
public VolumeListTableModel(){
}
public void setDatalist(LinkedList<Directory> temp){
this.datalist = temp;
}
public LinkedList<Directory> getDatalist(){
return (LinkedList<Directory>) this.datalist.clone();
}
public Object[] getColumnNames() {
return this.columnNames;
}
@Override
public int getColumnCount() {
return Directory.numCols;
}
@Override
public int getRowCount() {
return this.datalist.size();
}
@Override
public Object getValueAt(int row, int col) {
Directory temp = this.datalist.get(row);
switch(col){
case 0:
return temp.getId();
case 1:
return temp.getPath();
case 2:
return temp.getWildcard();
default:
return null;
}
}
我做错了什么,因为当我跑我的GUI我得到的列名标记一,* B *,C。
答
AbstractTableModel中没有名为getColumnNames的方法,所以我相信您的方法被忽略。您想要覆盖的实际方法是getColumnName方法。
尝试增加这个方法将你VolumeListTableModel类
public String getColumnName(int column) {
return columnNames[column];
}
答
你需要重写getColumnName
方法,你的情况会简单
return columnNames[column];
+0
Ach太慢了。 Codemwnci有一个更快和更清晰的答案。 – Jim 2010-11-16 10:13:33
答
你必须重写此方法:
public String getColumnName(int column)
答
AbstractTable型号没有一个getColumnNames方法,但它很容易实现:
public class VolumeListTableModel extends AbstractTableModel {
// [...]
public String[] getColumnNames() {
String[] columnNames = new String[this.getColumnCount()];
for (int i = 0, columnCount = this.getColumnCount(); i < columnCount; i++) {
columnNames[i] = this.getColumnName(i);
}
return columnNames;
}
// [...]
}
谢谢大家。由于响应时间,我给出了Codemwnci的答案。 – dierre 2010-11-16 10:23:05