行中的JTable重復值我有一個JTable用自定義填充DataModel(粘貼在下面)當我調用populate()方法,it出現使用重復數據填充表-每行都一次又一次地填充相同的值。然而,在更仔細的檢查(通過簡單的println()對‘data’字段),數據模型沒有錯誤-它持有正確的數據,以我預期的格式。什么給予?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();
}}
3 回答

四季花海
TA貢獻1811條經驗 獲得超5個贊
public void populate(Collection c) { ArrayList<ArrayList<String>> data2 = new ArrayList<ArrayList<String>>(); for(Item i : c.getItems()) { ArrayList<String> row = new ArrayList<String>(); for(Property p : i.getProperties().values()) { row.add(p.toString()); } data2.add(row); } data = data2; fireTableDataChanged();}
populate
populate
c

慕雪6442864
TA貢獻1812條經驗 獲得超5個贊
TableModel
JTable's
TableHeader
Vector<Vector<Object or String>> data; String[][] or Object[][]
ArrayList<ArrayList<String>> data;
DefaultTableModel
添加回答
舉報
0/150
提交
取消