Pergunta

Eu tenho um JSlider com um min 0 e um máximo de 10.000. Eu tenho as marcas de escala principais fixada em 1.000. Se eu fosse para pintar as etiquetas agora eles iriam aparecer como 0, 1000, 2000, 3000, 4000, etc. O que eu gostaria de ser mostrado seria 0, 1, 2, 3, 4, 5, etc. O que seria ser uma boa maneira de realizar essa tarefa?

Foi útil?

Solução

using JSlider.setLabelTable(Dictionary)

EDIT

Alternatively you can rely on predefined label UI and just change the label text:

    Enumeration e = jSlider.getLabelTable().keys();

    while (e.hasMoreElements()) {
        Integer i = (Integer) e.nextElement();
        JLabel label = (JLabel) jSlider.getLabelTable().get(i);
        label.setText(String.valueOf(i / 1000));          
    }

Outras dicas

You could use JSlider.setLabelTable(Dictionary) to set specific labels for the values you wish to render differently; e.g.

JSlider slider = ...

Dictionary dict = new Hashtable();
for (int i=0; i<=10000; i += 1000) {  
  dict.put(i, new JLabel(Integer.toString(i / 1000)));
}

slider.setLabelTable(dict);

(Edited based on previous comments.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top