2012-04-22 2 views
2

Привет У меня есть ArrayList класса я создал под названием Домашние животные, который имеет переменные нижеРеализация ArrayLists для моделей Таблица

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

Я хотел показать этот ArrayList в JTable, и я сделал, что успешно с помощью DefaultTableModel и вызов setModel().

Однако мне нужно было добавить функцию сортировки и фильтрации для Jtable. Я взглянул на java-учебники, если бы они создавали подкласс AbstractTableModel для сортировки и фильтрации. Однако они использовали массивы для хранения данных. Так что я попытался изменить код, чтобы использовать ArrayList isntead но Im застрял с этим методом

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

Как получить все значения из одного объекта из ArrayList-го?

Любая помощь будет принята с благодарностью. Заранее спасибо.

+1

Я думаю, что JTable поддерживает сортировку и фильтрацию из коробки без написания модели данных только некоторые благоприятные свойства. –

ответ

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 
} 
+0

Спасибо, мне удалось заставить его работать :) – skon

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; 
} 
Смежные вопросы