3

カスタムの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()をリッスンしているものはありませんか?

4

1 に答える 1