Programación en castellano
Inicio > Foros > Java (básico) > restrigir JtextField para solo numeros
-Foros de debate

Java (básico)
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

restrigir JtextField para solo numeros
Enviado por locojava2005 el día 15 de julio de 2005

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...

 
Re: restrigir JtextField para solo numeros
Enviado por chuidiang el día 16 de julio de 2005

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-entr... tienes una lista con otras posibilidades y un link a un sitio donde lo explican con más detalle.

Se bueno.

 
Re: Re: restrigir JtextField para solo numeros
Enviado por lespin el día 16 de julio de 2005

Hola que tal!
Quisiera saber como validar el JTextField para que solo me ingresen n caracteres??

 
Re: Re: Re: restrigir JtextField para solo numeros
Enviado por rubece el día 16 de julio de 2005

Para que tenga n caracteres la mascara tiene que ser un string con n asteriscos. O sea, algo así:

MaskFormatter mascara1 = new MaskFormatter("****");
JFormattedTextField texto1 = new JFormattedTextField(mascara1);

texto1 solo podrá tener 4 caracteres

MaskFormatter mascara2 = new MaskFormatter("********");
JFormattedTextField texto2 = new JFormattedTextField(mascara2);

texto2 acepta 8 caracteres

Para que acepte solo caracteres habrá que poner el cuadradrillo (#) en vez de asterisco:

MaskFormatter mascara3 = new MaskFormatter("##########");
JFormattedTextField texto3 = new JFormattedTextField(mascara3);

texto3 solo acepta número de hasta 10 cifras

Bueno eso es todo. Que te vaya bien. Hasta luego.

 

Re: Re: Re: restrigir JtextField para solo numeros
Enviado por chuidiang el día 5 de septiembre de 2005

Hola:

En http://members.lycos.co.uk/chuidiang/ejemplos/JTex... tienes un ejemplo de cómo hacerlo.

Se bueno.

 
Re: Re: Re: Re: restrigir JtextField para solo numeros
Enviado por dayro el día 19 de noviembre de 2005

import javax.swing.text.*;
import java.awt.event.KeyEvent;

public class JTextFieldFilter extends PlainDocument {

public static final String LOWERCASE = \"abcdefghijklmnopqrstuvwxyz\";
public static final String UPPERCASE = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";
public static final String ALPHA = LOWERCASE + UPPERCASE;

public static final String NUMERIC = \"0123456789\";
public static final String FLOAT = NUMERIC + \".\";

public static final String SPECIAL = \"@#$%&^*()-\";

public static final String ALPHA_NUMERIC = ALPHA + NUMERIC;
public static final String ALPHA_NUMERIC_SIN_ESPACIOS = ALPHA + NUMERIC +\".\";
public static final String ALPHA_NUMERIC_ESPECIALES = ALPHA + NUMERIC + SPECIAL;

protected String acceptedChars = null;
protected boolean negativeAccepted = false;
protected boolean especialAccepted = false;

public JTextFieldFilter() {
this(ALPHA_NUMERIC);
}

public JTextFieldFilter(String acceptedchars) {
acceptedChars = acceptedchars;
if((acceptedChars.equals(ALPHA_NUMERIC))){
acceptedChars+=(char)KeyEvent.VK_SPACE;
acceptedChars+=(char)KeyEvent.VK_COMMA;
acceptedChars+=String.valueOf(\"#\");
acceptedChars+=String.valueOf(\"@\");
acceptedChars+=String.valueOf(\".\");
}
}

public void setNegativeAccepted(boolean negativeaccepted) {
if (acceptedChars.equals(NUMERIC) || acceptedChars.equals(FLOAT) ||
acceptedChars.equals(ALPHA_NUMERIC)){
negativeAccepted = negativeaccepted;
acceptedChars += \"-\";
}
}

public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException {
if (str == null) return;

if (acceptedChars.equals(UPPERCASE))
str = str.toUpperCase();
else if (acceptedChars.equals(LOWERCASE))
str = str.toLowerCase();


for (int i=0; i < str.length(); i++) {
if (acceptedChars.indexOf(str.valueOf(str.charAt(i))) == -1)
return;
}

if (acceptedChars.equals(FLOAT) || (acceptedChars.equals(FLOAT + \"-\") && negativeAccepted)) {
if (str.indexOf(\".\") != -1) {
if (getText(0, getLength()).indexOf(\".\") != -1) {
return;
}
}
}

if (negativeAccepted && str.indexOf(\"-\") != -1) {
if (str.indexOf(\"-\") != 0 || offset != 0 ) {
return;
}
}
super.insertString(offset, str, attr);
}
}

 
Re: Re: Re: Re: Re: restrigir JtextField para solo numeros
Enviado por beto el día 29 de junio de 2006

Este ejemplo es buenisimo pero para el control del tamaño seria bueno implementar la idea inicial que tuviste

Te felicito !!

 
Re: Re: Re: Re: Re: Re: restrigir JtextField para solo numeros
Enviado por mimi el día 23 de mayo de 2008

JTextField.addKeyListener(new KeyAdapter() {
public void keyTyped (KeyEvent e){
char caracter = e.getKeyChar();
// Verificar si la tecla pulsada no es un digito
if(((caracter < '0') ||
(caracter > '9')) &&
(caracter != KeyEvent.VK_BACK_SPACE))
{
e.consume(); // ignorar el evento de teclado
}
}
});

 
sudoku en java(validaciones en lkas filas y las columnas)
Enviado por joand zerpa el día 23 de junio de 2008

hoal mimi como estas,preciosa estoy un poco fregado porque me mandaron a hacer el famoso sudoku, aunque ya tengo la parte grafica me faltan las validaciones y que no contegan caracteres a la hora de ingresar el numero, y que solo tome un solo numero, pero el problema esta es que lo mandaron a hecer con botones,quieres ayudarme

 







Re: restrigir JtextField para solo numeros
Enviado por ironFinger el día 27 de mayo de 2008

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);
}



}

 


Tienda
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados