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

Duda con el jtextfield en java netbeans!!

Estas en el tema de Duda con el jtextfield en java netbeans!! en el foro de Java en Foros del Web. Hola, tengo un problema con unos JTextFields, tengo dos los cuales llamo "text1" y "text2" y tengo una label que muestra la suma de ellos, ...
  #1 (permalink)  
Antiguo 15/03/2011, 19:39
 
Fecha de Ingreso: marzo-2011
Mensajes: 97
Antigüedad: 13 años, 1 mes
Puntos: 0
Duda con el jtextfield en java netbeans!!

Hola, tengo un problema con unos JTextFields, tengo dos los cuales llamo "text1" y "text2" y tengo una label que muestra la suma de ellos, pero esta se actualiza segun yo meta los numeros en los textfields, es decir si en text1= 1 y text2=0 label=1 si sigo y le pongo el numero 2 a text1 osea: text1=12 text2=0 label=12 y si me cambio ahora de textfield a text2 y le pongo 3 entonces: text1=12 text2=3 label=15 y si ahora pongo 4 , text1=12 text2=34 label=46 (es decir cada que le pongo un numero actualizo el label), pero tengo un gran problema, cuando borro o suprimo un carcter,
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
String suma, str=Character.toString(c);
int numero = 0, numero2 = 0;
if (!(Character.isDigit(c) || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE))) {
getToolkit().beep();
e.consume();
System.out.println("Aqui entra cuando no es un digito");
}
else{
numero=Integer.parseInt(t1bodega.getText…
numero2=Integer.parseInt(t1exhibicion.ge…
}
if((c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE))
{
numero=Integer.parseInt(t1bodega.getText…
String nuevaCadena = (t1exhibicion.getText()).substring(0, (t1exhibicion.getText()).length() - 1);
if(nuevaCadena.equals("")){nuevaCadena="…
numero2=Integer.parseInt(nuevaCadena);
}
suma=String.valueOf(numero+numero2);
t1cantidad.setText(suma);
numero=0;
numero2=0;
}
ojala puedan correr este ejemplo, y decirme que debo hacer?? ya que no me lee bien las cadenas al suprimir o deletear un numero ...ya que si le aprieto una tecla y luego le ordeno que lea lo que tiene el jtextfield, me lee lo que tiene pero aun sin lo que le meti y si borro, nose como leerla! ojala me puedan ayudar, mcuhas gracias!!!
  #2 (permalink)  
Antiguo 15/03/2011, 22:22
 
Fecha de Ingreso: marzo-2011
Ubicación: Palmira
Mensajes: 35
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Duda con el jtextfield en java netbeans!!

Hola,

ps no corrí tu ejemplo y casi no entiendo muy bien lo que sucede pero creo que puedes quitar la condición de si es un espacio o si esta borrando:

Código java:
Ver original
  1. if((c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE))
  2. {
  3. numero=Integer.parseInt(t1bodega.getText…
  4. String nuevaCadena = (t1exhibicion.getText()).substring(0, (t1exhibicion.getText()).length() - 1);
  5. if(nuevaCadena.equals("")){nuevaCadena="…
  6. numero2=Integer.parseInt(nuevaCadena);
  7. }

Ya que cuando es una de esas teclas consumes el evento en la primera condición que tienes y no deberian afectarte.

saludos.
  #3 (permalink)  
Antiguo 24/03/2011, 21:26
 
Fecha de Ingreso: marzo-2011
Mensajes: 97
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Duda con el jtextfield en java netbeans!!

solo es eso tengo dos textfields y un label, cada que pongo un numero en los textfields se suman y automaticamente debo mostrar en el label pero si lo borro ahi me muestra error!!! :D gracias!
  #4 (permalink)  
Antiguo 25/03/2011, 02:42
 
Fecha de Ingreso: febrero-2008
Ubicación: Sevilla
Mensajes: 91
Antigüedad: 16 años, 2 meses
Puntos: 15
Respuesta: Duda con el jtextfield en java netbeans!!

Yo lo haria de la siguiente manera. En el evento keyTyped, no compruebes la letra que es, simplemente traete la cadena de los cuadros de texto y te los metes en 2 stings. Luego le haces un cadena1.trim(); y =cadena2.trim(); y compruebas con un if si estan vacias. Despues, si no estan vacias, haces un try catch y dentro haces numero1=Integer.parseInt(cadena1); y en el catch capturas la NumberFormatException, de tal manera que si salta la excepcion porque no es un numero, muestres un mensaje de que el texto introducido no es numerico. Luego lo mismo para el numero 2. Tambien has de llevar una variable booleana de inicio a true que te diga si los numeros son correctos, de tal forma que si salta la excepcion en alguno de los 2 casos, te lo ponga a false.

Despues solo es poner otro if que compruebe la booleana, si es correcta te suma numero1 y numero2 y te lo pone en el label. Si no no hace nada. Ejemplo:

Código Java:
Ver original
  1. public void keyTyped(KeyEvent e) {
  2. String cadena1=textfield1.getText().trim();
  3. String cadena2=textfield2.getText().trim();
  4. Integer numero1, numero2;
  5. boolean numeroscorrectos=true;
  6.  
  7. try{
  8. numero1=Integer.parseInt(cadena1);
  9. System.out.println("El caracter introducido en la casilla 1 no es numerico");
  10. numeroscorrectos=false;
  11. }
  12.  
  13. try{
  14. numero2=Integer.parseInt(cadena2);
  15. System.out.println("El caracter introducido en la casilla 2 no es numerico");
  16. numeroscorrectos=false;
  17. }
  18.  
  19. if(numeroscorrectos){
  20. Integer suma=numero1+numero2;
  21. label.setText(Integer.toString(suma));
  22. numeroscorrectos=true;
  23. }
  24.  
  25. }
Esto cada vez que se pulse una tecla en los textFields. Espero que se entienda, un saludo!
  #5 (permalink)  
Antiguo 25/03/2011, 15:48
Avatar de jcMouse  
Fecha de Ingreso: noviembre-2009
Ubicación: Bolivia
Mensajes: 116
Antigüedad: 14 años, 4 meses
Puntos: 9
Respuesta: Duda con el jtextfield en java netbeans!!

yo lo haria de esta manera:


Utilizo tres jtextfield, ademas utilizo el evento KeyReleases y no en Typed, cada ves que se presione una tecla convierte este a numero entero, si hay un error devuelve cero ademas de que se limpia el JTextfield, osea no importa que se escriba devuelve cero

si colocamos en el JTextField1= 23 -> devuelve 23
si colocamos en el JTextField1= 23,5 -> devuelve 23
si colocamos en el JTextField1= 23abc -> devuelve 0

Código Javascript:
Ver original
  1. private void jTextField1KeyReleased(java.awt.event.KeyEvent evt) {
  2.          int suma=aNumero( jTextField1 ) + aNumero( jTextField2 );
  3.          jTextField3.setText(Integer.toString(suma));  
  4.     }
  5.  
  6.     private int aNumero(JTextField txt) {
  7.         Number a = 0;
  8.         try {
  9.             DecimalFormat formateador = new DecimalFormat("######");
  10.             a = formateador.parse(txt.getText());            
  11.         } catch (ParseException ex) {
  12.             System.out.println("devuelve '0' sino puede convertir a numero");            
  13.         } finally {            
  14.             txt.setText(a.intValue()+"");
  15.             return a.intValue();
  16.         }        
  17. }

se malo que es viernes
__________________
Problem?
Estoy aquí
Foro Code Army
  #6 (permalink)  
Antiguo 27/03/2011, 18:34
 
Fecha de Ingreso: marzo-2011
Mensajes: 97
Antigüedad: 13 años, 1 mes
Puntos: 0
Pregunta Respuesta: Duda con el jtextfield en java netbeans!!

Hola, gracias por su ayuda, probe la opcion de JaviDP y si resuelve el problema de que al borrar un dato me aparecia un error pero ahora,,,, tengo un unevo problema ... en mi label que se supone que suma los dos datos ya qe requiero esto:
text1=1 , text2=0 , label=1
text1=21, text2=0, label=21
text1=21, text2=3, label=24
Pero en vez de eso obtengo lo siguiente:
text1=1, text2=0, label=nada
text1=21, text2=0, label=1
text1=21, text2=3, label=21
Osea como que esta atrasada la cosa, jiji antes le ponia lo siguiente para que me leyera el caracter recien puesto:
numero=Integer.parseInt(t1bodega.getText()+str);
pero ahora nose, muchas gracias!
Aqui le dejo como quedo an ambos textfields (solo cambia lo de text1, y text2 :))
public void keyTyped(KeyEvent e) {

String cadena1=t1bodega.getText().trim();

String cadena2=t1exhibicion.getText().trim();

Integer numero1 = null, numero2=null;

boolean numeroscorrectos=true;



try{

numero1=Integer.parseInt(cadena1);

}catch(NumberFormatException nfe){

System.out.println("El caracter introducido en la casilla 1 no es numerico");

numeroscorrectos=false;

}



try{

numero2=Integer.parseInt(cadena2);

}catch(NumberFormatException nfe){

System.out.println("El caracter introducido en la casilla 2 no es numerico");

numeroscorrectos=false;

}

if(numeroscorrectos){

Integer suma=numero1+numero2;

t1cantidad.setText(Integer.toString(suma));
numeroscorrectos=true;

}

}

Etiquetas: jtextfield, netbeans
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 09:14.