との関係JTable
は?を変更するだけで、コンポーネントのデータ表示も変更されるか、メソッドを呼び出して 2 つを同期する必要があります。私はこれを見てきましたが、更新に関する関係を明示的に伝えたり示したりすることはありませんTableModel
TableData
TableData
JTable
3 に答える
TableModelデータの値を変更するときは、このイベントを発生させる必要があります。例えば。1つのセルの値を変更するには、を呼び出しますfireTableCellUpdated(row, col);
。
これをより具体的に見てください。
「TableData」というフレーズは、JTableに表示されているデータを意味するために使用していると思います。質問に答えるには、自動更新が表示されるかどうかは、TableModelとそれがデータとどのように相互作用するかによって異なります。
TableModelは、基になるデータモデルが変更されたときにイベントを発生させる必要があります。これにより、変更が発生したことをJTableに通知し、再描画する必要があります。したがって、関係の観点から、JTableはTableModelのイベント変更をリッスンします。TableModelにはJTableの知識がありません。
モデルの編成方法によっては、TableModelが認識していなくても、その下のデータが変更される可能性があります。この場合、TableModelからデータへの直接パススルーがある場合、再描画が自然に発生すると(画面のサイズ変更、マウスの移動など)、画面上の値が変更されますが、イベントを強制的に取得する必要があります。前述のイベントを通じてJTableに通知するTableModel。関係に関しては、TableModelはテーブルデータについて知っていますが、テーブルデータはモデルについての知識を持っていません(通常)。TableModelは、データの変更をリッスンしている場合とリッスンしていない場合があります。
JTableでTableModelを設定すると、テーブルはオブザーバー(TableModelListener)を追加して、モデルの変更について通知を受けます。
モデル内のデータを変更する場合、モデルはTableModelEventを起動することにより、登録されたリスナーに通知することが期待されます。イベント自体には、JTableが最適化されたビューの更新を実行できるように、変更の粒度(構造が大幅に変更されたか、一部のセルデータのみが変更されたか)に関する補足情報を含めることができます。