TITLE:JScrollBarをJSliderとして代用する
#navi(../)
*JScrollBarをJSliderとして代用する [#mb679a0c]
Posted by [[terai]] at 2008-12-15

#contents

**概要 [#f9fc7c72]
JScrollBar を JSlider の代わりとして使用します。

-&jnlp;
-&jar;
-&zip;

#screenshot

**サンプルコード [#j692e22c]
#code{{
int step   = 5;
int extent = 20;
int min    = 0;
int max    = extent*10; //200
int value  = 50;
final JScrollBar scrollbar = new JScrollBar(
            JScrollBar.HORIZONTAL, value, extent, min, max+extent);
scrollbar.setUnitIncrement(step);
scrollbar.getModel().addChangeListener(new ChangeListener(){
  public void stateChanged(javax.swing.event.ChangeEvent e) {
    BoundedRangeModel m = (BoundedRangeModel)e.getSource();
    spinner.setValue(m.getValue());
  }
});
final JSpinner spinner = new JSpinner(
            new SpinnerNumberModel(value, min, max, step));
//...
}}

**解説 [#ob9937c1]
上記のサンプルでは、JScrollBarをJSliderとして使用し、JSpinnerと連動させています。

JScrollBarに設定する最大値は、スクロールバーのノブ(extentはノブの幅)の右ではなく左端になるように調整する必要があります。
-このため、JSpinnerの最大値とは異なり、max+extentがJScrollBarに設定する最大値となる
-垂直なら上端

//**参考リンク
**コメント [#f4046233]
#comment