JScrollPane.setWheelScrollingEnabled(boolean)
マウスホイールのスクロールを有効または無効にする方法が表示されます。スクロールの速度を調整する方法はありますか?私の意見では、それは途方もなく遅いです。ウィンドウのサイズに関係なく、スクロールは1クリックあたり約3ピクセルです。それ以上になりたいです。
何か案は?
JScrollPane.setWheelScrollingEnabled(boolean)
マウスホイールのスクロールを有効または無効にする方法が表示されます。スクロールの速度を調整する方法はありますか?私の意見では、それは途方もなく遅いです。ウィンドウのサイズに関係なく、スクロールは1クリックあたり約3ピクセルです。それ以上になりたいです。
何か案は?
回答:
あなたはこれを試すことができます:
myJScrollPane.getVerticalScrollBar().setUnitIncrement(16);
スクロールバーユニットの量に関係なくマウスホイールのスクロール量を設定したい場合は、マウスホイールコントローラーを使用できます。
これを行うには、ScrollBarの単位増分を設定します。例を参照してください。
yourScrollPane.getVerticalScrollBar().setUnitIncrement(16);
クイック検索でこのページが表示されました:マウスホイールユーザーのJScrollPaneスクロール速度を上げる方法。スクロールの増分はJScrollBar.setUnitIncrement
、スクロールペインではなく、スクロールバー自体()のプロパティであることがわかります。
より正確な制御のために、スクロールされるコンポーネントはScrollableインターフェースを実装できます。これにより、スクロールユニットのサイズ(矢印ボタンと矢印キー)とスクロールブロックのサイズ(マウスホイール)を動的に計算できます。
これも使えます。
SwingUtil.setScrollUnitIncrement(yourScrollPane);
スクロールを高速化するための私の解決策:
スクロールバーのパラメーターを追加します。
scrollPane.getVerticalScrollBar()。putClientProperty( "JScrollBar.fastWheelScrolling"、true);
ホイールリスナーを実装します(jViewport内のコンポーネント上):
public void mouseWheelMoved(MouseWheelEvent e) {
boolean isCtrl = (e.getModifiersEx() & MouseWheelEvent.CTRL_DOWN_MASK) != 0;
boolean isShift = (e.getModifiersEx() & MouseWheelEvent.SHIFT_DOWN_MASK) != 0;
MouseWheelEvent eventToDispatch = e;
if (isCtrl || isShift) {
int amountMulti = 1;
int rotMulti = 1;
if (isCtrl) {
amountMulti *= 10;
if (isShift) {
amountMulti *= 5;
rotMulti *= 2;
}
}
int mod = e.getModifiers() & ~InputEvent.CTRL_MASK & ~InputEvent.SHIFT_MASK;
int modEx = e.getModifiersEx() & ~MouseWheelEvent.CTRL_DOWN_MASK & ~MouseWheelEvent.SHIFT_DOWN_MASK;
eventToDispatch = new MouseWheelEvent(this, e.getID(), e.getWhen()
, mod | modEx, e.getX(), e.getY()
, e.getXOnScreen(), e.getYOnScreen(), e.getClickCount(), e.isPopupTrigger()
, e.getScrollType(), e.getScrollAmount()*amountMulti, e.getWheelRotation()*rotMulti
, e.getPreciseWheelRotation()*amountMulti*rotMulti);
}
getParent().dispatchEvent(eventToDispatch);
}
wheelRotationの増加が必要です。それ以外の場合、スクロールされる行の数は画面のサイズに制限されます。