Cómo hacer visible solo las extremidades para jsliders
Pregunta
Digamos que tengo un JSLider horizoltal de 0 a 100. Lo que quiero hacer es: - Establecer un espacio mayor a 10 y menor a 5, pero los dígitos no deberían ser visibles: los valores de las extremidades (0 y 100) deberían ser visibles - Cuando muevo la flecha de posicionamiento, quiero tener una etiqueta al lado del cursor del mouse que me dice el valor real.
Solución
Establezca un espacio mayor a 10 y menor a 5, pero los dígitos no deben ser visibles: los valores de las extremidades (0 y 100) deben ser visibles
Esto se puede hacer fácilmente utilizando algunos métodos de jslider como,
JSlider slider = new JSlider(JSlider.VERTICAL, 0, 100, 0);
slider.setMinorTickSpacing(5);
slider.setMajorTickSpacing(10);
slider.setPaintTicks(true);
Hashtable<Integer, JLabel> labels = new Hashtable<Integer, JLabel>();
labels.put(0, new JLabel("0"));
labels.put(100, new JLabel("100"));
slider.setLabelTable(labels);
slider.setPaintLabels(true);
Cuando muevo la flecha de posicionamiento, quiero tener una etiqueta al lado del cursor del mouse que me dice el valor real.
Puede lograr algo similar utilizando Customer SliderUI y anulando su método de tapón de pintura. Esto no es exactamente que quieres pero puedes probar esto:
slider.setUI(new BasicSliderUI(slider) {
public void paintThumb(Graphics g) {
super.paintThumb(g);
g.setColor(Color.RED);
g.drawString(slider.getValue() + "", thumbRect.x, thumbRect.y + thumbRect.height);
}
});