JTable дублирование значений в строке

У меня есть JTable, заполненная пользовательской DataModel (вставлено ниже), и когда я вызываю метод populate(), кажется, что таблица заполняется дублирующими данными - каждая строка заполняется одним и тем же значением снова и снова. Однако при ближайшем рассмотрении (просто распечатав()поле 'data') оказывается, что модель данных не виновата - она содержит корректные данные в том формате, который я ожидаю. What gives?

import java.util.ArrayList;    
import javax.swing.table.AbstractTableModel;

@SuppressWarnings("serial") // we don't expect this app to ever use serialized classes.  EVER.
public class CollectionDataModel extends AbstractTableModel {
    private ArrayList<ArrayList<String>> data;

    public CollectionDataModel() {
        data = new ArrayList<ArrayList<String>>();
    }

    @Override
    public int getColumnCount() {
        if(data.isEmpty()) return 0;
        return data.get(0).size();
    }

    @Override
    public int getRowCount() {
        return data.size();
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        if(rowIndex > getRowCount()) return null;
        if(columnIndex > getColumnCount()) return null;
        return data.get(rowIndex).get(columnIndex);
    }

    public void populate(Collection c) {
        data.clear();
        for(Item i : c.getItems()) {
            ArrayList<String> row = new ArrayList<String>();
            for(Property p : i.getProperties().values()) {
                row.add(p.toString());
            }
            data.add(row);
        }
        fireTableDataChanged();
    }

}
12
задан Adrian 3 February 2012 в 18:09
поделиться