0

Scrollable実装されたインターフェースとオーバーライドされたメソッドを使用してJPanelを作成しましgetScrollableBlockIncrementた。JPanelをJScrollPaneに配置しました。また、JPanelには同じ高さのコンポーネントがいくつか含まれています。この高さはunitIncrementです。ここで、垂直スクロールバーの矢印をクリックすると、ビューポートがunitIncrementだけ移動します。しかし、マウスでノブを動かすと、ビューポートがピクセル単位で移動します。unitIncrementだけでビューポートを移動させるにはどうすればよいですか?

更新:
ノブは、スクロールバーのトラック上の中央のボタンで、ドラッグします。そこに示されているように、スクロールペインのしくみ

ビューポートは、とにかくunitIncrementだけで移動したいです。また、ノブのマウスの左ボタンを押してドラッグしたときも。動作例:Eclipseのインテリセンス。

更新2:
試し myJScrollPane.getVerticalScrollBar().setUnitIncrement(16); ましたが、希望する動作が得られませんでした。
コードをデバッグしたところ、ノブをドラッグするとパラメーターunitIncrementが破棄されることがわかりました。

更新3:
JScrollPaneで適切な解決策が見つからず、カスタムスクロールペインを作成しました。

4

1 に答える 1

0

あなたの質問への答えは、少し検索するだけで見つかります: マウス ホイールを使用しているときに JScrollPane でスクロール速度を上げるにはどうすればよいですか?

繰り返しますが、基本的には の を変更する必要がありJScrollBarますJScollPane

myJScrollPane.getVerticalScrollBar().setUnitIncrement(16);

それ以外の場合は、JScrollPane の Scolling イベントをオーバーライドして、スクロールされているペインに基づいてスクロールする量を渡す必要があります。これは少し面倒です...最初の方法がうまくいく場合は、一緒に行きます。

結論: 問題はJScollPane- あなたのScrollableクラスではありません。

于 2012-08-05T22:49:15.050 に答える