Changer les étiquettes affichables pour un JSlider?
Question
I ai un JSlider avec un minimum de 0 et un maximum de 10 000. Je les marques de tiques majeures fixées à 1000. Si je devais peindre les étiquettes maintenant ils apparaissent comme 0, 1000, 2000, 3000, 4000, etc. Ce que je voudrais être montré serait 0, 1, 2, 3, 4, 5, etc. Que serait être une bonne façon d'accomplir cette tâche?
La solution
JSlider.setLabelTable ( Dictionnaire)
EDIT
Sinon, vous pouvez compter sur l'interface utilisateur d'étiquettes prédéfinies et il suffit de modifier le texte de l'étiquette:
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));
}
Autres conseils
Vous pouvez utiliser JSlider.setLabelTable(Dictionary)
pour définir des étiquettes spécifiques pour les valeurs que vous souhaitez rendre différemment; par exemple.
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);
(Sous la direction en fonction des commentaires précédents.)