Jump to content

Cambiar JPanel al oprimir un boton en Netbeans


Recommended Posts

Hola buenas tardes a todos he estado trabajando en un proyecto y pues tengo una duda relacionada con la manera que estoy manejando la interfaz, tengo un JFrame que es mi ventana principal sobre esta tengo un menu y un encabezado(muestro los logos de la empresa), en fin. También tengo unos 12 JPanel mas y aun me faltan por hacer, cuando la aplicación inicia cargo el primer JPanel que contiene varios botones cuando el usuario de clic en uno debe eliminarse en JPanel actual y Mostrarse un nuevo JPanel y asi con todos los botones.

 

Mi primer idea fue cargar los 12 JPanel de un solo jalón cuando se inicie la aplicación, ocupando el método setVisible para poder mostrarlos cada vez que el usuario oprimiera el botón, pero me di cuenta de que cada vez que iba agregando paneles la aplicacion iba un poco lenta y pues como todavía me faltan mas paneles tal vez la aplicación seria muy pesada.

 

Así que se me ocurrió cargar el JPanel cada vez que el usuario diera clic al botón, pero el problema que tengo es que no se como cargar otro JPanel en el JFrame desde un JPanel lo tengo lo siguiente:

 

public class window_main extends javax.swing.JFrame {
 public acceso_rapido ac;

public window_main() {
initComponents();
this.setLocationRelativeTo(null);
cargarpanel();
}

private void cargarpanel(){
ac = new acceso_rapido();
this.add(ac)


al inicar la aplicacion agregro el JPanel llamado acceso_rapido, este a su vez contiene los botones que al oprimir el usuario deberia removerlo...

 

public class acceso_rapido extends javax.swing.JPanel {

public acceso_rapido() {
initComponents();
}

private control_usuarios cu;
private window_main frame;

private void jbcontrouserActionPerformed(java.awt.event.ActionEvent evt) {                                             
      try{
        this.setVisible(false);
        this.remove(this);
      }catch(Exception e){
      }
      cu = new control_usuarios();

      frame.add(cu);
      frame.repaint();
 

 

En el JPanel accedo_rapido tengo el boton jbcontroluser y esto es el codigo que deberia mostrar el otro JPanel llamado control_usuarios pero no hace nada, solo logro eliminar el JPanel que se esta viendo.

Por cierto el JFrame tiene el nombre window_main por eso creo un objeto llamado frame.

 

Bueno eso es lo que tengo y mi problema es que no puedo mostrar el JPanel que deseo, OJO el botón se encuentra en JPanel no en el JFrame.

 

Les agradezco su tiempo y doy Gracias de Antemano.

Link to comment
Share on other sites

Me parece que lo mejor habría sido usar JDesktop con un JMenuBar y JInternalFrame, pero para que no tengas que cambiar todo, creo que debes pasar por parámetro el frame principal para que tengas acceso a sus propiedades:

 

public class acceso_rapido extends javax.swing.JPanel {

public acceso_rapido(window_main frame) {
initComponents();
this.frame = frame;
}

private control_usuarios cu;
private window_main frame;

private void jbcontrouserActionPerformed(java.awt.event.ActionEvent evt) {                                             
      
      cu = new control_usuarios();

      frame.add(cu);
      frame.repaint();
      try{
         this.setVisible(false);
         this.remove(this);
      }
      catch(Exception e){
      }
 

 

Tal vez debas definir todos los paneles dentro de window_main y sólo instanciarlos cuando se presione el botón que ejecuta este.

 

Saludos

 

 

Link to comment
Share on other sites

  • 2 weeks later...

Muchas gracias por tu consejo xomarx69 de usar JDesktop y JinternalFrame me tarde unas cuantas semanas en ajustar mis ventanas pero al final mi aplicacion esta funcionando mejor.

 

Creo que estaba algo oxidado en usar netbeans pero poco a poco me aceitare de nuevo.

:wink:

 

Tema solucionado pueden cerrarlo.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...