【问题标题】:Implementing ArrayLists to Table models将 ArrayLists 实现到表模型
【发布时间】:2012-05-03 02:21:10
【问题描述】:

您好,我创建了一个名为 Pets 的类的数组列表,其中包含以下变量

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

我想将此数组列表显示到 jTable 中,我通过使用 defaultTableModel 并调用 setModel() 成功地做到了。

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

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

如何从数组列表中获取一个对象的所有值?

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

【问题讨论】:

  • 我认为 JTable 支持开箱即用的排序和过滤,无需编写数据模型,只需启用一些属性。

标签: java swing arraylist jtable abstracttablemodel


【解决方案1】:

您的 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
}

【讨论】:

    【解决方案2】:

    你可以试试这个:

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      • 2018-10-11
      • 2015-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多