カスタムのAbstractTableModelを作成しました。コンストラクターは、ファイルからのデータを使用してモデルを初期化します。ただし、モデルに列を追加したいと思います(これは、列のSQL制限によるものです)。
初期化コードにaddColumn(String columnName、Vector columnData)メソッドの呼び出しを追加することで、これを実現しようとしています。
私のカスタムAbstractTableModelのこのaddColumnメソッドは、「fireTableStructureChanged()」を含むDefaultTableModelのaddColumnメソッドから直接派生しています。
しかし、このコードを実行すると、fireTableStructureChanged()は新しい列を追加しないように見え、JTableはファイルのデータのみを表示します。なぜこれなのか?
これが私が使用しているコードの短い表示です:
public class Dummy extends AbstractTableModel {
public Dummy() {
//load data from SQL file into ResultSets
//transfer ResultSet.metadata into columnHeaders Vector<String>
//transfer ResultSet.data into columnDatums Vector<String>
fireTableChanged(null);
addColumn("Added Heading", (Vector)null);
}
public addColumn(String columnHeader, Vector columnData) {
columnHeaders.add(columnHeader);
// transfer columnData into columnDatums
fireTableStructureChanged();
}
}
これはリスナーの問題ですか?現時点では、fireTableStructureChanged()をリッスンしているものはありませんか?