Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > JFormattedTextfield con NumberFormatter y NULL SIN Signo

que tal compañeros, les tengo un demasiado humilde aporte que me vi en la necesidad de investigar pero que sin embargo me surgio otra cuestion que me esta matando

el aporte
es para que en un JFormattedtextField con un NumberFormatter te permita cambiar de componente con un valor nulo, es decir, dejandolo vacio y que sea "valido". si lo intentan tal cual lo arrastas y sueltas en netbeans una vez que que le introduces un valor no te deja dejarlo en blanco. para esto debemos crear una subclase de NumberFormatter. este ejemplo es para numeros enteros, sin separadores y que admita null o dejarlo en blanco.


private class NullIntegerOnlyNumberFormatter extends NumberFormatter
{
private NullIntegerOnlyNumberFormatter()
{
super();
((NumberFormat)this.getFormat()).setParseIntegerOnly(true);
((NumberFormat)this.getFormat()).setGroupingUsed(false);
this.setAllowsInvalid(false);
}
public Object stringToValue(String text) throws ParseException
{
if (text == null || text.length() == 0) {
return null;
}
return super.stringToValue(text);
}
}
}

ahora bien, el JFTF ya debiera funcionar bien, pero que pasa si le oprimes la tecla "-". se pone el signo. y YO NO QUIERO QUE EL USUARIO PUEDA PONER SIGNO EN EL CAMPO. o en su defecto que se escriba pero que se quite de inmediato.
como lo puedo hacer sin instalarle un input verifier??
modificando por ejemplo la clase number formatter o algo asi o sobreescribiendo algun otro metodo como el valueToString o alguna otra sugerencia y como se haria?
les agradezco la atencion de antemano.

enero 11, 2012 | Registered Commenterjavier-tf

o si no hay forma podrian apoyarme con el metodo con input verifier porfavor?

enero 11, 2012 | Registered Commenterjavier-tf

al final lo termine resolviendo con un keyListener
asi

jFTFLada.addKeyListener(new KeyAdapter()
{
@Override
public void keyTyped(KeyEvent e)
{
char caracter = e.getKeyChar();

// Verificar si la tecla pulsada no es un digito
if(caracter=='-')
e.consume(); // ignorar el evento de teclado
}
});

y ya quedo bien validado el campo para puro numero, sin restriccion de longitud
pero me gustaria saber otra forma mas ligera de hacerlo

enero 12, 2012 | Registered Commenterjavier-tf