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

Separador Decimal

Estas en el tema de Separador Decimal en el foro de Java en Foros del Web. buenas, estoy haciendo una validacion de unos jTextField y me hace falta para la entrada correcta por teclado, conocer que separador decimal esta usando el ...
  #1 (permalink)  
Antiguo 06/02/2012, 14:08
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Separador Decimal

buenas, estoy haciendo una validacion de unos jTextField y me hace falta para la entrada correcta por teclado, conocer que separador decimal esta usando el usuario, para poder habilitar el digito en la caja de texto

saludos y gracias
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #2 (permalink)  
Antiguo 07/02/2012, 08:08
Avatar de farfamorA  
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 136
Antigüedad: 13 años, 4 meses
Puntos: 24
Respuesta: Separador Decimal

¿Para qué reinventar la rueda si ya está hecha? Te recomiendo usar el JFormattedTextField que es precisamente un JTextField pero con muchísimas más opciones de personalización. Te dejo un ejemplo:

Código Java:
Ver original
  1. JFormattedTextField campoNumerico = new JFormattedTextField();
  2.            // Creamos los formateadores: formateador-por-defecto, formateador-vista y formateador-edicion
  3.            NumberFormatter formateadorPorDefecto = new NumberFormatter(new DecimalFormat("#.##"));
  4.            NumberFormatter formateadorVista = new NumberFormatter(new DecimalFormat("$ #,###.00"));
  5.            NumberFormatter formateadorEdicion = new NumberFormatter(new DecimalFormat("#.##"));
  6.            // Establecemos sus clases
  7.            formateadorPorDefecto.setValueClass(Double.class);
  8.            formateadorVista.setValueClass(Double.class);
  9.            formateadorEdicion.setValueClass(Double.class);
  10.            // Creamos y seteamos el  DefaultFormatterFactory
  11.            DefaultFormatterFactory campoNumericoFactory =
  12.                new DefaultFormatterFactory(formateadorPorDefecto,formateadorVista,formateadorEdicion);
  13.            campoNumerico.setFormatterFactory(campoNumericoFactory);

Por ejemplo, para obtener un valor numérico de un jTextField tendrías que hacer algo como:
Código Java:
Ver original
  1. try{
  2.   double valorNumerico = Double.parseDouble(jTextField.getText());
  3. if (valorNumerico >= valorMinimo && valorNumerico <= valorMaximo)
  4.   return valorNumerico;
  5. else
  6.   throw new Exception("El número está fuera del rango establecido");
  7.   //log
  8. } catch(Exception ex){
  9.   //log
  10. }
Con el jFormattedTextField es tán fácil como:
Código Java:
Ver original
  1. double valorNumérico = jFormattedTextField.getValue()

Te conmino a usar esta clase JFormattedException, fue creada para lo que tú estás buscando. Sirve además para fechas, para números de teléfono (por ejemplo si queremos que los números telefónicos tengan el siguiente formato: (+xx) xxx-xxxx), etcétera.

Te dejo este enlace:
http://www.chuidiang.com/java/ejempl...dTextField.php

Y si te va bien el inglés, pues este te será de mucha utilidad:
http://drdobbs.com/article/print?art...teSectionName=

Y cómo no, el "How to..." oficial:
http://docs.oracle.com/javase/tutori...textfield.html

Etiquetas: decimal, separador
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 07:33.