2009-07-14 9 views
3

私は、最小値が0で最大値が10,000のJSliderを持っています。私は大きな目盛りを1000に設定しました。ラベルをペイントすると、0,1000,2000,3000,4000などと表示されます。私が表示したいのは、0,1,2,3,4,5などです。この仕事を達成する良い方法でしょうか?JSliderの表示可能なラベルを変更しますか?

答えて

2

Enumeration e = jSlider.getLabelTable().keys(); 

    while (e.hasMoreElements()) { 
     Integer i = (Integer) e.nextElement(); 
     JLabel label = (JLabel) jSlider.getLabelTable().get(i); 
     label.setText(String.valueOf(i/1000));   
    } 
1

JSlider.setLabelTable(Dictionary)を使用して、異なる方法でレンダリングする値に特定のラベルを設定することができます。例えば別の方法としては、あらかじめ定義されたラベルのUIに依存することができますし、単にラベルテキストを変更JSlider.setLabelTable(Dictionary)

EDIT

を使用して

JSlider slider = ... 

Dictionary dict = new Hashtable(); 
for (int i=0; i<=10000; i += 1000) { 
    dict.put(i, new JLabel(Integer.toString(i/1000))); 
} 

slider.setLabelTable(dict); 

(以前のコメントに基づいて編集された。)

+0

ディクショナリは抽象クラスなので、Hashtableのinste広告。あなたはまたそこに番号10を取得する必要があります。 forループはそれを可能にしません。 – akf

+0

辞書は抽象であり、インスタンス化することはできません – dfa

+0

どちらも良い点です! - 私は自分のコードを編集します。 – Adamski

関連する問題