Hola, soy nuevo por aquí. Lo que quiero hacer es crear el tipico cambiar de panel al precionar un boton, para eso la clase que hereda JFrame(Principal) y agregar a este paneles, con un método habilitar y desabilitar hago que se visualizen(setVisible)
Código Java:
Ver originalimport 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 static void main
(String[] args
) { public void run() {
try {
frame.setVisible(true);
e.printStackTrace();
}
}
});
}
}
//Login
Código Java:
Ver originalimport javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Login
extends JPanel {
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 originalimport javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
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.