¿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 originalJFormattedTextField campoNumerico = new JFormattedTextField();
// Creamos los formateadores: formateador-por-defecto, formateador-vista y formateador-edicion
NumberFormatter formateadorPorDefecto
= new NumberFormatter
(new DecimalFormat("#.##")); NumberFormatter formateadorVista
= new NumberFormatter
(new DecimalFormat("$ #,###.00")); NumberFormatter formateadorEdicion
= new NumberFormatter
(new DecimalFormat("#.##")); // Establecemos sus clases
formateadorPorDefecto.
setValueClass(Double.
class); formateadorVista.
setValueClass(Double.
class); formateadorEdicion.
setValueClass(Double.
class); // Creamos y seteamos el DefaultFormatterFactory
DefaultFormatterFactory campoNumericoFactory =
new DefaultFormatterFactory(formateadorPorDefecto,formateadorVista,formateadorEdicion);
campoNumerico.setFormatterFactory(campoNumericoFactory);
Por ejemplo, para obtener un valor numérico de un jTextField tendrías que hacer algo como:
Código Java:
Ver originaltry{
double valorNumerico
= Double.
parseDouble(jTextField.
getText()); if (valorNumerico >= valorMinimo && valorNumerico <= valorMaximo)
return valorNumerico;
else
throw new Exception("El número está fuera del rango establecido"); //log
//log
}
Con el jFormattedTextField es tán fácil como:
Código Java:
Ver originaldouble 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