2010-01-31 9 views
13

Je crée une interface graphique (en utilisant swing) pour une structure de poker et j'ai besoin d'un curseur pour permettre aux joueurs de choisir la taille d'un pari. Cependant le Swing JSlider ne fonctionne qu'avec des valeurs int alors que j'ai besoin de quelque chose qui peut supporter des doubles pour 1 point décimal. Y at-il des bibliothèques que je peux utiliser, ou des astuces avec le JSlider?JSlider pour les doubles

+0

http://stackoverflow.com/questions/1548606/java-link-jslider-and-jtextfield-for-float-value –

Répondre

13

Vous pouvez multiplier la valeur par 10

EDIT

Vous pouvez modifier les étiquettes affichées comme suit:

Hashtable labelTable = new Hashtable(); 
labelTable.put(new Integer(0), new JLabel("0.0")); 
labelTable.put(new Integer(5), new JLabel("0.5")); 
labelTable.put(new Integer(10), new JLabel("1.0")); 
framesPerSecond.setLabelTable(labelTable); 
+0

Comment afficher les valeurs sur les graduations en tant que doubles – Aly

+0

Vous pouvez utiliser setLabelTable pour changer la valeur composants (JLabels) utilisés pour les valeurs affichées. –

+0

J'ai oublié à ce sujet - supprimer mon message en faveur de cette solution. – aperkins

7

Un astuce vous pouvez utiliser avec JSlider est d'utiliser les unités en cents. Donc, si vous voulez que l'utilisateur sélectionne un montant compris entre 1 et 10 dollars, vous définissez en fait le JSlider entre 100 et 1000. Ensuite, vous convertissez simplement la valeur en dollars et en cents lorsque l'utilisateur sélectionne une valeur.

Vous pouvez ensuite utiliser un dictionnaire de valeurs pour spécifier quelle étiquette est affichée à n'importe quelle valeur du curseur. Utilisez la méthode setLabelTable() pour cela.

+0

Qu'en est-il de la situation où le nombre minimum doit être un double, disons 5.5, je ferais lire JLabel 5.5 et mapper l'entier 5 à ce JLabel. Mais quand j'appelle JSlider.getValue() j'obtiendra 5, et pas 5.5. Des idées sur la façon de gérer cela? – Aly

+0

La valeur minimale dans ce cas est 550. Vous mappez cela à 5.50 pour l'affichage. Lorsque vous obtenez la valeur que l'utilisateur sélectionné, il suffit de diviser par 100 pour obtenir 5.5. –

Questions connexes