スライダーに表示するラベルを定義する
スライダーに表示するラベルを目盛りの値などにする場合は自動でラベルテーブルを作成するメソッドが用意されていますが、任意の文字列を表示させたい場合にはラベルテーブルを自分で作成する必要があります。ここではラベルテーブルを定義する方法を試してみます。
ラベルは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 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。