2010-12-28 12 views
0

私の要件に合わせてAbstractTableModelを拡張しました。今このテーブルは私のGUIの他の方法で変更することができます。テーブルを現在編集したセルにスクロールして表示します。これを行うには、まず、現在のJComponentのJViewportを取得する必要があると思いますが、これを実現する方法はありません。これをどのように達成するのですか?AbstractTableModelが拡張されたときにJTableでセルを表示させる

私は既定のJTableを使用していましたが、これを既に行っていますが、AbstractTableModelを拡張するときはどうすればよいですか?

答えて

1

モデルはデータを格納し、データが変更されたときにビューに通知するように設計されています。イベントを発生させてデータの変化を表示します。これらのイベントを聞くのは、ビューの責任です。したがって、モデルはどのビューが更新されているかを直接知ることはできません。このタイプの機能をモデルの一部にするべきではありません。

TableModelListenerを使用する方法があります。テーブルをパラメータとしてTableModelListnerを作成できます。その後、データが変更されると、リスナーに通知されます。その後、テーブルのtable.scrollRectToVisible(...)を呼び出すことができます。ただし、この方法では、JTable自体で行われたududateに対するTableModelで直接適用された編集を区別することはできません。

0

テーブルを起動して、親コンポーネントにそのイベントをリッスンさせ、それに応じてスクロールさせたい場合があります。そうすれば、あなたのテーブルは親スクロールペインについて知る必要はありません。

DefaultTableModelのEventListenerListを使用して、リスナーに通知することができます。

+0

わかりませんでしたが、ビューポートを取得せずにスクロールするにはどうすればよいですか?抽象的なテーブルモデルを拡張すると、階層はObject - > AbstractTableModel - > MyTableModelのようなものになります。私はどのように私はスクロールを達成することができるようにビューポートを取得するのですか? – sasidhar

+0

私を助けてください、私はそれが非常に緊急に必要です。 – sasidhar

+0

カスタムテーブルモデルをインスタンス化するクラスはどれですか?そのコンポーネントクラスがカスタムリスナーをカスタムテーブルモデルに追加するようにします。テーブルモデルで編集が行われると、テーブルモデルはすべてのリスナーに通知します。リスナーはテーブルモデルとJScrollPaneの両方への参照を持つ必要があり、それに応じてスクロールできます。 –

関連する問題