亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

行中的JTable重復值

行中的JTable重復值

慕桂英546537 2019-06-05 13:37:39
行中的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在迭代過程中發生變化。


查看完整回答
反對 回復 2019-06-05
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

1)你TableModel還沒有完成,我錯過了很多方法或所需的方法。JTable's生命周期TableHeader等。

2)由于有很多基于HashMap的AbstratTableModel,我建議直接返回在API中實現的數組類型

Vector<Vector<Object or String>> data; String[][] or Object[][]

而不是

ArrayList<ArrayList<String>> data;

簡單的解釋是XxxList Returs列和向量或字符串[]返回行

3)我建議用DefaultTableModel直接這樣,您就不需要解決重復或丟失的列/行


查看完整回答
反對 回復 2019-06-05
  • 3 回答
  • 0 關注
  • 758 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號