2011-06-23 10 views
9

Tengo un Jspinner que puede variar de minimum a maximum en pasos de 0.1. Esto está funcionando perfectamente bien. Ahora, configuré el editor de JSpinner como NumberEditor ya que el usuario puede editar el cuadro de texto y solo quiero valores numéricos. Esto también está funcionando, es lo que el usuario puede ingresar, el editor me da solo los números en el editor cuando obtengo el valor usando mySpinner.getValue().toString();. Ahora conos el problema. Quiero que el cuadro de texto acepte solo valores numéricos y .(decimal point), es decir, si el usuario intenta ingresar algo aparte de 0-9 y ., no debe hacer eco en el cuadro de texto.Make JSpinner completamente numérico

JSpinner mySpinner = new JSpinner(); 
mySpinner.setModel(new SpinnerNumberModel(default,minimum,maximum,0.1)); 
mySpinner.setEditor(new JSpinner.NumberEditor(mySpinner,"##.#")); 

¿Alguien me puede ayudar con esto. Gracias :)

+0

lees mis comentarios a tu publicación de ayer – mKorbel

+0

ya, lo leí, puedo incrementar y disminuir en pasos en '0.1', ese problema fue resuelto. Gracias :) – Balanivash

Respuesta

24

Usted podría intentar setAllowsInvalid(false) de la siguiente manera:

JFormattedTextField txt = ((JSpinner.NumberEditor) mySpinner.getEditor()).getTextField(); 
((NumberFormatter) txt.getFormatter()).setAllowsInvalid(false); 

Al establecer esta propiedad, el JSpinner va a mostrar los valores sólo son válidos en el campo y hace caso omiso de todos los demás valores introducidos por el usuario. Además, el usuario no podrá eliminar el valor completo ingresado en el Jspinner, es decir, si el usuario intenta seleccionar el valor completo y eliminarlo no será permitido. El usuario puede editar el campo solo con un valor válido de otro modo, parecerá que no se puede editar.

+0

Entonces, después de hacer esto, ¿debería hacer algo para vincular esto con la caja de prueba de 'JSpinner'? – Balanivash

+0

no. no hay nada más que hacer. –

+0

Me gusta esto no me permite ingresar caracteres, pero el problema es que esto no me permite ingresar '.' también, que necesito, y no puedo borrar el campo, requiere al menos un número en él todo el tiempo, es esto una propiedad de 'JFormattedTextField' – Balanivash