Foros del Web » Programación para mayores de 30 ;) » Java »

Cambia el punto del BloqNum por una coma

Estas en el tema de Cambia el punto del BloqNum por una coma en el foro de Java en Foros del Web. Hola, Estoy trabajando con Java Swing con un campo JTextfield, y pense en usar JFormattedTextField y utilizar NumberFormat para darle formato al campo y asegurar ...
  #1 (permalink)  
Antiguo 08/10/2006, 13:39
 
Fecha de Ingreso: octubre-2006
Mensajes: 5
Antigüedad: 17 años, 6 meses
Puntos: 0
Cambia el punto del BloqNum por una coma

Hola,
Estoy trabajando con Java Swing con un campo JTextfield, y pense en usar JFormattedTextField y utilizar NumberFormat para darle formato al campo y asegurar su validez, segun como encontre en esta pagina How to Use Formatted Text Fields (No pude incluir el vinculo)

Mi problema vino con lo siguiente. Yo ocupo un locale que utiliza la coma como separador de decimales, y el punto como separador de miles (ej; 2.345,34), lo cual me produce un problema.

A mi me interesa ingresar numeros utilizando el teclado numerico de la derecha del teclado, pero ese teclado tiene un punto, y Java lo reconoce como punto y no como separador de decimales. Entonces, dependiendo del locale seteado en el ordenador, es que si presiono las teclas

1 - punto - 2 - 3 - 4

me da como resultado
uno coma docientos treinta y cuatro

o

mil docientos treinta y cuatro

En Excel, automaticamente ese punto se entiende como separador de decimales, y se convierte en una coma si corresponde. Aca en Java no he logrado que eso ocurra.

¿Alguien tiene alguna idea de como hacerlo?. Intente seteando el locale del programa como US_EN, pero tampoco me funciono
  #2 (permalink)  
Antiguo 08/10/2006, 15:40
 
Fecha de Ingreso: agosto-2006
Mensajes: 159
Antigüedad: 17 años, 8 meses
Puntos: 4
Hola:

Aunque la respuesta es probable que se pueda mejorar:

Código:
try{
    StringBuffer str = new StringBuffer("1.234,56");
    char [] c = str.substring(0).toCharArray();
    str.delete(0,str.length());
    for(int i=0;i<c.length;i++){
        if(c[i] == '.'){
            c[i] = ',';
        }else if(c[i] == ','){
            c[i] = '.';
        }
        str.append(c[i]);
    }
    System.out.println(str.substring(0));
}catch(Exception e){};
  #3 (permalink)  
Antiguo 09/10/2006, 02:12
 
Fecha de Ingreso: octubre-2006
Mensajes: 5
Antigüedad: 17 años, 6 meses
Puntos: 0
Gracias por la respuesta.

Si bien me sirve ocupandolo justo despues de perder el foco, (pues veo que el formato de NumberFormat se aplica despues del focusLost), eso no me da mucha confianza pues no estoy seguro de que siempre vaya a ser asi (de que primero se procesa el FocusListener a fin de cambiar el punto por coma, y luego el NumberFormat del textField).
  #4 (permalink)  
Antiguo 09/10/2006, 02:22
 
Fecha de Ingreso: octubre-2006
Mensajes: 5
Antigüedad: 17 años, 6 meses
Puntos: 0
Aps, y se me olvido que asi solo sirve si unicamente utilizo el separador de decimal, a modo de realizar una unica conversion (de punto a coma), pues si tuviera puntos y coma, cada vez que pierda el foco, aunque no haya ingresado nada en el textField, cambiara los puntos por comas y comas por puntos :S
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:20.