代码之家  ›  专栏  ›  技术社区  ›  dierre

从AbstractTableModel获取列名

  •  5
  • dierre  · 技术社区  · 14 年前

    我用构造器搞不懂 JTable(TableModel dm) .

    我正在使用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类 .

    4 回复  |  直到 12 年前
        1
  •  15
  •   Codemwnci    14 年前

    AbstractTableModel中没有名为getColumnNames的方法,因此我相信您的方法被忽略了。实际要重写的方法是getColumnName方法。

    尝试将此方法添加到VolumeListTableModel类中

    public String getColumnName(int column) {
        return columnNames[column];
    }
    
        2
  •  4
  •   Ben    12 年前

    你需要覆盖 getColumnName 方法,在您的情况下

    return columnNames[column];
    
        3
  •  3
  •   jruillier    14 年前

    必须重写此方法:

    public String getColumnName(int column)
    
        4
  •  0
  •   Luca Fagioli    11 年前

    抽象表模型 没有 获取列名称 方法,但很容易实现:

    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;
    
        }
    
        // [...]
    
    }