HashMap 要素を持つベクトルがあります。私はそれをテーブルに入れたいのですが、すべての HashTable 値は HashTable キー column-title を持つ列にある必要があります。したがって、キー「key1」を持つ要素は、名前「key1」を持つテーブル列に表示される必要があります。
問題は、関数を使用してテーブルの列を追加/削除しようとしたときsetHash()
です。より多くの/より少ない要素で String[] を渡します。この関数を実行すると、fireTableStructureChanged()
Java が狂ったようにスローされます。
どこに問題があるのか わかりません。助けてください。
テーブル モデルの実装は次のとおりです。
public class ResizableTableModel extends AbstractTableModel {
protected DataSource src;
protected String[] hash;
//......................
public void setHash(String[] hash) {
this.hash = hash;
fireTableStructureChanged(); // THROWS!
}
public ArrayList getData() { return src.getData(); }
public int getColumnCount() { return hash.length; }
public int getRowCount() { return getData() == null ? 0 : getData().size(); }
public String getColumnName(int col) { return hash[col]; }
public boolean isCellEditable(int row, int col) { return true; }
public Object getValueAt(int row, int col) {
try {
return ((HashMap) getData().get(row)).get(hash[col]);
} catch (Exception e) {
return null;
}
}
public void setValueAt(Object obj, int row, int col) {
try {
//...................
} catch (Exception e) {}
fireTableDataChanged();
}
}