从AbstractTableModel获取列名称

从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]; 
} 
+0

谢谢大家。由于响应时间,我给出了Codemwnci的答案。 – dierre 2010-11-16 10:23:05

你需要重写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; 

    } 

    // [...] 

}