miércoles, 29 de septiembre de 2010

Agregar JPanel en un JFrame

Existe un control Swing llamado Internal Frame que se utiliza para agregar Frames dentro otro. Sin embargo, debemos recordar que un Frame tiene propiedades tales como la barra de títulos, los botones de maximizar, minimizar y cerrar, coloca un nuevo ítem en la barra de tareas en Windows, KDE y Gnome, entre otras propiedades. Cabe destacar que muchas veces estos atributos no serán necesarios y entorpecerían el accionar de la aplicación. Muchas veces necesitamos unicamente un pequeño recuadro e insertarlo en uno u otro JFrame.

Antes de mostrar cómo crear los JPanels, debemos de cambiar el layout al JFrame que utilizaremos. El Layout es una propiedad de los contenedores Swing para colocar todos los elementos que se contienen dentro de él. Como Java es multiplataforma, y en cada una de ella se disponen de manera distinta el orden de los elementos o componentes. Por lo tanto, Swing lo realiza con la ayuda de los layouts. En modo diseño del JFrame, hacemos click derecho a la opción Set Layout y le asignamos Null Layout, ya que nosotros colocaremos otro tipo de layout diferente al del diseño libre que nos brinda el editor de diseño de Netbeans. De esta forma:

Ahora, dentro del JFrame, en su constructor, y luego de la inicialización de componentes, vamos a establecer el layout a utilizar. Para este ejercicio, escogí el FlowLayout, que dispone un orden de los elementos horizontal uno tras otro y con cierto espaciado que podemos asignar.
El código dentro del constructor deberá ser el siguiente:

//Constructor
public framePadre() {

//llamo al constructor padre y le mando el nombre del título de la ventana
super("Operaciones Básicas");

//Función de inicialización de componentes. Netbeans la coloca por defecto
initComponents();

//Colocamos el nuevo tipo de layout que queremos que tenga nuestro JFrame
this.setLayout(new FlowLayout());
}

ambién creamos dos atributos al JFrame, para más facilidad. Serán dos atributos del tipo de datos de cada uno de los JPanel.

private panelHijoSuma hs;
private panelHijoResta hr;

Ahora, en cada una de los ítems de la barra de menú, para mostrar el JPanel deseado, colocamos el siguiente código:

//Nombre evento
private void nSumaActionPerformed(java.awt.event.ActionEvent evt) {

//Si ya está el otro Jpanel añadido al contenedor, entonces se elimina
try{
this.remove(hr);
}
catch(Exception e){
}

//Creamos una nueva instancia de panelHijoSuma
hs = new panelHijoSuma();

//Agregamos la instancia al JFrame, con un layout al centro
this.add(hs, BorderLayout.CENTER);

//Hacemos que el JFrame tenga el tamaño de todos sus elementos
this.pack();
}

0 comentarios:

Publicar un comentario