Question

Hi I have an arraylist of a class I created called Pets which has the variables below

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

I wanted to display this arraylist into a jTable and I did that succesfully by using defaultTableModel and calling setModel().

However I needed to add a sorting and filtering function for the Jtable. I took a look at the java tutorials were they were creating a subclass of AbstractTableModel in order to sort and filter. However they were using arrays to store the data. So I tried modifying the code to use an arraylist isntead but Im stuck with this method

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

How do I get all the values from one object from th arraylist?

Any help will be greatly appreciated. Thanks in advance.

Was it helpful?

Solution

Does your ArrayList hold a row that is it's own type of object? If so, and if your ArrayList is a generic ArrayList<RowItem> then you could do something like:

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

OTHER TIPS

You can try this:

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;
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top