• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JScrollBarをJSliderとして使用する
#navi(../)
#tags(JScrollBar, JSlider, JSpinner)
RIGHT:Posted by &author(aterai); at 2008-12-15
* JScrollBarをJSliderとして使用する [#mb679a0c]
---
title: JScrollBarをJSliderとして使用する
tags: [JScrollBar, JSlider, JSpinner]
author: aterai
pubdate: 2008-12-15T13:23:29+09:00
description: JScrollBarをJSliderの代わりとして使用します。
---
* 概要 [#mb679a0c]
`JScrollBar`を`JSlider`の代わりとして使用します。

- &jnlp;
- &jar;
- &zip;
#download(https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTSgYVysvI/AAAAAAAAAi4/5UjLktCUVb8/s800/ScrollBarAsSlider.png)

#ref(https://lh4.googleusercontent.com/_9Z4BYR88imo/TQTSgYVysvI/AAAAAAAAAi4/5UjLktCUVb8/s800/ScrollBarAsSlider.png)

** サンプルコード [#j692e22c]
* サンプルコード [#j692e22c]
#code(link){{
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) {
  @Override 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]
* 解説 [#ob9937c1]
上記のサンプルでは、`JScrollBar`を`JSlider`として使用し、`JSpinner`と連動させています。`JScrollBar`に設定する最大値は、スクロールバーのノブ(`extent`はノブの幅)の右ではなく左端になるように調整する必要があります。

- このため、`JSpinner`の最大値とは異なり、`max`+`extent`が`JScrollBar`に設定する最大値となる
- 垂直なら上端

** 参考リンク [#sdac3685]
* 参考リンク [#sdac3685]
- [http://docs.oracle.com/javase/jp/6/api/javax/swing/JScrollBar.html JScrollBar]

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