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

如何在抽象表模型中表示复杂类?

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

    我有这门课:

    public abstract class Directory {
    
        protected int id;
        protected File path;
        protected LinkedList<Filter> filters;
        protected LinkedList<File> files;
        protected int wildcard;
        public static int numCols = 3;
    
        /* other things */
    }
    

    我写了这个表格模型:

    public class DirectoryListTableModel extends AbstractTableModel {
    
        private static final long serialVersionUID = 1L;
        private LinkedList<Directory> datalist;
        private String[] columnNames= {"ID", "Directory", "Wildcard", "Filters"};
    
    
        public DirectoryListTableModel(){
        }
    
        public void setDatalist(LinkedList<Directory> temp){
            this.datalist = temp;
        }
    
        public void showElement(){
            fireTableRowsInserted(this.datalist.size()-2,this.datalist.size()-2);
        }
    
        public LinkedList<Directory> getDatalist(){
            return (LinkedList<Directory>) this.datalist.clone();
        }
    
        @Override
        public String getColumnName(int column) {
            return this.columnNames[column];    
        }
    
        @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;        
            }
        }
    }
    

    如你所见,我有一个 LinkedList<Filter> 我也希望用一个简单的字符串来显示。我该怎么做?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Puce    14 年前

    例如。:

    case 3:
        return temp.getFilters().toString();
    

    注:

    • 在声明字段时(如果您没有很好的理由这样做的话),请使用接口(例如list)而不是实现(linkedlist)。
    • 在大多数情况下,ArrayList比LinkedList具有更好的性能(例如,按索引访问)
    • 还重写getColumnClass
    • 保持你的领域隐私
    • 设置数据列表:FireTableDataChanged