2010-09-20 13 views
5

Tengo un JSlider en mi GUI que va de 0 a 100. Por alguna razón, hay texto sobre la posición del control deslizante que muestra el valor actual del control deslizante y sigue mi control deslizante. Es decir, si muevo mi deslizador hasta la mitad, aparece "50" arriba de donde está mi control deslizante. Sin embargo, no puedo entender cómo se llama ese campo de texto, todo lo que sé es parte del control deslizante.Cómo eliminar el texto anterior JSlider

Quiero quitarlo o poder cambiarlo a otra cosa, ¿cómo lo haría?

+0

Lo interfaz de usuario está utilizando el control deslizante? 'slider.getUIClassID()'. Mi IU predeterminada no muestra de lo que estás hablando. Es posible que deba proporcionar su propia IU o anular/subclase una UI existente. –

+0

Sí, es raro, por lo que puedo decir, la mayoría de los controles deslizantes no lo tienen, por lo que es tan difícil y oscuro de entender. Mi slider.getUIClassID() devuelve "SliderUI" –

+0

Lo siento, intente imprimir 'slider.getUI(). GetClass()'. Mi error. –

Respuesta

4

Acabo de comentar sobre la respuesta de Etaoin, pero aún no tengo la reputación para ello.

En cualquier caso, antes de llamar a esta instancia del JSlider:

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

Nota capital 'V' en paintValue.

Por otra parte, para imprimir todas las cosas divertidas que se establecen actualmente por su UIManager, introduzca este código en cualquier lugar después de la UIManager ha creado una instancia:

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

Vea también este [artículo y utilidad] (http://tips4java.wordpress.com/2008/10/09/uimanager-defaults/). – trashgod

-1

Como veo, hay un método setLabelTable en JSlider con un parámetro de diccionario. No lo he usado, pero supongo que si lo configura en un diccionario vacío (o etiquetas vacías para cada valor posible), entonces no aparecerá ninguna etiqueta.

Una mejor solución es el uso de setPaintLabels con un valor de false.

+1

no, ya lo intenté, el labelTable se usa para marcar las etiquetas del control deslizante (las etiquetas que van debajo de un control deslizante), doesn Afecta el valor por encima del control deslizante. –

+0

Creo que tienen que ver con las marcas de graduación. –

+0

comentario de seguimiento, setPaintLabels está predeterminado de forma predeterminada en false, y afecta a las etiquetas que establece con setLableTable, que NO es lo que es el valor del control deslizante. Entonces tampoco funciona. Como dijo Mark, esos son para las etiquetas de marca, no el valor del control deslizante del que estoy hablando. –

0

¿Quieres decir una información sobre herramientas? ¿Es una pequeña caja que aparece sobre el control deslizante y sigue el mouse si agarras el control deslizante? Si este es el caso, puede deshabilitarlo simplemente llamando al setToolTipText(null), o anular el texto con setToolTipText("My Text").

3

Esto me molestó en un proyecto una vez, y encontré la siguiente solución. Llamar a esto una vez antes de crear instancias de su JSlider - Lo puse en un bloque static en mi subclase JPanel:

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

Eso tomará el cuidado de él.

Cuestiones relacionadas