スライダーに表示するラベルを定義する

広告

スライダーに表示するラベルを目盛りの値などにする場合は自動でラベルテーブルを作成するメソッドが用意されていますが、任意の文字列を表示させたい場合にはラベルテーブルを自分で作成する必要があります。ここではラベルテーブルを定義する方法を試してみます。

ラベルは2つの値を持ちます。「Integer value」と「java.swing.JComponent label」です。この2つの値を1つのペアとして必要な数だけをjava.util.Hashtableクラスのオブジェクトに格納していきます。

Integer型の値にはラベルを表示したい値を指定します。そして表示するコンポーネントをJComponentクラスのオブジェクトで指定します。例えばJLabelクラスを使って文字列を表示できます。

次の例では3つのラベルを持つラベルテーブルを作成しています。

Hashtable<Integer, JComponent> table
    = new Hashtable<Integer, JComponent>();

table.put(new Integer(0), new JLabel("最小"));
table.put(new Integer(50), new JLabel("中間"));
table.put(new Integer(100), new JLabel("最大"));

ラベルテーブルを作成したらJSliderクラスで用意されている「setLabelTable」メソッドを使ってラベルテーブルを設定します。「setLabelTable」については『スライダーにラベルを表示する』を参照して下さい。

Hashtable<Integer, JComponent> table
    = new Hashtable<Integer, JComponent>();

table.put(new Integer(0), new JLabel("最小"));
table.put(new Integer(50), new JLabel("中間"));
table.put(new Integer(100), new JLabel("最大"));

slider.setLabelTable(table);

サンプルプログラム

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

JSliderTest11.java

import javax.swing.*;
import java.awt.BorderLayout;
import java.util.Hashtable;

public class JSliderTest11 extends JFrame{

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

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

  JSliderTest11(){

    Hashtable<Integer, JComponent> table = new Hashtable<Integer, JComponent>();

    table.put(new Integer(0), new JLabel("最小"));
    table.put(new Integer(50), new JLabel("中間"));
    table.put(new Integer(100), new JLabel("最大"));

    JSlider slider = new JSlider();
    slider.setLabelTable(table);
    slider.setPaintLabels(true);

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

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

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

JSliderでラベルを自分で定義する

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)