JSliderサンプル


基本形


サンプルソース JSliderSample1.java

デフォルトコンストラクタでは0から100で初期値50のスライダーが作成されます。
JSlider s = new JSlider();
frame.add(s);
 

setValue()でスライダに値を設定できます。
getValue()でスライダの現在の値を取得できます。
s.setValue(100);
f.setText("" + s.getValue());
 

ChangeListenerを追加すると、スライダを操作した時のイベントを受け取れます
s.addChangeListener(new ChangeListener() {
  @Override
  public void stateChanged(ChangeEvent e) {
    // 変更後の値をJTextFieldに設定してみます
    textField.setText("" + s.getValue());
  }
});
 


縦置きのスライダー サンプルJSliderSample2.java

// 縦置きスライダー
JSlider slider = new JSlider(JSlider.VERTICAL);


スライダのサイズ変更 サンプルJSliderSample3.java


スライダのサイズを変更するには、setPreferredSize()を使います。
JSlider s = new JSlider();
s.setPreferredSize(new Dimension(100, 30);

getPrefferedSize()で初期値を取得して横幅だけ変更することもできます。
JSlider s = new JSlider();
Dimension d = s.getPreferredSize();
d.setSize(100, d.height);
s.setPreferredSize(d);
add(s);
 

マウスを離した時のイベント


普通にChangeListenerを使うと、スライダ操作中リアルタイムにイベントが発生します
JSliderにはマウスを離した瞬間のイベントは無いそうなので、
JSlider#getValueIsAdjustingで「現在マウスで操作中か」を判定します

サンプル JSliderSample4.java

add(new JLabel("マウスを離した時に反応するスライダ"));
slider1 = new JSlider();
slider1.addChangeListener(new ChangeListener() {
  @Override
  public void stateChanged(ChangeEvent e) {
    if (!slider1.getValueIsAdjusting()) {
      // マウスで掴んでる間はgetValueIsAdjusting()でtrueが返って来ます
      // マウスを離すとfalseが返ります
      textField1.setText("マウス離した" + slider1.getValue());
    }
  }
});