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

validar lo escrito en jtextfield

Estas en el tema de validar lo escrito en jtextfield en el foro de Java en Foros del Web. Hola, tengo una ventana donde hay una seria de campos que rellenar (jtextfield) y que luego guardo los datos en una bbdd. Me gustaria saber ...
  #1 (permalink)  
Antiguo 06/08/2010, 09:57
 
Fecha de Ingreso: junio-2010
Mensajes: 44
Antigüedad: 13 años, 8 meses
Puntos: 0
validar lo escrito en jtextfield

Hola,

tengo una ventana donde hay una seria de campos que rellenar (jtextfield) y que luego guardo los datos en una bbdd.

Me gustaria saber como puedo hacer para que al darle a aceptar( o simplemente al cambiar de jtextfield) me avise de que lo escrito esta mal. Por ejemplo, que en un campo donde haya que meter un entero, se escriba un string... Y asi el usuario pueda cambiar lo escrito.

Tambien me gustaria saber como puedo hacer, ala hora de escribir en una base de datos, que me avise tambien de un error cuando ya exista una clave primaria con ese nombre.
Me explico. Tengo una tabla, y tengo una fila de datos con su campo "id" como clave primaria y valor "1" por ejemplo. Pues quiero que en la aplicacion, al rellenar los datos, si se crea el campo id con un "1", pues que avise con un aviso de que no puede ser... Lo que necesito controlar es saber todos los valores de clave primeria de la tabla para luego compararlos con lo introducido..pero no se como. Es que sino, me da error al escribir en la base de datos, logicamente.

gracias
  #2 (permalink)  
Antiguo 07/08/2010, 01:01
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 5 meses
Puntos: 454
Respuesta: validar lo escrito en jtextfield

Para revisar el contenido del JTextField, añádele un addFocusListener() y el losingFocus() comprueba que el contenido del JTextField es válido. Tampoco estaría de más un addActionListener() para que salte si se pulsa <intro> en el jtextfield.

La clave primaria no debería ponerla el usuario, debería ser algo transparente para el usuario. De todas formas, si quieres que la ponga el usuario, no te queda más remedio que hacer la inserción y capturar la excepción que salta para mostrar el aviso al usuario. O bien antes de hacer la inserción, hacer un select a la base de datos para saber si ese id existe ya o no.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 07/08/2010, 02:14
 
Fecha de Ingreso: junio-2010
Mensajes: 44
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: validar lo escrito en jtextfield

Gracias, probare a poner lo que me dices para los jtextfield.

En cuanto a la Clave Primaria...tengo una tabla de personas y la CP es un numero de licencia, y cuando en la aplicacion alguien añade una nueva persona, tiene que introducir de nº de l¡cencia y claro, se puede equivocar e introducir uno que ya exista.
Intentare hacer un select para ver los valores que hay. Ya te comento cuando lo consiga o si tengo mas dudas.

un saludo
  #4 (permalink)  
Antiguo 07/08/2010, 06:01
 
Fecha de Ingreso: junio-2010
Mensajes: 44
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: validar lo escrito en jtextfield

Cita:
Iniciado por chuidiang Ver Mensaje
Para revisar el contenido del JTextField, añádele un addFocusListener() y el losingFocus() comprueba que el contenido del JTextField es válido. Tampoco estaría de más un addActionListener() para que salte si se pulsa <intro> en el jtextfield.

Me podrías echar una mano sobre los addFocusListenet? porque estoy buscando informacion y como tiene que ver con metodos de otras clases ya supuestamente implementadas...y me estoy volviendo un poco loco.

Mediante la clase:

Cita:
public class LimitadorDeDocumento extends DefaultStyledDocument {
int caracteresMaximos;

public LimitadorDeDocumento( int caracteresMaximos ) {
this.caracteresMaximos = caracteresMaximos;
}

@Override
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if ( str.indexOf("?") == -1 && str.indexOf("?") == -1 && (getLength() + str.length()) <= caracteresMaximos)
super.insertString(offs, str, a);
else
Toolkit.getDefaultToolkit().beep();
}

}
He conseguido limitar los jtextfield al numero de caracteres que yo quiera llamando al metodo asi:

Cita:
LimitadorDeDocumento limitador = new LimitadorDeDocumento(4); //limita a 4 caracteres
jTextField1.setDocument(limitador);

Pero respecto a lo otro, no me entero muy bien de como hacerlo :(
  #5 (permalink)  
Antiguo 07/08/2010, 10:24
Avatar de francopai  
Fecha de Ingreso: agosto-2008
Mensajes: 42
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: validar lo escrito en jtextfield

Con respecto a las claves primarias, NO deberia ser el campo num de licencia como comentas, sino un "autonumerico", osea un simple contador para identificar cada registro, de esta manera la BD queda mas optima y puedes agregar campos o quitar, a tu gusto sin depender del campo q va a servir para identificar.

Luego, por lo del control de entrada de datos del usuario en una interfaz grafica, te recomiendo usar la clase JFormattedTextField y luego solo modificas el atributo FormatterFactory, si estas usando NetBeans, esto que te digo lo haces con un par de clicks simplemente.

Espero q te sirva la info, saludos
  #6 (permalink)  
Antiguo 08/08/2010, 04:55
 
Fecha de Ingreso: junio-2010
Mensajes: 44
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: validar lo escrito en jtextfield

Cita:
Iniciado por francopai Ver Mensaje
Con respecto a las claves primarias, NO deberia ser el campo num de licencia como comentas, sino un "autonumerico", osea un simple contador para identificar cada registro, de esta manera la BD queda mas optima y puedes agregar campos o quitar, a tu gusto sin depender del campo q va a servir para identificar.

Luego, por lo del control de entrada de datos del usuario en una interfaz grafica, te recomiendo usar la clase JFormattedTextField y luego solo modificas el atributo FormatterFactory, si estas usando NetBeans, esto que te digo lo haces con un par de clicks simplemente.

Espero q te sirva la info, saludos
Muchas gracias! Perfecta y sencilla solucion la de JFormattedTextField para poner solo enteros. En cuanto a lo de la bb.dd lo cambiare como me habeis dicho.

Voy a aprovechar este post, para no abrir otro, para preguntar una duda, y sino sabeis como hacerlo, pues ya abrire un hilo nuevo.

Intentare ser breve y claro. Tengo una tabla con personas y otra tabla con Torneos. Ambas tablas tienen un idP y idT que los identifica. En este caso seran las claves primarias de cada tabla respectivamente.
En mi aplicacion quiero seleccionar un Torneo al darle a un boton aceptar. Luego, desde otra ventana, con una lista de personas, ir añadiendolas a dicho torneo.

Para eso tengo otra tabla que se llama PARTICIPA y tiene como Claves primarias el idP y el idT conjuntamente. Esto es asi para poder tener todos los participantes de un torneo de forma que no se pueda repetir una misma convinacion, es decir, que hayan 2 nombres en el mismo torneo.

El problema esta que al "seleccionar" un torneo en mi aplicacion, quiero guardar los datos en la tabla participa y luego cuando eliga el participante añadirlo al torneo, pero al escribir en PARTICIPA al seleccionar un torneo me da error porque logicamente me falta escrirbi un valor en idP, puesto que al ser CP no puede ser null....

Como puedo hacer la relacion o la escritura en la tabla?
Espero haberme explicado.

Un saludo

Etiquetas: escrito, jtextfield
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 04:49.