0

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

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

4

2 に答える 2

1

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

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

于 2010-12-28T21:34:19.310 に答える
0

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

DefaultTableModel の EventListenerList を使用して、任意のリスナーに通知できます。

于 2010-12-28T19:22:53.733 に答える