Actualizacion de componentes desde un JInternalFrame a un IFrame principal...

Hola amigos los saludos... y vengo hasta aki xq por medio de su foro me saque muchas dudas...
Mi problema es el siguiente...tengo un JFrame q es el metodo principal, y tengo un JInternalFrame q es donde se cargan el "uss y el pass" para el logueo...

dentro del JFrame tengo 2 Jpanels... (el primer panel) solo tiene un Jlabel con .setText("invitado"), y (segundo)uno para desplegar el JInternalFrame de logueo... mi pregunta es la siguiente... cuando me logueo realiza la coneccion a la base de datos, busca al usuario lo encuentra hasta ahi todo perfecto... lo q no puedo hacer es q aparezca en el JLabel del primer panel el nombre del usuario q se loguea... es decir q cambie el setText("invitado") con el setText(usuLog) donde usuLog es el parametro q paso del usuario logueado... si bien... a traves del System.out.println("este es el usurio "+usuLog) me muestra el dato del usuario... en la interfaz no se refleja... ni aparece en el Jlabel... sigue el setText("invitado")

use repaint() , invalidate(), validate(), updateUI(); y nada... no puedo actualiza el JFrame principal...

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Atlas

Comentarito

envio un comentario a los programadores acerca de mi pedido, como decimos aki "NO SABE... NO DICE NADA" ... buee grax de todos modos x lo menos por haberse tomado el atrevimiento a leerlo... saludos a todos.

Imagen de rugi

Hombre Atlas..... La

Hombre Atlas.....
La participación en este foro es voluntaria ;)

Sobre lo que poner.... es raro que no te haya funcionado el repaint, sobre que componente invocaste el método... sobre el label?
sobre su container? sobre el frame?

        jLabel1.updateUI();
        jLabel1.repaint();    

Saludos!!!

---
RuGI

Imagen de Atlas

Este es el codigo

//////////////////////////////////////////////////////////////////////
// CLASE DE LA VENTANA PRINCIPAL
//////////////////////////////////////////////////////////////////////
package prestamos;
import javax.swing.*;

public class VentanaPrincipal extends JFrame{
     public VentanaPrincipal() {
      .......
     }

////////////////////////////////////////////////////////////////////
/*Mando a llamar al JInternalFrame*/
///////////////////////////////////////////////////////////////////
private void jMenuItemLogueoActionPerformed(ActionEvent evt) {                                                
        loguin log = new loguin();
        this.escritorio.add(log);
        log.show();
}
////////////////////////////////////////////////////////////////////
/*Metodo para modificar el label*/
///////////////////////////////////////////////////////////////////
public void modificarLabel(){
        jLabel2.setText(usuario.getMiLabel());
        String usu1= jLabel2.getText();
        jLabel2.updateUI();
        jLabel2.repaint();

       /*Incluso probe con esto y nada
       escritorioLoguin.updateUI();
        escritorioLoguin.repaint();  */

        System.out.println("este es el logueado " +usu1); /*Si muestra al usuario x consola*/
}      

public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run(){
                new VentanaPrincipal().setVisible(true);
            }
        });
    }

    public javax.swing.JDesktopPane escritorio; // donde se cargan los JInternalFrame
    public static javax.swing.JPanel escritorioLoguin; // donde se contiene el JLabel1
    public static javax.swing.JLabel jLabel1; //JLabel1.setText("invitado")
}

//////////////////////////////////////////////////////////////////
// CLASE DE LA VENTANA INTERNA
//////////////////////////////////////////////////////////////////

import javax.swing.*;

public class loguin extends JInternalFrame{
   
    VentanaPrincipal venPrin = new VentanaPrincipal();
   
    public loguin() {
        initComponents();
    }
private void jButtonLogueoUsuarioIniciarActionPerformed(ActionEvent evt) {                                                            
    String usuLog=jTextFieldLogueoUsuarioNombre.getText();
   /*
   hago toda las consultas y lo encuentra
  */

    JOptionPane.showMessageDialog(null, "Nueva Usuario: "+cadena1);
    usuario.setMiLabel(usuLog); // le asigno a otra clase usuario el valor del usuLog
     venPrin.modificarLabel(); //  llamo al metodo de ventana Principal
}
}

Y no pasa nada... me podrian ayudar x favor amigos... GRACIAS DESDE YA!!!!!

A ver a ver a ver... Una

A ver a ver a ver...

Una parte importante de escribir código es hacerlo legible. Es bien sabido que a la computadora ejecuta programas que compilan, pero el ser humano necesita poder leerlos.

Este comentario te lo hago porque ordenando más tu código podrás encontrar el error tu mismo, pero siempre ayuda que alguien te diga como hacerlo.

Entonces ahi te va:

1.- En Java ( por convención ) las clases comienzan con mayúsculas, aunque puedan ir con minúsculas es más fácil detectar así un método de un constructor:

class miiClase {
    public miClase() {
    }
    public void miOtraClase() {
   }
}

vs.

class MiClase {
   public MiClase() { //<-- constructor
   }
   public void miOtraClase() { //<-- metodo
   }
}

2. Si tienes un "import" no uses el nombre completo:

     private void jMenuItemLogueoActionPerformed(java.awt.event.ActionEvent evt) {                                                

vs.

     private void jMenuItemLogueoActionPerformed( ActionEvent evt )  {

y mejor aún

    privte void doLogin( ActionEvent e ) {  //<-- usar un nombre que tenga sentido
    }

Ya sé que aquí se podría decir: "esque ... el ide me lo pusoooo" per tu lo puedes quitar.

Es mejor cuando el código que pones de ejemplo se puede compilar ( este no es el caso ) y NO estoy diciendo que pongas 500 lineas, sino que aisles el problema, porque en este post hay mucho codigo que no viene al caso ( como las variables de clase )

Este es el código limpiado con los comentarios que te hice:

  1. package prestamos;
  2. import java.awt.*;
  3. import clases.*;
  4. import java.awt.event.*;
  5. import javax.swing.*;
  6.  
  7. public class VentanaPrincipal0 extends JFrame {
  8.  
  9.      public VentanaPrincipal0() {
  10.      .......
  11.      }
  12.  
  13.      private void jMenuItemLogueoActionPerformed( ActionEvent evt ) {  
  14.         Login log = new Login();
  15.         this.escritorio.add(log);
  16.         log.show();
  17.      }
  18.     public void modificarLabel(){
  19.         jLabel2.setText(usuario.getMiLabel());
  20.         String usu1= jLabel2.getText();
  21.         jLabel2.updateUI();
  22.         jLabel2.repaint();    
  23.         System.out.println("este es el logueado " +usu1);
  24.     }      
  25.  
  26.     public static void main(String args[]) {
  27.         java.awt.EventQueue.invokeLater(new Runnable() {
  28.             public void run(){
  29.                 new VentanaPrincipal0().setVisible(true);
  30.             }
  31.         });
  32.     }
  33. }
  34.  
  35.  
  36. import javax.swing.*;
  37.  
  38. public class Login extends JInternalFrame {
  39.    
  40.     VentanaPrincipal venPrin = new VentanaPrincipal();
  41.    
  42.     public Login() {
  43.         initComponents();
  44.     }
  45.     private void jButtonLogueoUsuarioIniciarActionPerformed(ActionEvent evt) {                                                            
  46.         String usuLog=jTextFieldLogueoUsuarioNombre.getText();
  47.  
  48.         JOptionPane.showMessageDialog(null, "Se creo una nueva Sesion de Usuario: '"+cadena1+"' ...");
  49.         usuario.setMiLabel(usuLog);
  50.         venPrin.modificarLabel();
  51.     }
  52. }

Ahora, como no está todo el código no es 100% seguro que lo que te voy a decir sea correcto, pero lo que salta a la vista es que en la linea 40 ( de mi post ) tu estás instanciando una clase que se llama VentanaPrincipal y en la linea 7 ( de mi codigo ) estás declarando una clase que se llama VentanaPrincipal0 ventana principal cero....ceeeeero, con un cero al final es otra clase.

Entonces, limpia tu código como te sugiero y quizá encuentres el error tu mismo.

Si nada de eso funciona, haz una prueba asilada, escribe todo de nuevo pero solo lo relevante, un frame, un internal frame, un label y un botón, nada más. Cuando logres hacer que eso funcione entenderás donde estaba tu error.

Espero que esto te sirva.

Saludos

Imagen de Atlas

Ahora esta mas limpio el

Ahora esta mas limpio el codigo amigo OscarRyz, para su comodidad, pero la verdad q es tan simple como se ve a simple vista, y perdon... error mio "VentanaPrincipalO" es "VentanaPrincipal" copie otra q era de prueba, pruebas q dices q me someta, ya lo he intentado muchas veces, no se actualiza la interfaz y creo q parece ser q la ventanaPrincipal no puede capturar o escuchar el evento q genera el boton de "Iniciar Sesion" de la ventana Interna... pero llama facilmente al metodo y tbn es extraño xq "x consola" me muestra el resultado del usuario logueado...

Alguien q pueda ayudarme... alguien q este mas sumergido en este tema o q sepa mas... q me de una mano... desde ya MIL GRACIAS!!!!!!!

Pues quién más que tu esta

Pues quién más que tu esta taaaan sumergido en ese problema?

Haz lo siguiente:

public class Ejemplo {
   public static void main( String ...args ) {
        JFrame unFrme .... crea un frame aqui y muestralo
        JInternalFrame internalFrame // crea un internal frame aqui y muestralo
        JTextField unTextField ... // o un JPasswordTextField o como se llame
        JButton unBoton ...
        JLabel  unLabel ...
   }
}

Haz que funcionen esas 4 cosas, postea tu código y yo te ayudo. La idea es que saque todo lo que no tiene que ver con el problema y desde ahí se te pueda ayudar. Así como esta ahorita es imposible.

Suerte

Imagen de Jose Manuel

Solo un poco...

Atlas no vayas a pensar que me las hecho de muy salsa, al contrario soy muy malo jaja. Pero si en verdad quieres ayuda, lo mínimo que debes mostrar es algo de respeto a los ojos de tus posibles consejeros. Osea, mano, no escribas de esa forma, en un celular con mini-teclas pues como sea pero hombre...cuesta trabajo poder leer tus comentarios. No te digo que te jales el diccionario y las reglas gramaticales del español, hombre que es un foro de programación no de lengua y ortografía. Pero si, por lo menos tratar de hacer lo mejor que podamos al momento de escribir. Como puedes ver yo también tengo bastante errores gramaticales, y no es de extrañar, no me gusta el español (como materia de estudio) jajaja.

No es de sorprender que a tu código le pase lo mismo, tengo una creencia de novato y es una que dice mas o menos así: El código fuente de un sujeto refleja ciertas características de su personalidad. A que esta chida, verdad? :) aunque creo que no es nueva...

Ademas el código no solamente se debe "acomodar" para "comodidad" de los demás, si no para ti mismo. Esto que te digo yo aun no lo termino de aprender correctamente pero, hay la llevo.

Consejos de novato en muy buena onda para que mejores. Espero que no sea un caso de El ciego que guia a otro ciego...
Saludos!

Y solo para aclarar el punto,

Y solo para aclarar el punto, tengo ganas de ayudarte, pero lo que no tengo ( por ridículo que parezca ) es un compilador a la mano ( y no lo pienso tener )

Lo único que puedo hacer es leer un poco y tengo poco tiempo para contestar, pero si pones más de tu parte verás que lo solucionas.

Te digo esto para que no te desanimes, es muy bueno que preguntes, sigue haciéndolo.

Saludos.

Imagen de Atlas

A TODOS

Gracias mis amigos... la verdad q gente como ustedes vale la pena tener como compañeros... gracias de corazon... dentro de un rato subo el codigo...