1

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();
  }
}
4

1 に答える 1

3
于 2013-04-10T08:08:16.417 に答える