2010-01-31 16 views
13

Estoy haciendo una GUI (usando swing) para una estructura de póquer y necesito algún tipo de control deslizante para permitir a los jugadores seleccionar un tamaño de apuesta. Sin embargo, el Swing JSlider solo funciona con valores int mientras que yo necesito algo que pueda soportar dobles para 1 punto decimal. ¿Hay alguna biblioteca que pueda usar o trucos con el JSlider?JSlider para dobles

+0

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

Respuesta

13

Usted puede multiplicar el valor en 10

EDITAR

Puede cambiar las etiquetas que se muestran de la siguiente manera:

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

cómo muestro valores en los ticks como dobles – Aly

+0

Puede usar setLabelTable para cambiar el componentes (JLabels) usados ​​para los valores mostrados. –

+0

Me olvidé de eso, borré mi publicación a favor de esa solución. – aperkins

7

Una truco puede utilizar con JSlider es el uso de las unidades en centavos. Por lo tanto, si desea que el usuario seleccione una cantidad entre 1 y 10 dólares, en realidad configura JSlider entre 100 y 1000. Luego, simplemente convierta el valor a dólares y centavos cuando el usuario seleccione un valor.

Puede utilizar un diccionario de valores para especificar qué etiqueta se muestra con cualquier valor en el control deslizante. Use el método setLabelTable() para esto.

+0

¿Qué pasa con la situación en la que el número mínimo debe ser un doble, digamos que 5.5, haría que el JLabel lea 5.5 y asigne el número entero 5 a este JLabel. Pero cuando llamo a JSlider.getValue() obtendré 5, y no 5.5. ¿Alguna idea sobre cómo lidiar con esto? – Aly

+0

El valor mínimo en este caso es 550. Asigna esto a 5.50 para mostrar. Cuando obtiene el valor que el usuario seleccionó, simplemente divida por 100 para obtener 5.5. –