style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

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..

                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*/
                e.consume();
                }

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de neko069

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.

como se parametriaza?

ya me descargue el jar, pero como se parametriza?

Imagen de Aaron

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.

Imagen de gloryx

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();
}
}
});

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">