JTextField para numero decimales
Bueno, aqui ando otra vez en el foro solicitando ayuda, este casi es que estoy construyendo un metodo para numeros decimales, en este caso, solo permite numeros y el caracter (.)
mi problema es que no logro limitar el caracter (.) una sola vez, es decir, una vez que se pinte el (.) no se pueda ingresar nuevamente..
- Inicie sesión o regístrese para enviar comentarios
Tendrías que analizar todo la
Tendrías que analizar todo la cadena introducida en tu cadena de texto, checar si existe más de una vez el punto, borrar la última vez que lo pusiste, y sustituir la cadena original con tu cadena modificada.
y por que mejor no un JFormattedTextField...
Checate este link...
O tambien puedes usar NumericTextField que ya hace lo que pide
como se parametriaza?
ya me descargue el jar, pero como se parametriza?
Si lo deseas hacer desde código
El JFormattedTextField es una buena opción :D, pero si deseas hacerlo desde código fuente podrías realizar una comparación de la cadena en dónde estan los números y verificar si el "." punto esta en ella. Si es así desechas el caracter de lo contrario permites su captura.
La función: int indexOf(int ch) puede ser de utilidad. Si encuentra el caracter te devuelve la posición de la cadena en la que se encuentra de lo contrario te regresa un -1
char caracter = e.getKeyChar();
if(((caracter < '0') || (caracter > '9')) && (caracter != KeyEvent.VK_BACK_SPACE)
&& (caracter !='.')){
/* lo que deseo colocar aqui es si ya se pulso el caracter (.) el mismo no se pueda repetir*/
si( cadena no contiene el punto){
tomar el carácter
}
e.consume();
}
Saludos y buen día.
Desde código
txtCampo.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
if (((c < '0') || (c > '9')) && (c != KeyEvent.VK_BACK_SPACE)
&& (c != '.')) {
e.consume();
}
if (c == '.' && txtCodigo.getText().contains(".")) {
e.consume();
}
}
});