Consulta sobre video 75 curso de java

  • Este debate tiene 4 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 4 años por Cristian.
Viendo 5 entradas - de la 1 a la 5 (de un total de 5)
  • Autor
    Entradas
  • #11479

    Cristian
    Participante

    Hola a todos y ante todo gracias por tu trabajo.

    Mi consulta radica en el video74 del curso de java desde cero, donde Juan hace el uso de clase internas para poder usar las vbles de JTextfield dentro de la clase padre. En mi caso no quise realizar clases internas, por lo que quedaria como otra clase comun.

    Mi duda es que, yo cree una instancia de la clase que contiene los JTextfield y en ella quise guardar el texto de dicho campo y me da error…alguien mas idoneo me podra orientar donde cometo el error o como se haria el ejemplo sin usar clases internas….

    El programa inicia bien, pero cdo posiciono el mouse en el campo de texto «texto1» ahi se va a error, es como que no reconoce esa instruccion…

    Parte del codigo:

    class EventoOyente implements FocusListener {

    @Override

    public void focusGained(FocusEvent e) {  }

    @Override

    public void focusLost(FocusEvent e) {

     

    laminaEventos campo = new laminaEventos();// instancio la clase que contiene los campos de texto

    String email = campo.texto1.getText(); // aca es donde da el error cdo lo ejecuto, cdo me                                                                                                           // posiciono en este jtextfield me da error

    Boolean comprobacion = false;

    for (int i = 0; i < email.length(); i++) {

    if (email.charAt(i) == ‘@’) {

    comprobacion = true;

    } else {

    comprobacion = false;

    }

    }

    if (comprobacion) {

    System.out.println(«Es correcto»);

    } else {

    System.out.println(«Es incorrecto»);

    }  }}

     

    #11480

    FrankMegia
    Participante

    Hola Cristian. Por lo que veo, tu problema está en cómo obtener el texto del campo, utilizando una clase externa que implemente FocusListener. No te voy a dar la solución, pero si una pista que te ayudará. Mira en la API la clase FocusEvent, y en especial, el método getSource().  Con un cast y ese método, podrás solucionarlo tu mismo. Espero que te ayude.

    Un saludo.

     

    #11481

    Cristian
    Participante

    Hola Frank, ante todo gracias por tomarte la molestia de responder. Solucione como me dijiste pero usando

    «String email = e.getSource().toString();»  y todo corre perfecto. Ahora, si un dato es primitivo (string) y otro del tipo objeto(e.getsource), aqui me confundo… Luego pq el instanciamiento presentado en un principio no funciona? Ante todo, no quiero la solucion, sino la explicacion o razonamiento de porque no funciona y como harias el casting…

    Saludos

    #11483

    FrankMegia
    Participante

    Hola Cristian. Verás, e.getSource() devuelve el Object(genérico) que lanzó el evento y tu sabes que ese «Objeto» es un JTextField, así que necesitas hacer el cast a un JTextField. Una vez que ya lo tienes, ya puedes acceder a los métodos de ese JTextField, es decir, el método getText().

    e,getSource().toString() lo único que hace es devolverte una cadena de texto con el objeto que lanza el evento, de forma legible para nosotros, pero no te da el contenido del mismo, porque aún no sabe qué es. Primero el cast correcto y luego obtienes el texto.

    Ya me contarás. Un saludo.

    Por cierto String no es un dato primitivo, es una clase especial, aunque en otros lenguajes si se considera como primitivo 😉

    #11484

    Cristian
    Participante

    Ok. Mira lo hice del modo que recomendaste y funciono:

    ——————————————–

    JTextField texto = (JTextField)e.getSource();

    String email = texto.getText();

    ——————————————–

    Agradezco nuevamente tu tiempo y muchas gracias.

    Saludos cordiales!

    Cristian

Viendo 5 entradas - de la 1 a la 5 (de un total de 5)
  • Debes estar registrado para responder a este debate.