2010-12-11 8 views
2

JTableスクロールの行をマウスの位置に応じて設定できますか?JTableマウス位置によるスクロール

つまり、カーソルがテーブルの上部に近づいている場合は上方にスクロールし始め、テーブルの下部に近づいている場合は下方にスクロールし始めます。

AS3でこの効果に似て

:私は現在使用している

http://activeden.net/item/professional-dock-menu-as2-and-as3/127450

int row = table.rowAtPoint(e.getPoint()); 
Rectangle r = table.getCellRect(row,0,true); 
table.scrollRectToVisible(r); 

をカーソルが上/下になったときに一度スクロールのmouseMovedリスナー、内行。私はそれをスクロールし続ける方法を確信していますが(現在、ユーザーはマウスを動かすためにマウスを動かさなければならないでしょう)。

答えて

1

マウスがテーブルに入るときにスウィングタイマーを開始する必要があると思います。 mouseMovedイベントでは、タイマー間隔を変更して、マウスがテーブルの上/下の相対的な位置に応じて、より速くするか遅くすることができます。次に、Timerが起動すると、MouseInfoクラスを使用して(または最後のmouseMoved点を保存して)、マウスの位置を取得して、1つの行を上下にスクロールするかどうかを判断できます。

+0

この回答はありがたいです。私は、タイマーオプションについて考えましたが、私はmouseEnteredでそれを開始することを考えなかったし、最後のmouseMovedポイントを保存することについては考えていませんでした。しかし、私はまだマウスがテーブルのトップ/ボトムとの相対的な位置に応じて適切な間隔を計算する方法を失っています。画面上に現在表示されている行の数とこれらの行の範囲を知る簡単な方法はありますか?例えば6行目から34行目が現在表示されていて、マウスが10行目を超えています。 – tre

+0

私の最後のコメントは無視してください(JViewportを使用し、ビューポートが変更されるたびに起動する方法)。 – tre

関連する問題