Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

2つの縦スクロールバーの動きを同期させたいのですが。

JScrollPane2つをJSplitPaneで横並べにしていて、それぞれの縦スクロールバーの動きを同期させたいと思っています。
mouseReleasedでドラッグによる変化には対応できましたが、ノートパソコンのタッチパッドの端などで行ったスクロール(位置のイラスト:http://fast-uploader.com/file/6976114221344/)のイベントはmouseWheelMovedでは拾えませんでした。

タッチパッドのスクロールのイベントを拾う方法でもスクロールバーの位置の変化のイベントを拾う方法でもよいのですが、どうすればタッチパッドのスクロールでも2つの縦スクロールバーの動きを同期させることができるでしょうか?

4

回答

81294

閲覧

4件の回答

評価

0

まずはぐぐる。

評価

0

JScrollPaneのドキュメントは読みましたが、それっぽいリスナー(AdjustmentListenerあたり?)は見つからず、スクロールの方もMouseAdapterの方には他にそれっぽいメソッドは見つからず、どうしたらよいかわからずに質問していました。
ですが、JScrollPane#getVerticalScrollBarにリスナーを付けるという発想を忘れていました。
JScrollBarにならAdjustmentListenerありますね。
(ググれと言われて「JScrollPane イベント」でググるつもりが予測一覧選択でうっかり「JScrollBar イベント」でググっていたところ見つけました。)
そもそもソース見直していたらマウス系リスナーもそれでやってました。
以前別のことのためにつけていたせいか見落としてました。
ありがとうございました。

評価

0

すでに解決済みかもしれませんがスクロールバーの方は
BoundedRangeModelを共有する方が簡単だと思います。
以下のようなコードを加えるだけです。
rightBar.setModel(leftBar.getModel());
もし想定していたのとは違う動作の場合はご容赦ください。

評価

0

BoundedRangeModelの共有でもやりたいことができました。
回答ありがとうございます。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。