Código Java:
Ver original
import java.awt.Container; import java.awt.EventQueue; import javax.swing.*; private Login pnLogin=new Login(this); setBounds(100, 100, 450, 350); contenedor.setLayout(null); contenedor.add(pnLogin); contenedor.add(pnMenu); habilitar(0); } public void habilitar(int a){ desabilitar(); if(a==0) pnLogin.setVisible(true); else if(a==1) pnMenu.setVisible(true); else desabilitar(); } public void desabilitar(){ pnLogin.setVisible(false); pnMenu.setVisible(false); } public void run() { try { frame.setVisible(true); e.printStackTrace(); } } }); } }
//Login
Código Java:
Ver original
import javax.swing.JPanel; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; Principal princi; this.princi=princi; setSize(400,300); setLayout(null); e.getSource(); irMenu(); } }); btnBoton.setBounds(139, 132, 91, 23); add(btnBoton); } public void irMenu(){ //princi=new Principal(); princi.habilitar(1); } }
//Menu
Código Java:
Ver original
import javax.swing.JPanel; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; Principal princi; princi=princi; setSize(400,300); setLayout(null); e.getSource(); irLogin(); } }); btnUno.setBounds(104, 67, 91, 23); add(btnUno); btnDos.setBounds(104, 110, 91, 23); add(btnDos); btnTres.setBounds(104, 159, 91, 23); add(btnTres); } public void irLogin(){ //princi=new Principal(); princi.habilitar(0); } }
El cógigo que adjunto aquí funciona pero:
Mi duda nace cuando del panel JPanel Login quiero instanciar a Principal hago que su constructor de este reciba como parametro a la clase Principal que es el JFrame:
//Constructor:
Principal principal
public Login(Principal principal){
this principal=principal;
}
en el atributo de Principal tengo
Login pnLogin=new Login(this)
Esto me permite usar los métodos de la clase Principal, normalmente como habilitar y desabilitar
pero que pasa si instancio normalmente en el método irMenu() osea: Principal principal=new Principal(); aclarando que cada constructor dibuja su gui. Entonces, pensé sobrecargar el counstructor de la clase Principal para que cuando invoque Principal() en el metodo irMenu() esté disponible y así usar el método habilitar para cambiar de panel pero no, no me funciona, no logra cambiar de panel.
Eso es todo, sé que es un poco tedioso pero estoy dando vueltas aquí, ante todo muchas gracias por leer mi duda.