---
category: swing
folder: MouseWheel
title: MouseWheelを使った値の増減
tags: [MouseWheelListener, JSpinner, JSlider]
author: aterai
pubdate: 2004-03-08T08:53:34+09:00
description: JSpinnerやJSliderの値をマウスホイールを使って変更します。
image: https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTQH9EVaHI/AAAAAAAAAfE/Dv-UnuISmXM/s800/MouseWheel.png
---
* 概要 [#summary]
`JSpinner`や`JSlider`の値をマウスホイールを使って変更します。

#download(https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTQH9EVaHI/AAAAAAAAAfE/Dv-UnuISmXM/s800/MouseWheel.png)

* サンプルコード [#sourcecode]
#code(link){{
spinner.addMouseWheelListener(new MouseWheelListener() {
  @Override public void mouseWheelMoved(MouseWheelEvent e) {
    JSpinner source = (JSpinner) e.getComponent();
    SpinnerNumberModel model = (SpinnerNumberModel) source.getModel();
    Integer oldValue = (Integer) source.getValue();
    int intValue = oldValue.intValue()
                   - e.getWheelRotation() * model.getStepSize().intValue();
    int max = ((Integer) model.getMaximum()).intValue(); //1000
    int min = ((Integer) model.getMinimum()).intValue(); //0
    if (min <= intValue && intValue <= max) {
      source.setValue(intValue);
    }
spinner.addMouseWheelListener(e -> {
  JSpinner source = (JSpinner) e.getComponent();
  SpinnerNumberModel model = (SpinnerNumberModel) source.getModel();
  Integer oldValue = (Integer) source.getValue();
  int intValue = oldValue - e.getWheelRotation() * model.getStepSize().intValue();
  int max = (int) model.getMaximum(); // 1000
  int min = (int) model.getMinimum(); // 0
  if (min <= intValue && intValue <= max) {
    source.setValue(intValue);
  }
});
}}

* 解説 [#explanation]
上記のサンプルでは、`JSpinner`や`JSlider`に`MouseWheelListener`を設定しその領域上でマウスホイールを回転させると値を変更可能にしています。

- `MouseWheelEvent#getWheelRotation()`:
-- ホイールの回転が下方向で増加(正)
-- ホイールの回転が上方向で減少(負)

* 参考リンク [#reference]
- [https://docs.oracle.com/javase/jp/8/docs/api/java/awt/event/MouseWheelListener.html MouseWheelListener (Java Platform SE 8)]

* コメント [#comment]
#comment
#comment