Obtenga acceso al pulgar/mango/perilla del JSLider de Swing
Pregunta
Básicamente, quiero mostrar el valor actual apuntado por el mango del control deslizante cuando está en movimiento (ya sea a través del mouse o el teclado). Puedo obtener fácilmente el valor actual agregando un nuevo método ChangeListener y anulación de statechanged. Pero parece que no puedo obtener la ubicación actual del mango.
Puedo morder la bala y crear una etiqueta en un lugar constante y actualizarla continuamente, pero quiero mostrar el valor justo arriba (o abajo) el mango.
Solución
No es una solución buena o muy flexible, pero tal vez pueda implementar la suya propia SliderUI
. Por ejemplo, usando el ya definido BasicUI
puedes acceder al campo thumbRect
que contiene los valores que necesita.
slider.setUI(new BasicSliderUI(slider) {
public void paintThumb(Graphics g) {
super.paintThumb(g);
g.setColor(Color.black);
g.drawString(Integer.toString(slider.getValue()), thumbRect.x, thumbRect.y + thumbRect.height);
}
});
Otros consejos
Si el Nimbus see y siente es una opción, se puede especificar una visualización en vivo del valor en el valor predeterminado de la interfaz de usuario relevante:
UIManager.getLookAndFeelDefaults().put("Slider.paintValue", true);