2010-09-20 2 views
5

У меня есть JSlider в моем графическом интерфейсе, который идет от 0 до 100. По какой-то причине над ползунком отображается текст, отображающий текущее значение ползунка, и он следует за моим слайдером. I.e., если я переместил ползунок наполовину, «50» появится выше, где мой ползунок в данный момент. Однако я не могу понять, что такое текстовое поле, все, что я знаю, является его частью слайдера.Как удалить текст над JSlider

Я хочу либо удалить его, либо изменить его на что-то еще, как бы это сделать?

+0

Какой пользовательский интерфейс слайдер с помощью? 'Slider.getUIClassID()'. Мой пользовательский интерфейс по умолчанию не показывает, о чем вы говорите. Возможно, вам придется предоставить свой собственный интерфейс или переопределить/подклассы существующего. –

+0

Да, его странное, из того, что я могу сказать, большинство ползунков не имеет его, поэтому его так сложно и неясно выяснить. Мой slider.getUIClassID() возвращает «SliderUI» –

+0

Извините, попробуйте распечатать 'slider.getUI(). GetClass()'. Виноват. –

ответ

4

Я бы просто прокомментировал ответ Этауина, но у меня пока нет репутации.

Во всяком случае, назвать это до инстанцирования JSlider:

UIManager.put("Slider.paintValue", false); 

Обратите внимание на капитал 'V' в paintValue.

Кроме того, для печати всех забавных вещей, которые в настоящее время установленных вашего UIManager, введите этот код в любом месте после того, как UIManager было инстанцированный:

Iterator<Entry<Object, Object>> it = UIManager.getDefaults().entrySet().iterator(); 
while(it.hasNext()) 
    System.out.println(it.next()); 
+0

См. Также [статью и полезность] (http://tips4java.wordpress.com/2008/10/09/uimanager-defaults/). – trashgod

-1

Как я вижу, в JSlider есть метод setLabelTable с параметром словаря. Я не использовал его, но я полагаю, что если вы установите его в пустой словарь (или пустые метки для каждого возможного значения), то никаких ярлыков не появится.

Лучшим решением является использование setPaintLabels с значением false.

+1

Нет, уже попробовал, labelTable используется для маркировки меток ползунка (метки, которые идут ниже ползунка), это doesn 't влияет на значение выше ползунка на всех. –

+0

Я думаю, что они связаны с отметками. –

+0

followup comment, setPaintLabels уже по умолчанию имеет значение false и влияет на метки, которые вы установили с помощью setLableTable, что НЕ является значением ползунка. Так что это тоже не работает. Как сказал Марк, это те метки метки, а не значение ползунка, о котором я говорю. –

0

Вы имеете в виду всплывающую подсказку? Является ли это маленькой коробкой, которая появляется над регулятором ползунка и следует за вашей мышью, если вы возьмете слайдер? Если это так, вы можете отключить его просто путем вызова setToolTipText(null) или переопределить текст с помощью setToolTipText("My Text").

3

Это беспокоило меня по проекту один раз, и я нашел следующее обходное решение. Назовите это однажды инстанцировании ваш JSlider - я положил его в static блоке в моем JPanel подкласса:

UIManager.put("Slider.paintValue", false); 

Это будет заботиться о нем.

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