将 ArrayLists 实现到表模型
Posted
技术标签:
【中文标题】将 ArrayLists 实现到表模型【英文标题】:Implementing ArrayLists to Table models 【发布时间】: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 支持开箱即用的排序和过滤,无需编写数据模型,只需启用一些属性。 【参考方案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;
【讨论】:
以上是关于将 ArrayLists 实现到表模型的主要内容,如果未能解决你的问题,请参考以下文章
将arraylists1和arraylist2之间相等的自定义对象移除到arraylist1中