えー、以前スクロールの有無でスクロールバーを無効/有効を切り替える方法を書きました。
今回はこれをちょっと改造してスクロールバーをサイズいっぱいにする(見せかける)方法です。
これはWord2007の垂直方向のスクロールバーみたいなイメージです。
その方法ですが、スクロールペインのスクロールバーに追加したAdjustmentListenerで
スクロールの有無を判定します。
スクロールの有無はJScrollBar.getMaximum()とJScrollBar.getVisibleAmount()を見ます。
maximumとvisibleAmountの値が同じ時はスクロールの必要がないときです。
maximum>visibleAmountのときはスクロールが必要な時です。
もし、スクロールが必要ない時はスクロールバーの最大値を+1してやります。
最大値の設定方法はJScrollBar.setMaximum(int)で出来ます。
ノブをドラッグすると若干移動してしまいますが、放すと元に戻ります。
また、上下右左のボタンを押してもスクロールしません。
前作ったサンプルプログラムを改造したのでSSを置きます。
スクロールが必要ないとき
スクロールが必要なとき
Jarファイル、ソース、Javadocは下です。
あまりテストしてないので、ちゃんと動けばいいんですけど・・・。
サンプルプログラム
ソース
Javadoc
参考までに:
「スクロールの有無でスクロールバーの無効/有効を切り替える」に関する記事
以下、スクロールバーの挙動以外の変更点です。
どちらも従来のsetHorizontalScrollBarPolicyとsetVerticalScrollBarPolicyの挙動にあわせる変更です。
・独自のスクロールバーポリシーをセットした時にバウンドプロパティを通知するように変更
・ポリシーを変更した時にスクロールペインを再描画するように変更
[0回]
PR