restrigir JtextField para solo numeros
quiero saber como hagó pa que un JTexfield solo me RECIBA numeros, osea cuando oprima una letra u otro caracter no se pinte..... he leido acerca de una clase que se llama JTextFormated... o algo ai creo que es para dar formato(mascara) a los JTextFields........ yo uso el netBeans4.0...
Para que sólo permita escribir números en el jTextField:
jTextField.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
if (!((Character.isDigit(c) ||
(c == KeyEvent.VK_BACK_SPACE) ||
(c == KeyEvent.VK_DELETE)))){
getToolkit().beep();
e.consume();
}
}
});
Para que sólo permita escribir n caracteres en el jTextField (la n que pasamos como segundo parametro a limitador de caracteres es el número limite deseado):
jTextField4.setDocument(new LimitadorCaracteres(jTextField, n));
En donde la clase Limitador de caracteres es:
public class LimitadorCaracteres extends PlainDocument {
/**
* El editor del que estamos limitando caracteres.
*/
private JTextField editor;
/**
* Número máximo de caracteres que deseamos en el editor.
*/
private int numeroMaximoCaracteres;
/**
* Crea una instancia de LimitadorCaracteres.
*
* @param editor Editor en el que se quieren limitar los caracteres.
* @param numeroMaximoCaracteres Número máximo de caracteres que queremos
* en el editor.
*/
public LimitadorCaracteres(JTextField editor, int numeroMaximoCaracteres)
{
this.editor=editor;
this.numeroMaximoCaracteres=numeroMaximoCaracteres;
}
/**
* Método al que llama el editor cada vez que se intenta insertar caracteres.
* El método comprueba que no se sobrepasa el lÃmite. Si es asÃ, llama al
* método de la clase padre para que se inserten los caracteres. Si se
* sobrepasa el lÃmite, retorna sin hacer nada.
*/
public void insertString(int arg0, String arg1, AttributeSet arg2) throws BadLocationException
{
if ((editor.getText().length()+arg1.length())>this.numeroMaximoCaracteres){
// editor.setFocusable(false);// pasa al siguiente text field
return ;
}
super.insertString(arg0, arg1, arg2);
}
}
jTextField.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
if (!((Character.isDigit(c) ||
(c == KeyEvent.VK_BACK_SPACE) ||
(c == KeyEvent.VK_DELETE)))){
getToolkit().beep();
e.consume();
}
}
});
Para que sólo permita escribir n caracteres en el jTextField (la n que pasamos como segundo parametro a limitador de caracteres es el número limite deseado):
jTextField4.setDocument(new LimitadorCaracteres(jTextField, n));
En donde la clase Limitador de caracteres es:
public class LimitadorCaracteres extends PlainDocument {
/**
* El editor del que estamos limitando caracteres.
*/
private JTextField editor;
/**
* Número máximo de caracteres que deseamos en el editor.
*/
private int numeroMaximoCaracteres;
/**
* Crea una instancia de LimitadorCaracteres.
*
* @param editor Editor en el que se quieren limitar los caracteres.
* @param numeroMaximoCaracteres Número máximo de caracteres que queremos
* en el editor.
*/
public LimitadorCaracteres(JTextField editor, int numeroMaximoCaracteres)
{
this.editor=editor;
this.numeroMaximoCaracteres=numeroMaximoCaracteres;
}
/**
* Método al que llama el editor cada vez que se intenta insertar caracteres.
* El método comprueba que no se sobrepasa el lÃmite. Si es asÃ, llama al
* método de la clase padre para que se inserten los caracteres. Si se
* sobrepasa el lÃmite, retorna sin hacer nada.
*/
public void insertString(int arg0, String arg1, AttributeSet arg2) throws BadLocationException
{
if ((editor.getText().length()+arg1.length())>this.numeroMaximoCaracteres){
// editor.setFocusable(false);// pasa al siguiente text field
return ;
}
super.insertString(arg0, arg1, arg2);
}
}
Hola:
Tienes muchas posibilidades:
La más sencilla es usar un JFormattedTextField al que pases un MaskFormatter en el constructor que sólo admita números. Te lo pongo un poco de memoria, pero puede ser algo como esto
MaskFormatter mascara = new MaskFormatter("0123456789"); // Debes añadir ademas los signos de puntuacion y signos si quieres.
JFormatedTextField editor = new JFormattedTextField(mascara);
En http://chuidiang.blogspot.com/2005/04/validar-entradas-en-un-jtextfield.html tienes una lista con otras posibilidades y un link a un sitio donde lo explican con más detalle.
Se bueno.
Tienes muchas posibilidades:
La más sencilla es usar un JFormattedTextField al que pases un MaskFormatter en el constructor que sólo admita números. Te lo pongo un poco de memoria, pero puede ser algo como esto
MaskFormatter mascara = new MaskFormatter("0123456789"); // Debes añadir ademas los signos de puntuacion y signos si quieres.
JFormatedTextField editor = new JFormattedTextField(mascara);
En http://chuidiang.blogspot.com/2005/04/validar-entradas-en-un-jtextfield.html tienes una lista con otras posibilidades y un link a un sitio donde lo explican con más detalle.
Se bueno.