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.

¿Fue útil?

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);
    }
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top