将ArrayLists实现为Table模型

时间:2012-04-22 00:15:43

标签: java swing arraylist jtable abstracttablemodel

嗨我有一个名为Pets的类的arraylist,其中包含以下变量

private String name;
private String species;
private int age;

我想将这个arraylist显示到jTable中,我通过使用defaultTableModel并调用setModel()成功地完成了这个。

但是我需要为Jtable添加排序和过滤功能。我看了一下java教程,他们正在创建AbstractTableModel的子类,以便进行排序和过滤。然而,他们使用数组来存储数据。所以我尝试修改代码以使用arraylist isntead但我坚持使用这种方法

public Object getValueAt(int row, int col) {
    return data[row][col];
}

如何从arraylist中获取一个对象的所有值?

任何帮助将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:3)

你可以试试这个:

public Object getValueAt(int row, int col) {
    switch(col) {
        case 0:
           return ((Pets)data.get(row)).getName();
        case 1:
           return ((Pets)data.get(row)).getSpecies();
        case 2:
           return ((Pets)data.get(row)).getAge();          
    }
    return null;
}

答案 1 :(得分:3)

您的ArrayList是否包含一个属于它自己的对象类型的行?如果是这样,并且如果您的ArrayList是通用ArrayList<RowItem>,那么您可以执行以下操作:

@Override
public Object getValueAt(int row, int col) {
  if (row > getRowCount()) {
     // throw an exception
  }
  RowItem rowItem = rowItemList.get(row);
  switch (col) {
  case 0:
     return rowItem.getName();
  case 1:
     return rowItem.getLastSpecies();
  case 2:
     return rowItem.getAge();
  }
  return null; // or throw an exception
}