agregar jpanel en un jframe en java y netbeans

5
Agregar JPanel en un JFrame en Java y Netbeans 19 abril 2009 Muchos compañeros me han pedido ejemplos para agregar o instanciar JFrames o JPanels dentro de otro 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. Así que para esos efectos están los JPanels. Realizaremos un pequeño ejemplo con éstos. Vamos a realizar una pequeña aplicación, que consiste en realizar dos de las operaciones básicas: sumas y restas. Para realizar cada una de ellas, el JFrame añade entre sus componentes a dos JPanels, uno para cada operación respectivamente. 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:

Upload: jordangarciasilupu

Post on 07-Nov-2015

18 views

Category:

Documents


0 download

DESCRIPTION

jlnjn

TRANSCRIPT

Agregar JPanel en un JFrame en Java y Netbeans 19 abril 2009 Muchos compaeros me han pedido ejemplos para agregar o instanciar JFrames o JPanels dentro de otro 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 ttulos, 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 sern necesarios y entorpeceran el accionar de la aplicacin. Muchas veces necesitamos unicamente un pequeo recuadro e insertarlo en uno u otro JFrame. As que para esos efectos estn los JPanels. Realizaremos un pequeo ejemplo con stos.

Vamos a realizar una pequea aplicacin, que consiste en realizar dos de las operaciones bsicas: sumas y restas. Para realizar cada una de ellas, el JFrame aade entre sus componentes a dos JPanels, uno para cada operacin respectivamente.

Antes de mostrar cmo 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 diseo del JFrame, hacemos click derecho a la opcin Set Layout y le asignamos Null Layout, ya que nosotros colocaremos otro tipo de layout diferente al del diseo libre que nos brinda el editor de diseo de Netbeans. De esta forma:

Ahora s, creamos dos JPanels desde el navegador de proyectos, uno llamado panelHijoSuma y otro panelHijoResta. Deben quedar de la siguiente manera:

Vean que el ltimo TextBox se encuentra deshabilitado para que sea modificado por el usuario. Este solo presentar el resultado y el usuario jams lo podr tocar.

Al JFrame, tal y como lo observaron al inicio de este artculo solo le agregamos una Menu Bar, y un par de tems para que luzca as:

Ahora, dentro del JFrame, en su constructor, y luego de la inicializacin 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 cdigo dentro del constructor deber ser el siguiente:

//Constructorpublic framePadre() {

//llamo al constructor padre y le mando el nombre del ttulo de la ventana super("Operaciones Bsicas");

//Funcin de inicializacin de componentes. Netbeans la coloca por defectoinitComponents();

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

Tambin creamos dos atributos al JFrame, para ms facilidad. Sern 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 cdigo:

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

//Si ya est el otro Jpanel aadido al contenedor, entonces se eliminatry{this.remove(hr);}catch(Exception e){}

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

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

//Hacemos que el JFrame tenga el tamao de todos sus elementosthis.pack();}

Este cdigo debe de ser similar en los restantes tems de la Menu Bar, siempre con el evento ActionPerformed.

Ahora, la parte final de este artculo. Realizaremos cada una de las operaciones dentro del evento de los TextBox, KeyReleased(). De esta forma:

Ahi agregaremos el siguiente cdigo:

//Nombre del evento. Lo genera Netbeansprivate void txtnum1KeyReleased(java.awt.event.KeyEvent evt) {

//Asignamos el texto del textBox a una variable Integerint num1 = Integer.parseInt(this.txtnum1.getText());

//Si el otro TextBox no esta vacio, entonces se debe realizar la operacinif (!this.txtnum2.getText().equals("")){

int num2 = Integer.parseInt(this.txtnum2.getText());

//Se realiza la operacin, y se coloca en el TextBox del resultadothis.txtresultador.setText(String.valueOf(num2+num1));}}

La aplicacin debe lucir as:

El mismo JFrame con uno y otro JPanel