スライダーの値を設定する

広告

スライダーは自動的に初期値が設定がされますが、任意の値に初期値を設定したり、スライダーを作成した後でノブの位置を指定する方法を確認します。

スライダーの値を設定するにはコンストラクタで指定する方法とメソッドを使う方法があります。まずはコンストラクタで設定する方法を確認します。

最小値、最大値、および初期値を指定して、水平スライダを作成します。

スライダの最小値、初期値、および最大値として設定された値が適切でないた
めに問題が発生した場合は、スライダのデータを保持する BoundedRangeModel
がその問題を処理します。詳細は、BoundedRangeModel のドキュメントを参照
してください。

パラメータ:
  min - スライダの最小値
  max - スライダの最大値
  value - スライダの初期値

引数にはスライダーに設定する最小値と最大値そして初期値をそれぞれint型の値として指定します。

実際の使い方は次のようになります。

JSlider slider = JSlider(10, 1000, 100);

メソッドで指定する

JSliderクラスのオブジェクトを作成してからメソッドを使ってスライダーの値を設定することも可能です。JSliderクラスで用意されている「setValue」メソッドを使います。

スライダの現在値を n に設定します。このメソッドはモデルに新しい値を転送
します。

不適切な値を割り当てたことにより発生する数学的な問題は、データモデル 
(BoundedRangeModel インスタンス) が処理します。詳細は、BoundedRangeModel
のドキュメントを参照してください。

新しい値が以前の値と異なる場合は、すべての変更リスナーが通知されます。

パラメータ:
  n - 新しい値

引数にはスライダーの値をint型の値として指定します。

実際の使い方は次のようになります。

JSlider slider = JSlider(10, 1000);

slider.setValue(100);

サンプルプログラム

では簡単なサンプルを作成して試してみます。

JSliderTest4.java

import javax.swing.*;
import java.awt.BorderLayout;
import javax.swing.event.*;

public class JSliderTest4 extends JFrame implements ChangeListener{

  JSlider slider;
  JLabel label;

  public static void main(String[] args){
    JSliderTest4 frame = new JSliderTest4();

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBounds(10, 10, 300, 200);
    frame.setTitle("タイトル");
    frame.setVisible(true);
  }

  JSliderTest4(){

    slider = new JSlider(10, 1000);
    slider.setValue(100);
    slider.addChangeListener(this);

    JPanel p = new JPanel();
    p.add(slider);

    label = new JLabel();
    label.setText("値:" + slider.getValue());

    getContentPane().add(p, BorderLayout.CENTER);
    getContentPane().add(label, BorderLayout.PAGE_END);
  }

  public void stateChanged(ChangeEvent e) {
    label.setText("値:" + slider.getValue());
  }
}

上記をコンパイルした後で実行すると次のように表示されます。

JSliderで値を設定する

スライダーのノブの位置が指定した値の場所に設定されているのが確認できます。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。