2010-11-30 13 views
2

DefaultTableModelを拡張し、そのdataVectorを変更したいと思います。 私はのdataVectorの列にDataHolderの特定のフィールドのみを表示するようにしたい:DefaultTableModelをサブクラス化してdataVectorを変更するには

public class MyTableModel extends DefaultTableModel { 

    /** 
    * The data vector 
    */ 
    private Vector<DataHolder> dataVector_; 

    //overridden method to add row in the table model 
    public void addRow(DataHolder rowData) { 
     insertRow(getRowCount(), rowData); 
    } 

    public void insertRow(int row, DataHolder rowData) { 
      dataVector_.insertElementAt(rowData, row); 
      fireTableRowsInserted(row, row); 
     } 

    ...} //end of MyTableModel 



    class DataHolder{ 
    private int age; 
    private int year; 
    private int month; 
    private int day; 
    } 

がどのように私は私のJTableの中の特定DataHolderフィールドを表示することができますか?私のテーブルには、月、日、年の3つの列があります。

答えて

1

あなたはgetValueAt(...)メソッドオーバーライドすることがあります。提案のための

@Override 
public Object getValueAt(int row, int column) { 
    DataHolder data = dataVector_.get(row); 
    switch(column) { 
     case 0: return data.month; 
     case 1: return data.day; 
     case 2: return data.year; 
     default: return null; 
    } 
+0

ありがとうございます。このメソッドは、テーブルデータの更新時に、特にfireTableRowsInsertedが呼び出されたときにテーブルレンダラーによって呼び出されますか? – doku

+0

このメソッドは、テーブルがfireTable ...()を変更したときと、テーブルが再描画されたときに常に呼び出されます。 – multiholle

0

テーブルモデルまたはテーブルビューでこれを変更しますか?ビューにJTableを使用している場合はJTableからアクセス可能なTableColumnModelで作業することをお勧めします。

+0

おかげで、私はテーブルモデルでそれを変更したいです。私が知りたいのは、DataHolderから何を表示するかをモデルに指定する方法です。 – doku

+0

変更する必要があるメソッドは複数あります。そのため、完全に新しいTableModelを記述する必要があります。投稿したコードは何も意味しておらず、完全に間違っています。データベクトルを変更してヘッダーベクトルを忘れることはできません。モデル内のすべてのメソッドが連携して動作します。適切なTableModelを作成すると、理解しやすく使いやすくなります。 – camickr

3

このためにカスタムモデルを作成する必要があります。 DefaultTableModelは、開始するのに最適な場所ではありません。

一般に、AbstractTableModelを拡張し、ArrayListを使用してDataHolderオブジェクトを格納します。次に、TableModelインタフェースの他のメソッドを実装する必要があります。 How to Use TablesのSwingチュートリアルでは、これを行う方法の基本を説明しています。

またはBean Table Modelを使用して、すべての作業を実行できます。

+0

ありがとう:) BeanTableModelはとても役立つでしょう。ちょうど私が作成しようとしていたもの。 – TheKojuEffect

関連する問題