スライダーに表示するラベルを定義する
スライダーに表示するラベルを目盛りの値などにする場合は自動でラベルテーブルを作成するメソッドが用意されていますが、任意の文字列を表示させたい場合にはラベルテーブルを自分で作成する必要があります。ここではラベルテーブルを定義する方法を試してみます。
ラベルは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);
サンプルプログラム
では簡単なサンプルを作成して試してみます。
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); } }
上記をコンパイルした後で実行すると次のように表示されます。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。