problème avec la méthode setLabelTable pour personnaliser les étiquettes JSlider

StackOverflow https://stackoverflow.com/questions/6363442

  •  28-10-2019
  •  | 
  •  

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.

Était-ce utile?

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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top