0

そのテーブルの JTable と Model があります。

ここで、列の順序を変更し、いくつかの列を非表示または表示したいと考えています (たとえば、右クリックのメニューを介して「詳細ビュー」の Windows エクスプローラーなど)。

ここでの最初の問題は、getColumnName 関数です。どの列がどの場所にあるかを追跡し、正しい columnName を返す必要がありますか、それとも既にモデルの一部ですか? getValueAt 関数も同様です。ユーザーがこの列をテーブルの最後にドラッグした場合でも、columnIndex = 0 を取得した場合、常に最初の列の値を返すことはできますか?

列の追加/削除についてもほぼ同じ問題があります。もちろん、それを行う場合は、fireTableStructureChanged を実行する必要がありますが、getColumnName 関数なども適応させる必要がありますか?

そのためのチュートリアルは見つかりませんでした。すべてのチュートリアルは「モデルを使用できます」で終わります。このような動的モデルの例を見てみたいと思います。

どうもありがとう。

4

2 に答える 2

2

モデルの getColumn(int) メソッドを使用する必要があります。モデルにアクセスするには、JTableconvertRowIndexToModel(int)convertColumnIndexToModel(int)、および同等の変換を使用して、行と列のビュー インデックスを変換する必要があります。インデックスを表示するためのモデル インデックス。

于 2013-03-06T19:34:16.457 に答える
0

「ビュー」と「モデル」の違いを理解する必要があります。JTable (ビュー) 内の列を並べ替えても、モデル内のデータの順序は変更されません。

使用するテーブルに表示される最初の列にアクセスする場合:

table.getValueAt(row, 0);

モデルの最初の列にアクセスする場合は、次を使用します。

table.getModel().getValueAt(row, 0);

一部の列を非表示または表示したい

テーブル カラム マネージャを参照してください。

于 2013-03-07T04:55:14.633 に答える