У меня есть JSlider с минимальным значением 0 и максимальным значением 10 000. У меня основные отметки установлены на 1000. Если бы я нарисовал этикетки сейчас, они бы отображались как 0, 1000, 2000, 3000, 4000 и т. д. Я бы хотел, чтобы они отображались как 0, 1, 2, 3, 4, 5 и т. д. Что бы получилось? быть хорошим способом выполнить эту задачу?
Изменить отображаемые метки для JSlider?
Ответы (2)
используя JSlider.setLabelTable(Dictionary)< /а>
РЕДАКТИРОВАТЬ
В качестве альтернативы вы можете положиться на предопределенный пользовательский интерфейс метки и просто изменить текст метки:
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));
}
person
dfa
schedule
14.07.2009
Вы можете использовать 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
Dictionary — это абстрактный класс, поэтому вместо него вы можете использовать Hashtable. Вам также нужно получить число 10 там. ваш цикл for не позволяет этого.
- person akf; 14.07.2009
Словарь является абстрактным и не может быть создан
- person dfa; 14.07.2009
восстановление метки с нуля может быть плохой идеей (при использовании Java6 в Windows метки не работают)
- person dfa; 14.07.2009
Как они сломаны? Я использую Alloy L&F в Windows, и JLabels, кажется, в порядке. Что может быть альтернативой восстановлению JLabel с нуля?
- person Adamski; 14.07.2009
проверьте мой ответ (у меня Windows 7 с jdk 1.6u14)
- person dfa; 14.07.2009