problème avec la méthode setLabelTable pour personnaliser les étiquettes JSlider
Question
Selon ce tutoriel , il faut faireles éléments suivants pour personnaliser les étiquettes de JSlider:
JSlider framesPerSecond = new JSlider(JSlider.VERTICAL,
FPS_MIN, FPS_MAX, FPS_INIT);
framesPerSecond.addChangeListener(this);
framesPerSecond.setMajorTickSpacing(10);
framesPerSecond.setPaintTicks(true);
//Create the label table
Hashtable labelTable = new Hashtable();
labelTable.put( new Integer( 0 ), new JLabel("Stop") );
labelTable.put( new Integer( FPS_MAX/10 ), new JLabel("Slow") );
labelTable.put( new Integer( FPS_MAX ), new JLabel("Fast") );
framesPerSecond.setLabelTable( labelTable ); //ERROR
framesPerSecond.setPaintLabels(true);
En fait, Eclipse se plaint que setLabelTable veut un Dictionary et non un HashTable (j'utilise sun sdk 1.6.0_25).L'erreur est la suivante:
La méthode setLabelTable (Dictionary) dans le type JSlider n'est pas applicable pour les arguments (Hashtable)
Tous les exemples que j'ai trouvés sur Internet me disent de faire comme ça.
Alors, quel est le problème?
MODIFIER:
Ma question était erronée.C'était juste une erreur d'inclusion.Jetez un œil à ma réponse.
La solution
Comme je viens de le commenter, Dictionary est une classe de HashTable et vous pouvez mettre HashTable setLabelTabel, mais si eclipse vous montre cette erreur, nous pouvons penser à deux cas:
-
vous n'utilisez pas java.util.Hashtable
-
vous n'utilisez pas javax.swing.JSlider
Je pense que le premier est votre problème, vérifiez-le.
Autres conseils
Je ne suis pas absolument sûr, mais cela pourrait fonctionner de simplement remplacer Hashtable
par Dictionary
, ce qui est apparemment ce que la méthode veut.
Dictionary labelTable = new Dictionary();
labelTable.put(new Integer(0), new JLabel("Stop"));
labelTable.put(new Integer(FPS_MAX / 10), new JLabel("Slow"));
labelTable.put(new Integer(FPS_MAX), new JLabel("Fast"));
framesPerSecond.setLabelTabel(labelTable);
Oh ... merci à vous deux @Ninto et @Sorceror.Vous avez raison. C'était une erreur d'inclusion:
import com.sun.org.apache.xalan.internal.xsltc.runtime.Hashtable;
au lieu de:
import java.util.Hashtable;