Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/02/2012, 08:08
Avatar de farfamorA
farfamorA
 
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 136
Antigüedad: 14 años, 1 mes
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