2009-07-14 2 views
3

У меня есть JSlider с минусом 0 и максимум 10 000. У меня есть основные отметки в 1000. Если бы я теперь рисовал ярлыки, они отображались бы как 0, 1000, 2000, 3000, 4000 и т. Д. То, что я хотел бы показать, будет 0, 1, 2, 3, 4, 5 и т. Д. Что бы быть хорошим способом выполнить эту задачу?Изменить отображаемые ярлыки для JSlider?

ответ

2

использованием JSlider.setLabelTable(Dictionary)

EDIT

В качестве альтернативы вы можете рассчитывать на предопределенной этикеточной UI и просто изменить текст метки:

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) для установки определенных меток для значений, которые вы хотите визуализировать по-разному; например (. Под редакцией на основе предыдущих комментариев)

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

Смежные вопросы