lunes, 6 de octubre de 2014

[Java] Actualizar un JPanel en tiempo de ejecución


Java no es muy bueno con el trabajo de interfaces graficas, pero tiene un conjunto de librer&icute;as que son buenas (adem´s de contar con FX), en este caso queremos actualizar un panel central dentro de un formulario.  Para esto lo que queremos según la figura es que al presionar clic en los botones en la parte del centro aparezca el cambio y no haya necesidad que abrir mas ventanas. 


Para esto usaremos Netbeans 8.0, y crearemos un proyecto nuevo -> Java Aplicación 

Agregaremos un JFrame que ser´ nuestra pantalla que vemos en la figura anterior. Lo primero que hicimos fue poner como BorderLayout nuestro JFrame, esto lo que hace es dividir mi pantalla en sur, norte, este, oeste y centro este ultimo se expande a lo que queda de la pantalla .

Posteriormente en la pantalla, en la parte norte inserto un Jpanel y dando clic derecho escojo como administrador de diseño FlowLayout para que los botones se pongan lineales, posteriormente agrego los dos botones en la parte superior. 

Luego nos vamos a agregar nuevo Item de swing y agregamos dos JPanelForm que vienen junto con los JFrame y ponemos en cada uno de ellos, su contenido. 


Listo con eso sera suficiente lo demas se lo dejaremos al codigo 

Declaraamos un JPanel que va a hacer el interno 

JPanel aux; 

Y ahora por ejemplo yo quiero que aparezca el panel dos desde el inicio despues de initComponents dentro del constructor pondría lo siguiente 

        initComponents();
        aux = new Dos ();  
        this.add(aux,BorderLayout.CENTER);        
        this.pack();
     
y en cada uno de los eventos de los botones pues lo que queramos abrir 

 
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:        
    
        this.remove(aux);
        aux = new Uno(); 
        this.add(aux,BorderLayout.CENTER);
        //this.repaint();
        this.pack();
    }                                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:                
        
        this.remove(aux);
        aux = new Dos ();  
        this.add(aux,BorderLayout.CENTER);        
        this.pack();
    }
Espero les haya servido.

No hay comentarios:

Publicar un comentario