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...
- Inicie sesión o regístrese para enviar comentarios
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.
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.repaint();
Saludos!!!
---
RuGI
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:
public miClase() {
}
public void miOtraClase() {
}
}
vs.
public MiClase() { //<-- constructor
}
public void miOtraClase() { //<-- metodo
}
}
2. Si tienes un "import" no uses el nombre completo:
vs.
y mejor aún
}
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:
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 llamaVentanaPrincipal0
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
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 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
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.
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...