Изменить отображаемые метки для JSlider?

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


person Bobby    schedule 14.07.2009    source источник


Ответы (2)



Вы можете использовать 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);

(Отредактировано на основе предыдущих комментариев.)

person Adamski    schedule 14.07.2009
comment
Dictionary — это абстрактный класс, поэтому вместо него вы можете использовать Hashtable. Вам также нужно получить число 10 там. ваш цикл for не позволяет этого. - person akf; 14.07.2009
comment
Словарь является абстрактным и не может быть создан - person dfa; 14.07.2009
comment
восстановление метки с нуля может быть плохой идеей (при использовании Java6 в Windows метки не работают) - person dfa; 14.07.2009
comment
Как они сломаны? Я использую Alloy L&F в Windows, и JLabels, кажется, в порядке. Что может быть альтернативой восстановлению JLabel с нуля? - person Adamski; 14.07.2009
comment
проверьте мой ответ (у меня Windows 7 с jdk 1.6u14) - person dfa; 14.07.2009