2012-03-18 5 views
1

のTableModelとのDefaultTableModelクイック検索を行うと、addRowメソッドがDefaultTableModelクラスに含まれていることがわかりました。だから、次のようにそれを変更すると、成功しました:Javaの私は、最初は、以下のモデルのメソッドを探すことにより、JTableのに新しい行を追加する方法を把握しようとしているかなり長い間を費やしてきた

DefaultTableModel model = new DefaultTableModel(data, tabs); 

しかし、私はTabelModelを使用して事前に構築された配列を持っていた多くの成功のプログラムを作成しましたので、私は私が必要な理由として少し混乱していますDefaultTableModelに切り替えてこのソリューションを実現し、それぞれに理由と目的がある場合は?例:TableModelを実装済みの配列で単純に使用するのは大丈夫ですか?上記のTableModelの実装には新しいデータを追加するメソッドがないのはなぜですか?

ありがとうございます!

+1

TableModelはインターフェイスで、DefaultTableModelは具体的な実装であり、とりわけ行を追加する便利な方法を提供します。 – tenorsax

+0

@Nilesの場合、 'model'がメソッドに付属していない理由は' TableModel model = new DefaultTableModel(data、tabs); 'で始まります。キャストされたクラスにメソッドが実装されるようにするには 'model'を' DefaultTableModel'にキャストする必要があります。そのタイプのインスタンス化では、実装されたクラスにないメソッドを追加するとオブジェクトをキャストする必要があります。 – Sebastian

答えて

4

テーブルモデルの核として独自のコレクションを使用する必要がある場合は、AbstractTableModelを拡張して、モデルにデータを追加する独自のaddRowメソッドを作成する必要があります重要な部分)は、がAbstractTableModelの適​​切なデータ変更通知メソッドを起動します。

+3

['DefaultTableModel'](http://developer.classpath.org/doc/javax/swing/table/DefaultTableModel-source.html)は_appropriate_に便利なガイドです。 – trashgod

+2

'AbstractTableModel'は、すべての' TableModel'に必要なものをたくさん提供しますが、コード自体はあまり面白くない(リスナー管理のように)独自のデータに 'JTable'を組み込むのに便利なクラスです。これを使って。 –

関連する問題