0

最初に、1 つの列と 6 つの行 (空の列) を持つ Jtable (netbeans GUI を介して) を作成しました。次に、次のコマンドを使用して列を動的に追加しました

summaryTableForVAriousSm.getColumnModel().addColumn(new TableColumn());

アプリケーションの実行中に、列が動的に作成されていることがわかります。それで、コマンドを使用して新しく作成された列にデータを追加したい気がしました

summaryTableForVAriousSm.setValueAt("1000", 1, 1);

(同様に、他のすべての 6 行が列ごとに埋められます) この変更はアプリケーションの実行にも反映されますが、ここでの問題は、新しく作成された列に挿入されたデータが列 0 でも上書きされることです (データが存在する場合)。 . ある列の変更が他の列に反映されている理由。また、ある列の変更が他の列のデータに影響を与えないように、それらを別々に保つ方法もあります。

4

1 に答える 1

3

データが最初の列に設定される理由は、両方の列が基になるモデルの同じ列にマップされるためです。TableColumn()のAPIドキュメントを参照してください。

デフォルトのモデルインデックス0、デフォルトの幅75、ヌルレンダラーおよびヌルエディターを使用

(私が太字で)

これで、テーブルのsetValueAtがビュー座標になり、内部でモデル座標に変換されます。基本的にそのmodelIndexをクエリすることによる列の場合:

// in JTable.setValueAt
int modelColumnIndex = getColumnModel().getColumn(viewColumn).getModelIndex()

基礎となるモデルがDefaultTableModelであると仮定します

((DefaultTableModel) table.getModel()).addColumn(somename);
于 2012-10-10T09:33:41.007 に答える