Está en la página 1de 236

TALLER

DE
PROGRAMACIN
EN
JAVA
CON
NETBEANS

***************************************************************************************

Elaborado por:
Ing. Roberto J. Macetas Rodrguez

2015

TALLER DE PROGRAMACIN
INDICE
Pgina
CAPITULO I: Objetos de control bsicos

03

Introduccin a la programacin visual

04

Uso de los objetos Jlabel, JTextField y JButtom

22

Uso de los objetos de control JradioButton y JCheckBox

33

CAPITULO II:Objetos de control para lista y cuadrcula de datos

48

Uso del objeto Jlist

49

Uso del objeto JComboBox

65

Uso de objeto JTable

80

CAPITULO III: Objetos contenedores y mens

91

Uso del objeto JFrame

92

Objetos contenedores JPanel y JScrollPanel

107

Objetos contenedores JTabbedPanel y JDesktopPanel

125

Objetos Menus JmenuBar y JManuItem

147

Objetos Menus JradioButtonMenuItem, Jseparator y Jmenu

160

CAPITULO IV: Sistema de Aplicacin

178

Construccin de un Sistema de Aplicacin

179

Manejo de los swing windows

209

Presentacin de un Sistema de Aplicacin

219

Ing. Roberto J. Macetas Rodrguez

TALLER DE PROGRAMACIN

CAPITULO I
OBJETOS DE CONTROL BASICOS

Ing. Roberto J. Macetas Rodrguez

TALLER DE PROGRAMACIN

INTRODUCCIN A LA PROGRAMACIN VISUAL

Qu es Programacin Visual?

La programacin visual brinda los conocimientos necesarios para disear y desarrollar


aplicaciones con un entorno visual amigable y fcil de utilizar por el usuario. Los lenguajes
de programacin visual, como Visual Java, hacen sencilla la tarea de los programadores
porque antes constitua una gran demora tiempo en el diseo de ventanas o formularios.

Programacin orientada a Objetos

En el caso del lenguaje de programacin, Java aplica la programacin orientada a objetos


Ing. Roberto J. Macetas Rodrguez

TALLER DE PROGRAMACIN
(POO). La POO define a los programas en trminos de clases de objetos, objetos que
son entidades que combinan estado (datos), comportamiento (procedimientos o mtodos)
e identidad (propiedad o atributo del objeto) que lo diferencia de los dems. La POO
expresa un programa como un conjunto de objetos, que colaboran entre ellos para realizar
tareas.
Podramos decir que las caractersticas de los objetos son:

Los objetos se pueden agrupar para formar las clases.

El estado de los objetos est determinado por los datos.

Pueden heredar propiedades o atributos de otros objetos.

Usando Mensajes un objeto se puede comunicar con otro objeto.

Los mtodos definen el comportamiento de los objetos.

Bibliotecas de Clases en Java


Sabemos que Java es un lenguaje de programacin con un entorno de ejecucin de
aplicaciones como tambin entorno de ejecucin de despliegue de aplicaciones. Es
utilizado para desarrollar applets como aplicaciones.
Java est compuesto de bibliotecas de clases (package) siendo las ms importantes:

Package Lang: compuesta por clases con funcionalidades bsicas, arrays,


cadenas de caracteres, entrada/salida, excepciones, etc. Este paquete debes
haberlo utilizado en el curso de Fundamentos de Programacin.

Package Util: compuesta por clases para utilizadas como nmeros aleatorios,
vectores, propiedades del sistema, etc.

Package net: compuesta por clases, es usada para la conectividad y trabajo con
redes, URL, etc.

Package Applet: compuesta por clases, es usada para el desarrollo de


aplicaciones ejecutables en navegadores.

Package Awt y Swing: compuesta por clases para el desarrollo de interfaces


grficas de usuario. El paquete swing es el paquete por excelencia para el
desarrollo de los temas del presente curso.

Observa la siguiente figura:

Ing. Roberto J. Macetas Rodrguez

TALLER DE PROGRAMACIN

Cualquier programa hecho en Java lleva a definir un archivo de extensin .java. El


programa debe pasar por un proceso de compilacin que consiste en convertir tu programa
fuente (el archivo de extensin .java) en un archivo de extensin .class y
conjuntamente con la biblioteca de clases se logra interpretar lo programado, es as
cuando ya se puede ejecutar el programa y ver los resultados en la pantalla del
computador. Para este curso, en el que veremos programacin visual y por lo tanto el uso
de formularios, se crear un archivo adicional con extensin.frm que guardar la
estructura o diseo del formulario.

Veamos a continuacin el entorno de desarrollo NetBeans, el cual ya conoces, pero del


que vale la pena reforzar algunas afirmaciones necesarias para el curso.

NetBeans IDE en la programacin visual

El NetBeans es un entorno de desarrollo integrado que permite crear aplicaciones de


escritorio, aplicaciones web y aplicaciones mviles utilizando las ltimas tecnologas para
los desarrolladores de software de Java. El IDE de NetBeans es un producto gratuito y sin
restricciones de uso pudiendo escribir, compilar, depurar e implementar programas en
Java. NetBeans es un proyecto open source de desarrollo escrito en Java. La plataforma
NetBeans da soporte para escritura de servlets, ayuda on-line y ayudas con el cdigo.

Usaremos la versin 6.0 de NetBeans para la construccin y diseo de las aplicaciones.


Ing. Roberto J. Macetas Rodrguez

TALLER DE PROGRAMACIN
Una vez que ingresas al entorno de desarrollo de NetBeans se observa:

Para dar inicio a una aplicacin de Java bajo el entorno de Netbeans se debe definir un
proyecto, para ello, seleccionas la opcin del men denominada File. Se muestra
inmediatamente un men flotante cuya primera opcin indica New Proyect, est opcin la
seleccionas.

Ing. Roberto J. Macetas Rodrguez

TALLER DE PROGRAMACIN

Al momento de seleccionar New Proyect se visualiza la ventana siguiente:

Dado que nuestras aplicaciones van ser desarrolladas en entorno visual en Categories
seleccionas la carpeta Java y en Proyects seleccionas Java Application. Luego hacer clic
8
Ing. Roberto J. Macetas Rodrguez

TALLER DE PROGRAMACIN
en el botn de comando Next que mostrar la siguiente ventana:

Es conveniente que uno mismo cree su carpeta de destino de los archivos que se
generan para la construccin de una aplicacin. Supongamos que la carpeta que
necesitamos crear se llama Ejercicios y la creamos en la unidad E, para ello es necesario
dar clic en el botn de comando Browse.

Ing. Roberto J. Macetas Rodrguez

TALLER DE PROGRAMACIN

Una vez indicada la nueva carpeta Ejercicios, procede a dar clic en el botn de comando
Abrir quedando la ventana New Java Application de la siguiente forma:

Ing. Roberto J. Macetas Rodrguez

10

TALLER DE PROGRAMACIN
Se observa que en Proyect Location se muestra la carpeta destino del proyecto. Vamos
a suponer que se quiere construir un programa que calcule el promedio de dos notas,
entonces la ventana debera quedar de la siguiente forma:

Al dar clic en Finish se mostrar el entorno de desarrollo de NetBeans listo para dar inicio
a la construccin de la aplicacin.

Ing. Roberto J. Macetas Rodrguez

11

TALLER DE PROGRAMACIN
Cuando se pretenda construir una aplicacin de entorno visual tendramos que usar
plantillas que el mismo NetBeans IDE te ofrece. Ahora, seleccionemos el paquete
ejercicios y luego elijamos la opcin New y a continuacin seleccionemos JFrameForm

Una vez seleccionada la opcin JFrameForm se muestra la ventana New Jframe Form
para definir el nombre de clase.

Ing. Roberto J. Macetas Rodrguez

12

TALLER DE PROGRAMACIN
Como nombre de clase le pondremos frmPromedio2Notas esto generar un archivo de
extensin .java dentro de la ruta:
E:\Ejercicios\Promedio2Notas\src\ejercicios\frmPromedio2Notas.java
y como veremos todo se encuentra dentro de la carpeta Ejercicios creada inicialmente en
la unidad E

Al dar clic en el botn de comando Finish se mostrar el entorno de desarrollo de


NetBeans listo para dar inicio al diseo de un formulario y por lo tanto dar comienzo a una
aplicacin en un entorno visual.

Ing. Roberto J. Macetas Rodrguez

13

TALLER DE PROGRAMACIN

Ing. Roberto J. Macetas Rodrguez

14

TALLER DE PROGRAMACIN

USO DE LOS OBJETOS JLABEL, JTEXTFIELD Y


JBUTTON

Una aplicacin sin usar Formulario


A continuacin vamos a desarrollar una aplicacin sencilla que permita calcular el rea del
tringulo dado los valores de la base y la altura. No se utilizar formulario, pero s las
clases del paquete swing para ingresos y salida de datos.

Solucin:

Estando en el entorno de desarrollo NetBeans seleccionamos la opcin del men y


luego la opcin New Proyect.

Ing. Roberto J. Macetas Rodrguez

15

TALLER DE PROGRAMACIN

Al momento de seleccionar New Proyect se visualiza la siguiente ventana:

Ing. Roberto J. Macetas Rodrguez

16

TALLER DE PROGRAMACIN

Seleccionamos para Categories Java y para Proyects Java Application y luego


damos clic en el botn de comando Next.

Usamos el botn de comando Browse para crear una carpeta denominada


Ejercicios en la unidad E. En Proyect Name colocamos AreaTriangulo y en el
cuadro de texto referido a Create Main Class colocamos ejercicios.AreaTriangulo,
lo cual permitir crear un paquete denominado ejercicios y como primera clase
AreaTriangulo, es decir, se crea el archivo AreaTriangulo.java que pertenecer al
paquete ejercicios.

Ing. Roberto J. Macetas Rodrguez

17

TALLER DE PROGRAMACIN

Sabemos que en Java una clase tiene comnmente al mtodo Main que es el
mtodo que se ejecuta cuando se aplica Run a la aplicacin construida. En el
entorno de NetBeans, una clase creada, crea un mtodo que tiene el mismo
nombre de la clase a la que se denomina mtodo constructor y toda programacin
hecha en ste mtodo se ejecutar primero antes que el mtodo main. NetBeans
generar un paquete (Package) denominado ejercicios y dentro de ella se mostrar
la clase de acceso pblico AreaTriangulo. El entorno de desarrollo de NetBeans
despus de dar clic en el botn Finish queda as:

Ing. Roberto J. Macetas Rodrguez

18

TALLER DE PROGRAMACIN

Agregamos al cdigo de la programacin generada, por debajo del package


ejercicios, lo siguiente:
import java.io.*;
import javax.swing.*;
El paquete javax.swing.*; permitir poder crear ingresos y salida de datos a travs
de cajas de mensaje.

Agregamos al cdigo

en el mtodo main de la clase AreaTriangulo como se

aprecia a continuacin (lo escrito en azul).


package ejercicios;
import java.io.*;
import javax.swing.*;
/**
*
* @author Administrador
*/
public class AreaTriangulo {

Ing. Roberto J. Macetas Rodrguez

19

TALLER DE PROGRAMACIN
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException
{
int base, altura;
double area;
base=Integer.parseInt(JOptionPane.showInputDialog(null,"Ingrese la base: "));
altura=Integer.parseInt(JOptionPane.showInputDialog(null,"Ingrese la altura"));
area=base*altura/2;
JOptionPane.showMessageDialog(null,"El area del triangulo es: "+area);
}
}

En el mtodo main observamos que para leer el dato para la variable base utilizamos
el mtodo showInputDialog de la clase JOptionPane que a su vez pertenece al
paquete swing, que mostrar una caja de mensaje para la lectura de datos. De
igual manera se trabajar para leer el dato de altura.
Tambin se observa el mtodo showMessageDialog de la clase JOptionPane que
permite mostrar en una caja de mensaje el resultado del clculo del rea.

Seleccionamos AreaTriangulo en el entorno de desarrollo de NetBeans y luego


damos clic botn derecho del mouse. Se visualiza un men flotante, se elige la
opcin Run File y se proceder a ejecutar el programa.

Ing. Roberto J. Macetas Rodrguez

20

TALLER DE PROGRAMACIN

Cuando la aplicacin es ejecutada se visualizar la siguiente ventana:

Nos pide el ingreso del valor de la base y luego de dar clic en el botn de comando
Aceptar se mostrar la siguiente ventana:

Posteriormente se mostrar la ventana del resultado del clculo del rea.

Objeto de control JLabel


Un objeto de control JLabel permite dibujar en el formulario una etiqueta, entendindose
como etiqueta una expresin esttica que se quiere colocar. Tambin es usado para
mostrar los resultados de un proceso.

Propiedades ms usadas:

Text: Contiene el valor que se visualizar en el formulario.

Font: Permite establecer el tipo de letra de la expresin a mostrar en el formulario.

Border: Para establecer el tipo de borde de la etiqueta.

Enabled: Para habilitar o inhabilitar el uso del objeto de control.

Objeto de control JTextField


Ing. Roberto J. Macetas Rodrguez

21

TALLER DE PROGRAMACIN
Un objeto de control JTextField permite dibujar en el formulario un cuadro de texto, es
decir, una caja que permite la introduccin de un dato o valor. Este objeto es utilizado para
el ingreso de datos.

Propiedades ms usadas:

Text: Contiene el valor o dato introducido en el cuadro de texto.

Font: Permite establecer el tipo de letra del texto en la caja.

Border: Para establecer el tipo de borde del cuadro de texto.

Enabled: Para habilitar o inhabilitar el uso del objeto de control.

Mtodos ms usados:

getText(): Permite obtener el texto introducido en el cuadro de texto.

setText(): Permite colocar un texto en el objeto JTextField.

requestFocus(): permite asignar el cursor al objeto de control

Objeto de control JButton


Un objeto de control JButton permite dibujar en el formulario un objeto que contiene un
proceso a ejecutar. Se utiliza comnmente para llevar a cabo procesos especficos segn
la naturaleza de la aplicacin.

Propiedades ms usadas:

Text: Contiene el valor o dato introducido en el cuadro de texto.

Font: Permite establecer el tipo de letra del texto en la caja.

Enabled: Para habilitar o inhabilitar el uso del objeto de control.

Evento ms usado:

ActionPerformed: Este evento se lleva a cabo cuando el usuario da clic sobre el


objeto de control JButton.

Una aplicacin usando los objetos de control


Ing. Roberto J. Macetas Rodrguez

22

TALLER DE PROGRAMACIN
Ahora procedamos a desarrollar la misma aplicacin usando como interface un formulario
y los objetos de control antes mencionado.

Solucin:

Seleccionamos el paquete ejercicios y damos clic botn derecho del mouse y


elegimos la opcin New y posteriormente JFrameForm.

Se muestra la ventana New JFrame Form y colocamos en Class Name el nombre


del formulario: frmAreaTriangulo.

Ing. Roberto J. Macetas Rodrguez

23

TALLER DE PROGRAMACIN

En esta ventana se observa que la clase denominada frmAreaTriangulo generar


un archivo de extensin .java denominado frmAreaTriangulo que se almacenar
dentro de la carpeta ejercicios y pertenecer al paquete ejercicios.

Al momento de dar clic en el botn de comando Finish se visualizar el entorno de


desarrollo NetBeans y al lado derecho se muestra la paleta de los objetos de
control (Swing Controls).

Ing. Roberto J. Macetas Rodrguez

24

TALLER DE PROGRAMACIN

Sobre el diseo del formulario damos clic botn derecho y seleccionamos Set
Layout y posteriormente AbsoluteLayout.

Es necesario usar AbsoluteLayout para que permita dibujar los objetos de control
Ing. Roberto J. Macetas Rodrguez

25

TALLER DE PROGRAMACIN
en el lugar donde uno quiere en el formulario.

Ahora procedamos a colocar un objeto JLabel seleccionando de la paleta Swing


Controls Label y lo arrastramos hacia el diseo del formulario.

Continuamos el diseo del formulario, quedando ste de la siguiente manera:

Ing. Roberto J. Macetas Rodrguez

26

TALLER DE PROGRAMACIN

Ahora procedamos a usar a cambiar los valores de las propiedades de los objetos
de control en la ventana de propiedades:
Objeto de Control

Propiedad

Valor de la Propiedad

JLabel1

Text

BASE:

JLabel2

Text

ALTURA:

JLabel3

Text

El rea del Tringulo es:

JTextField1

Text

(Vaco o limpiar)

JTextField2

Text

(Vaco o limpiar)

JTextField3

Text

(Vaco o limpiar)

JButton1

Text

CALCULAR

JButton2

Text

LIMPIAR

JButton3

Text

CERRAR

Luego de aplicar los cambios en los valores de propiedades el diseo del formulario
debe quedar de la siguiente manera:

Es necesario darle un nombre propio a los objetos de control y sobre todo a


aquellos que intervienen en la lgica de la programacin. Seleccionamos el objeto
de control JTextField1 y damos clic con el botn derecho del mouse y se visualizar
un men flotante y seleccionamos Change Variable Name.

Ing. Roberto J. Macetas Rodrguez

27

TALLER DE PROGRAMACIN

Colocamos como nombre al objeto JtextField1: txtBase

Continuamos con los objetos de control siguientes:


Objeto de Control

Nombre

JTextField2

txtAltura

JTextField3

txtArea

Ing. Roberto J. Macetas Rodrguez

28

TALLER DE PROGRAMACIN

JButton1

btnCalcular

JButton2

btnLimpiar

JButton3

btnCerrar

Ahora procedamos a programar en los botones de comando.


En el botn CALCULAR (btnCalcular) al darle doble clic y escribir el siguiente
cdigo: (lo escrito en azul)
private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt)
{
int base, altura;
double area;
base=Integer.parseInt(txtBase.getText());
altura=Integer.parseInt(txtAltura.getText());
area=base*altura/2;
txtArea.setText(String.valueOf(area));
}

Una vez declaradas las variables de memoria, a la variable base se le asigna el


valor introducido en el cuadro de texto txtBase. El mtodo getText() permite obtener
el dato introducido y con el mtodo parseInt de la clase Integer es convertido a
numrico entero. Se hace lo mismo para la variable altura. Para mostrar el
clculo de rea se utiliza el mtodo setText del cuadro de texto txtArea que permite
visualizar el contenido de la variable area. A la variable se le aplica el mtodo
valueOf de la clase String para convertir el dato rea en cadena de caracteres.

En el botn LIMPIAR (btnLimpiar) luego de darle doble clic escribimos el siguiente


cdigo: (lo escrito en azul)
private void btnLimpiarActionPerformed(java.awt.event.ActionEvent evt)
{
txtBase.setText("");
txtAltura.setText("");
txtArea.setText("");
txtBase.requestFocus();
}

Se limpian los cuadros de textos a travs del mtodo setText() y con el mtodo

Ing. Roberto J. Macetas Rodrguez

29

TALLER DE PROGRAMACIN
requestFocus() se pasa el cursor al objeto de control txtArea.

En el botn CERRAR (btnCerrar) luego de darle doble clic, escribimos el siguiente


cdigo: (lo escrito en azul)
private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt)
{
dispose();
}

El mtodo dispose() permite descargar el formulario y terminar la ejecucin de la


aplicacin.

Procedemos a ejecutar la aplicacin seleccionado frmAreaTriangulo y al dar clic


botn derecho elegimos Run File.

Se muestra el formulario diseado en etapa de ejecucin.

Ing. Roberto J. Macetas Rodrguez

30

TALLER DE PROGRAMACIN

Podemos observar que el formulario sale con los objetos de control cercano a los
bordes del formulario y el mismo formulario se visualiza pegado en la parte superior
izquierda de la pantalla del computador. Vamos a proceder a corregir estos defectos
agregando dos lneas de cdigo en el mtodo constructor de la clase
frmAreaTriangulo. (escribe lo que est en azul)
public class frmAreaTriangulo extends javax.swing.JFrame
{
/** Creates new form frmAreaTriangulo */
public frmAreaTriangulo()
{
initComponents();
setSize(400,250);
setLocation(250,250);
}

El mtodo setSize() permite establecer el tamao del formulario y el mtodo


setLocation() permite ubicar el formulario dentro de la pantalla. Los mtodos antes
mencionados pertenecen al formulario frmAreaTriabgulo. Otros mtodos del
formulario se vern ms adelante.

Procedemos nuevamente a ejecutar el formulario frmAreaTriangulo y se mostrar


de la siguiente manera:

Ing. Roberto J. Macetas Rodrguez

31

TALLER DE PROGRAMACIN

En la siguiente sesin conoceremos ms objetos de control y seguiremos trabajando con


lo aprendido en esta sesin.

Ing. Roberto J. Macetas Rodrguez

32

TALLER DE PROGRAMACIN

USO DE LOS OBJETOS JRADIOBUTTON Y


JCHECKBOX

Objeto de Control JRadioButton


Un objeto de control JRadioButton permite dibujar en el formulario una opcin que puede
ser seleccionada, es decir, es un objeto que define una opcin o alternativa para ser
elegida. Este objeto debe mostrarse ms de una vez en el diseo del formulario para que
exista la alternativa de seleccionar una opcin de un grupo de opciones. Los objetos son
mutuamente excluyentes con respeto a la seleccin. Se tiene la siguiente figura:

En la figura anterior se observan tres objetos JRadioButton y para poder seleccionar sola
una alternativa se tendr que usar el objeto ButtonGroup que es un elemento que no se
llega a dibujar en el formulario pero permite agrupar objetos JRadioButton y una vez
agrupados permite la seleccin de una opcin cuando la aplicacin se encuentre en
ejecucin. En las dos aplicaciones que veremos ms adelante se har hincapi en este
asunto.
Ing. Roberto J. Macetas Rodrguez

33

TALLER DE PROGRAMACIN
Propiedades ms usadas:

Text: Permite establecer la expresin de la opcin.

Font: Permite establecer el tipo de letra en el objeto de control.

Enabled: Para habilitar o inhabilitar el uso del objeto de control.

Mtodo ms usado:

isSelected(): retorna el valor de verdadero si el objeto se encuentra seleccionado y


falso en caso contrario.

Objeto de Control JCheckBox


Un objeto de control JCheckBox permite dibujar en el formulario una opcin que puede
ser seleccionada, es decir, es un objeto que define una opcin o alternativa para ser
elegida. La diferencia con respecto al objeto de control JRadioButton es que si se tienen
dos o ms objetos JCheckBox se puede seleccionar ms de una opcin o simplemente no
seleccionar ninguna, por lo que no son mutuamente excluyentes. Se tiene la siguiente
figura:

En la figura anterior se observa un objeto JCheckBox que expresa como opcin Contado,
si es seleccionado significa que la forma de pago es al contado y si se deja como no
seleccionado significa que la forma de pago no es al contado por lo que se puede asumir
que es al crdito.

Propiedades ms usadas:

Text: Permite establecer la expresin de la opcin.

Font: Permite establecer el tipo de letra en el objeto de control.

Enabled: Para habilitar o inhabilitar el uso del objeto de control.

Mtodo ms usado:

isSelected(): retorna el valor de verdadero si el objeto se encuentra seleccionado y


falso en caso contrario.

Aplicacin 1
Vamos a construir una aplicacin en entorno visual que permita ingresar del costo de un
Ing. Roberto J. Macetas Rodrguez

34

TALLER DE PROGRAMACIN
artefacto, del tipo de artefacto y la forma de pago, para calcular lo siguiente:
a. Si el pago es al contado hay un descuento del 6% del costo del artefacto si el tipo
de artefacto es Audio, 8% si es Video y 5% si es Lnea Blanca.
b. Si el pago es al crdito hay un incremento del 7% sobre el costo del artefacto si es
el tipo de artefacto es Audio, 9% si es Video y 10% si es Lnea Blanca.
c. El monto del IGV es del 19% sobre el costo del artefacto luego de aplicar el
descuento o el incremento.
d. El monto a pagar que es el costo del artefacto (descontado o incrementado) ms el
monto del IGV.

Solucin:

Procedamos a crear un proyecto denominado Aplicaciones dentro de una carpeta


llamada Practicas y como clase Aplicacin1 que pertenece al paquete de
ejemplos. Luego damos clic en el botn de comando Finish.

Seleccionamos la carpeta de ejemplos, damos clic con el botn derecho del mouse
y elegimos la opcin New y posteriormente JFrameForm.

Ing. Roberto J. Macetas Rodrguez

35

TALLER DE PROGRAMACIN

A continuacin, se visualiza la siguiente ventana y cambiamos el nombre de la


clase indicado por la flecha:

Ahora procedemos a disear el formulario, donde se har nfasis en el manejo de


los nuevos objetos de control. No olvidemos que cada vez que usemos un
formulario su Layout debe ser cambiado a Absolute Layout como se aprecia en la
siguiente figura:

Ing. Roberto J. Macetas Rodrguez

36

TALLER DE PROGRAMACIN

Dibujamos como etiqueta (usando un JLabel) la expresin: Costo del Artefacto y


el cuadro de texto (Usando un JTextField). Tambin a travs de una etiqueta
colocamos la expresin Tipo de Artefacto y luego 3 objetos JRadioButton. Los
objetos JRadioButton deben expresar Audio, Video y Lnea Blanca. Debemos
recordar que se tendr que hacer uso de la propiedad Text para cambiar las
expresiones.

De la paleta SwingControls seleccionamos ButtonGroup y lo arrastramos hacia el


formulario. Esto ocasionar que se cree un objeto ButtonGroup1 tal como se aprecia

en el navegador (lado izquierdo del diseo del formulario).


Ing. Roberto J. Macetas Rodrguez

37

TALLER DE PROGRAMACIN

Seleccionamos el objeto JRadioButton referido a Audio y luego buscamos en la


ventana

de

propiedades,

la

propiedad buttongroup

luego

elegimos

buttongroup1

Lo mismo hacemos para los tipos de artefactos Video y Lnea Blanca. Por lo tanto,
los tres objetos JRadioButton deben pertenecer a buttongroup1. Si pretendemos
en estos momentos ejecutar el formulario podremos seleccionar uno de los tres
tipos de artefactos.

Ing. Roberto J. Macetas Rodrguez

38

TALLER DE PROGRAMACIN

A continuacin, agregamos un objeto JCheckBox para indicar la forma de pago que


solo puede ser de dos posibilidades: Contado o Crdito. Seleccionado significa al
Contado, no seleccionado significa al crdito. Agregamos los dems objetos de
control que se visualiza en el diseo del formulario y que fueron estudiados en la
sesin anterior. En el diseo del formulario se indica los nombres de los objetos y
debemos recordar que para asignar un nombre a un objeto de control hay que
seleccionar al objeto y dando clic con el botn derecho del mouse se procede a
seleccionar la opcin Change Variable Name

Procedamos a programar en los botones de comando:


En el botn de comando CALCULAR (btnCalcular), al darle doble clic, escribimos el
siguiente cdigo: (lo escrito en azul)
private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt)
{
double costo, dcto=0, incre=0, igv, mpagar;
costo=Double.parseDouble(txtCosto.getText());
if (chkContado.isSelected())
{
if (rbAudio.isSelected())
dcto=costo*0.06;
if (rbVideo.isSelected())
dcto=costo*0.08;

Ing. Roberto J. Macetas Rodrguez

39

TALLER DE PROGRAMACIN
if (rbLinea.isSelected())
dcto=costo*0.05;

}
else
{
if (rbAudio.isSelected())
incre=costo*0.07;
if (rbVideo.isSelected())
incre=costo*0.09;
if (rbLinea.isSelected())
incre=costo*0.1;
}
igv=(costo-dcto+incre)*0.19; mpagar=(costodcto+incre)+igv;
txtDcto.setText(String.valueOf(dcto));
txtIncre.setText(String.valueOf(incre));
txtIgv.setText(String.valueOf(igv));
txtMPagar.setText(String.valueOf(mpagar));

Una vez declaradas las variables de memoria, en la variable costo se asigna el


valor introducido en el cuadro de texto txtCosto gracias al mtodo getText() que
logra obtener el dato colocado en el objeto de control. Con la sentencia if se evala
si est seleccionada la opcin al contado y, si es as, se procede a evaluar cul de
los tipos de artefactos est seleccionado para aplicar el clculo del descuento que
ser asignando a la variable de memoria dcto. En caso que no est seleccionada
la opcin al Contado entonces se asume que la forma de pago es al crdito y se
procede a evaluar cul de los tipos de artefactos est seleccionado para aplicar el
clculo del incremento que ser asignado a la variable incre. A continuacin, se
calcula el IGV y el monto a pagar. Luego, los objetos de control txtDcto, txtIncre,
txtIgv y txtMPagar reciben valores a travs de las variables de memoria dcto,
incre, igv y mpagar en sus cuadros de textos gracias al mtodo setText(), por
supuesto previamente se tiene que convertir a cadena de texto los valores
numricos de las variables usando el mtodo valueOf() de la clase String.
En el botn de comando BORRAR (btnBorrar), luego de darle doble clic,
escribimos el siguiente cdigo: (lo escrito en azul)
private void btnBorrarActionPerformed(java.awt.event.ActionEvent evt)
{
txtCosto.setText();
txtDcto.setText();
txtIncre.setText();
txtIgv.setText();
txtMPagar.setText();
rbAudio.setSelected(false);
rbVideo.setSelected(false);

Ing. Roberto J. Macetas Rodrguez

40

TALLER DE PROGRAMACIN

rbLinea.setSelected(false);
chkContado.setSelected(false);
txtCosto.requestFocus();

Se limpian los cuadros de textos con slo poner en el mtodo setText() y a los
objetos botn de radio (JRadioButton) y el objeto de caja verificacin (JCheckBox)
se les aplica el mtodo setSelected() para lograr quitar la seleccin de estos
objetos. Lo ms importante es que los cuadros de textos estn limpios para poder
permitir el ingreso de nuevos datos.

En el botn de comando CERRAR (btnCerrar), luego de darle doble clic,


escribimos el siguiente cdigo: (lo escrito en azul)
private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt)
{
dispose();
}

El mtodo dispose() permite descargar el formulario y terminar la ejecucin de la


aplicacin.

Luego procedemos a ejecutar la aplicacin seleccionando frmAplicacion1 en la


pgina o pestaa Proyects (se encuentra al lado izquierdo del diseo del
formulario) y al dar clic botn derecho elegimos Run File.

Aplicacin 2
Vamos a construir una aplicacin en entorno visual que permita calcular la bonificacin, el
descuento y el sueldo neto de un trabajador dado el ingreso del sueldo bsico, el grado de
instruccin, la condicin laboral e indicando si tiene vivienda e hijos bajo las siguientes
consideraciones:
a) Por el grado de instruccin percibe una bonificacin de 5% del sueldo bsico si el
grado es Secundaria, 12% del sueldo bsico si es Universitaria y 18% del sueldo
bsico si es maestra.
b) Por la condicin laboral percibe una bonificacin del 4% del sueldo bsico si es
contratado, 10% del sueldo bsico si es nombrado y del 5% del sueldo bsico si es
de servicios no personales.
Ing. Roberto J. Macetas Rodrguez

41

TALLER DE PROGRAMACIN
c) Si tiene vivienda no percibe ninguna bonificacin pero si no tiene vivienda percibe
una bonificacin del 3% del sueldo bsico
d) Si tiene hijos percibe una bonificacin del 6% del sueldo bsico.
e) Se le aplica 11% del sueldo bruto (sueldo bsico + bonificaciones) por el pago de la
AFP y esto constituye un descuento en sus haberes.
f) El sueldo neto es igual al sueldo bruto menos el descuento.

Solucin:

Seleccionamos la carpeta de ejemplos, damos clic con el botn derecho del mouse
y elegimos la opcin New y posteriormente JFrameForm.

A continuacin, se visualiza la ventana de New JFrame Form donde colocaremos


como Class name (nombre de la clase) frmAplicacion2 y luego daremos clic en el
botn de comando Finish.

Ahora procedemos a disear el formulario, donde se har nfasis en el manejo de


los nuevos objetos de control. No olvidemos que cada vez que usemos un
formulario su Layout debe ser cambiado a Absolute Layout como se aprecia en la
siguiente figura:

Ing. Roberto J. Macetas Rodrguez

42

TALLER DE PROGRAMACIN

Dibujamos como etiqueta (usando un JLabel) la expresin: SUELDO BASICO: y


el cuadro de texto (Usando un JTextField). Tambin a travs de una etiqueta
(JLabel) colocamos la expresin Grado de Instruccin: y con 3 objetos
JRadioButton debemos expresar Secundaria, Universitaria y Maestra
haciendo uso de la propiedad Text de los objetos JRadioButton para cambiar las
expresiones. Adems con otra etiqueta (JLabel) colocamos la expresin
Condicin Laboral: y con 3 objetos JRadioButton debemos expresar
Contratado, Nombrado y Serv. No Pers.. Dado que tenemos que seleccionar
una opcin para Grado de Instruccin y otra opcin para la Condicin Laboral ser
necesario crear 2 objetos ButtonGroup. Recordemos que se arrastra desde la
paleta en dos instantes el objeto ButtonGroup.

Ing. Roberto J. Macetas Rodrguez

43

TALLER DE PROGRAMACIN

Usaremos para las opciones de Grado de Instruccin el objeto buttonGroup1 y


para las opciones de Condicin Laboral buttonGroup2. Esto permitir poder
seleccionar una opcin de las tres alternativas. Para es necesario seleccionar cada
objeto JRadioButton y usar en

la ventana de propiedades,

la propiedad

buttonGroup.

Continuamos con el diseo del formulario agregando los dems objetos de control
que se visualizan en el diseo del formulario y que fueron estudiados en la sesin
anterior. En el diseo del formulario se indican los nombres de los objetos y

Ing. Roberto J. Macetas Rodrguez

44

TALLER DE PROGRAMACIN
debemos recordar que para asignar un nombre a un objeto de control hay que
seleccionar al objeto y dando clic al botn derecho del mouse se procede a
seleccionar la opcin Change Variable Name.

Procedamos a programar en los botones de comando:


En el botn de comando CALCULAR (btnCalcular), luego de darle doble clic,
escribimos el siguiente cdigo: (lo escrito en azul)
private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt)
{
double boni=0.0, sb, dcto, sn, sbruto;
sb=Double.parseDouble(txtSB.getText());
if (rbSec.isSelected())
boni=sb*0.05;
if (rbUni.isSelected())
boni=sb*0.12;
if (rbMae.isSelected())
boni=sb*0.18;
if (rbCon.isSelected())
boni=boni+sb*0.04;
if (rbNom.isSelected())
boni=boni+sb*0.1;
if (rbSNP.isSelected())
boni=boni+sb*0.05;
if (chkSinV.isSelected()))
boni=boni+sb*0.03;
if (chkHij.isSelected())
boni=boni+sb*0.06;
sbruto=sb+boni;
dcto=sbruto*0.11;

Ing. Roberto J. Macetas Rodrguez

45

TALLER DE PROGRAMACIN

sn=sbruto-dcto;
txtBoni.setText(String.valueOf(boni));
txtDcto.setText(String.valueOf(dcto));
txtSN.setText(String.valueOf(sn));

Una vez declaradas las variables de memoria, en la variable sb se asigna el valor


introducido en el cuadro de texto txtSB gracias al mtodo getText() que logra
obtener el dato colocado en el objeto de control. Con la sentencia if se evala si
est seleccionada la opcin Secundaria y si es as se procede a calcular la
bonificacin. De igual manera se hace para Universitaria y para Maestra. Hasta
aqu se calcula la primera bonificacin por el concepto de Grado de Instruccin.
Ahora viene una segunda bonificacin por el concepto de Condicin Laboral para lo
cual la variable de memoria boni se comporta como variable acumulativa, as por
ejemplo, si el trabajador es de condicin Contratado para calcular la bonificacin
debo usar la instruccin boni=boni+sb*0.04; donde la variable boni contiene el
clculo por Grado de instruccin y se quiere sumar ahora por el concepto de
Condicin Laboral. Lo mismo se har con las otras opciones y se seguir
acumulando inclusive con las opciones definidas con el objeto JCheckBox (Casado
e Hijos) A continuacin se calcula el sueldo bruto, el descuento y el sueldo neto.
Luego los objetos de control txtBoni, txtDcto y txtSN reciben valores a travs de
las variables de memoria boni, dcto y sn en sus cuadros de textos gracias al
mtodo setText(), por supuesto previamente se tiene que convertir a cadena de
texto los valores numricos de las variables usando el mtodo valueOf() de la
clase String.

En el botn de comando BORRAR (btnBorrar), luego de darle doble clic,


escribimos el siguiente cdigo: (lo escrito en azul)
private void btnBorrarActionPerformed(java.awt.event.ActionEvent evt)
{
txtSN.setText();
txtBoni.setText();
txtDcto.setText();
txtSN.setText();
txtCosto.requestFocus();
}

Se limpian los cuadros de textos con solo poner en el mtodo setText(). Lo ms


importante es que los cuadros de textos estn limpios para poder permitir el ingreso
de nuevos datos.
Ing. Roberto J. Macetas Rodrguez

46

TALLER DE PROGRAMACIN

En el botn de comando CERRAR (btnCerrar), luego de darle doble clic,


escribimos el siguiente cdigo: (lo escrito en azul)
private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt)
{
dispose();
}

El mtodo dispose() permite descargar el formulario y terminar la ejecucin de la


aplicacin.

Luego procedemos a ejecutar la aplicacin seleccionando frmAplicacion1 en la


pgina o pestaa Proyects (se encuentra al lado izquierdo del diseo del
formulario) y al dar clic botn derecho elegimos Run File.

En el siguiente tema conoceremos a otro objeto de control y seguiremos trabajando con lo


aprendido con las sesiones 2 y 3.

AUTOEVALUACION
a) Responde a las siguientes preguntas:
1. El archivo de extensin java contiene el diseo de un formulario, el mismo que se
almacena dentro de un paquete (verdadero o falso)
2. El uso del objeto JOptionPane es necesario el paquete
3. Los objetos de control perteneciente al paquete swing controls son:
a. java.io

b. Jbutton

c. JTabbedPane

d.JRadioButton

4. Mtodo que permite conocer si un objeto JRadioButon se encuentra seleccionado , se


denomina:
b) Desarrolla las siguientes aplicaciones:
1. Construye una aplicacin que permita el ingreso de 3 nmeros y calcule el nmero
medio (es aquel que no es el mayor ni el menor de los 3 nmeros)
2. Elabora una aplicacin que permita seleccionar un tipo de moneda extranjera y dado
una cantidad en soles haga la conversin respectiva en la moneda extranjera
seleccionada. Disea t mismo tu formulario.
Ing. Roberto J. Macetas Rodrguez

47

TALLER DE PROGRAMACIN

CAPITULO II
OBJETOS DE CONTROL PARA LISTA Y CUADRICULA
DE DATOS

Ing. Roberto J. Macetas Rodrguez

48

TALLER DE PROGRAMACIN

USO DEL OBJETO JLIST

Objeto de Control JList


Un objeto de control JList permite dibujar en el formulario una caja de lista de opciones
(tems). Cuando el formulario se encuentra en la etapa de ejecucin se pueden
seleccionar sus tems. Pero para trabajar con este objeto es necesario usar un objeto de
la categora de Swing Containers denominado JScrollPane. El objeto JScrollPane permite
hacer que el objeto JList tenga barra de desplazamiento que es necesaria cuando el
nmero de tems es grande y no puede ser visto a simple vista en el objeto de control
JList. Cabe sealar que los objetos que pertenecen a Swing Containers sern estudiados
con mayor detalle en la segunda unidad de aprendizaje del curso, pero el uso de JList nos
obliga utilizar el objeto contenedor JScrollPane.

Propiedades ms usadas:

Model: Permite establecer los tems de la caja de lista.

Font: Permite establecer el tipo de letra en el objeto de control.

Enabled: Para habilitar o inhabilitar el uso del objeto de control.

Ing. Roberto J. Macetas Rodrguez

49

TALLER DE PROGRAMACIN
Mtodos ms usados:

setModel(): Permite vincular una variable objeto de tipo model a un objeto de


control JList.

getSelectedValue(): Contiene el tem seleccionado de la caja de lista.

getSelectedIndex(): Contiene el valor del ndice activo o ndice actual del tem
seleccionado de la caja de lista. El ndice es un valor numrico correlativo no visible
que va desde 0.

Evento ms usado:

ValueChanged(): Sucede cuando el usuario selecciona un tem de la caja de lista.

Aplicacin
Construir una aplicacin que permita el ingreso del nombre del alumno y poder
50
Ing. Roberto J. Macetas Rodrguez

TALLER DE PROGRAMACIN
seleccionar uno o varios cursos que ste quisiera llevar. El pago por los cursos
seleccionados podr ser pagado al contado o al crdito. Si el pago es al contado hay un
descuento del 5% del costo total de los cursos a llevar y si el pago es al crdito se pagar
un incremento del 7% del costo total. La aplicacin debe mostrar el descuento, el
incremento y el monto a pagar por los seleccionados.

Solucin:

Iniciamos con la creacin de un proyecto denominado Aplicaciones. Seleccionamos


del men, la opcin File y luego New Proyect. Aparece la ventana de New Proyect
y damos clic en el botn de comando Next. En la ventana New Java Application
indicamos como nombre de proyecto Aplicaciones creando como paquete
aplicaciones. Al dar clic en el botn de comando Finish nos encontramos con el
entorno de desarrollo.

Seleccionamos el paquete de aplicaciones y al dar clic con el botn derecho del


mouse elegimos la opcin New y luego JFrameForm.

Ing. Roberto J. Macetas Rodrguez

51

TALLER DE PROGRAMACIN

A continuacin se muestra la ventana New JFrame Form que debe quedar as:

No olvidemos de dar clic botn derecho del mouse sobre el formulario y establecer

Ing. Roberto J. Macetas Rodrguez

52

TALLER DE PROGRAMACIN
Absolute Layout en Set Layout.

Procedemos a colocar un objeto JLabel con la expresin ALUMNO: acompaado


de un cuadro de texto (JTextField). Luego, colocar un JLabel que exprese
Seleccionar Cursos y debajo de esta expresin dibujar un objeto JScrollPane.

En el objeto JScrollPane colocamos un objeto JList y al momento de llevarlo al

Ing. Roberto J. Macetas Rodrguez

53

TALLER DE PROGRAMACIN
diseo del formulario se muestra de la siguiente manera:

Luego queda el objeto JList dentro del objeto JScrollPane.

Seleccionamos el objeto de control Jlist1 y en la ventana de propiedades se tiene


una propiedad llamada model que permite colocar los tems dentro de la caja de
lista Jlist1.

Ing. Roberto J. Macetas Rodrguez

54

TALLER DE PROGRAMACIN

Luego de seleccionar el botn de comando referido a la propiedad model se


muestra la siguiente ventana:

Ing. Roberto J. Macetas Rodrguez

55

TALLER DE PROGRAMACIN

Ingresamos los nombres de los cursos tal como se muestra en la siguiente


ventana:

Luego dar clic en el botn de comando OK.

El diseo del formulario debe quedar as:

Luego vamos a colocar en el diseo del formulario otro objeto JScrollPane junto a

Ing. Roberto J. Macetas Rodrguez

56

TALLER DE PROGRAMACIN
JList1 para luego poner un objeto JList. En esta lista colocaremos los costos de
cada curso.

Adicionalmente pondremos en el diseo del formulario dos botones de comando


referido a Agregar y Eliminar y junto a ellos dos objetos JList, por supuesto
previamente debemos usar dos objetos JScrollPane.

Ing. Roberto J. Macetas Rodrguez

57

TALLER DE PROGRAMACIN

Posteriormente agregamos las formas de pago con dos objetos JRadioButton, los
botones de comando Calcular, Limpiar y Cerrar. Finalmente, los objetos que
mostrarn el descuento, el incremento y el monto a pagar por los cursos
seleccionados. El diseo del formulario debe quedar as:

Ing. Roberto J. Macetas Rodrguez

58

TALLER DE PROGRAMACIN

Ahora bien, si observamos en el diseo del formulario de las cuatros objetos JList,
dos de ellos ya tienen tems como lo son lstCursos y lstCostos. En cambio, los
objetos lstCursel y lstCos se llenarn en funcin a lo seleccionado y agregado con
el botn de comando Agregar. Por lo tanto, debemos definir un modelo (model)
para aquellas listas que se llenarn en tiempo de ejecucin. Por esto debemos
definir las variables modelo1 y modelo2 como DefaultListModel(), como se muestra
a continuacin (escribe lo que indica las flechas de color rojo):

Para que funcione correctamente la clase DefaultListModel es necesario agregar


el paquete import javax.swing.*; despus del paquete Aplicaciones.

Una vez definidas las variables modelo1 y modelo2, en el mtodo constructor se


debe indicar que la variable modelo1 es para la caja de lista lstCursel y la variable
modelo2 es para la caja de lista lstCos, todo esto se podr hacer con el mtodo
setModel(). Tambin hacemos que los botones de comando Agregar y Eliminar se
inhabiliten desde la ejecucin de la aplicacin.

Bien, ahora debemos programar sobre el objeto lsrCursos, para que el usuario al
momento de seleccionar un curso se marque simultneamente el costo y se habilite
el botn de comando Agregar. Para esto se debe seleccionar un evento de la caja
de lista lstCursos llamado ValueChanged perteneciente a ListSelection.

Ing. Roberto J. Macetas Rodrguez

59

TALLER DE PROGRAMACIN

En el evento mencionado programa lo siguiente:

Se declara una variable entera llamada ndice, esta variable recibe el valor del
ndice del tem seleccionado gracias al mtodo getSelectedIndex(). Por ejemplo, si
de la caja de lista lstCursos estuviera seleccionado Power Builder, ste mtodo
devolvera el valor de 1. El valor 0 lo tiene Visual Basic, el valor de 2 lo tiene Visual
Java y as sucesivamente. Lo que se quiere es seleccionar el tem de la caja de
lista de lstCostos que tenga el mismo ndice que lstCursos, para ello se usa el
Ing. Roberto J. Macetas Rodrguez

60

TALLER DE PROGRAMACIN
mtodo setSelectedIndex(indice) para dar el mismo ndice a la caja de lista
lstCostos. Finalmente, hacemos que el botn de comando Agregar se habilite con
el mtodo setEnabled().

A continuacin, escribimos el siguiente cdigo en el botn de comando Agregar


(slo se escribe lo que seala la llave de color rojo):

Aqu declaramos dos variables de tipo String llamados curso y costo y las variables
enteras cuenta, i y total. En la variable curso se almacena el curso seleccionado
en la lista lstCursos, el mtodo getSelectionValue() trae consigo el tem
seleccionado pero lo trae como objeto y al poner (String) hacemos que se
convierta en cadena para que pueda ser asignada a la variable curso. De igual
manera se hace con la variable costo. Para agregar un tem a una caja de lista se
usa el mtodo addElement perteneciente al objeto variable modelo1 o modelo2.
Con la variable cuenta se almacena el total de tems que hay en la caja de lista
lstCos pero a travs de la variable objeto modelo2. Con la sentencia repetitiva for
se busca extraer cada uno de los tems de la caja de lista lstCos e ir sumando en
cada interaccin para poder encontrar el costo total de los cursos seleccionados,
para esto usamos el mtodo elementAt() que devuelve un tem de una caja de lista
con slo indicar el valor del ndice. Finalmente en el objeto txtTotal se visualiza el
contenido de la variable total e inhabilitamos el botn de comando Agregar.

Ahora programamos en la caja de lista lstCursel el evento ValueChanged cuando


queramos seleccionar un curso para luego eliminarlo (slo escribe lo que seala la

Ing. Roberto J. Macetas Rodrguez

61

TALLER DE PROGRAMACIN
llave de color rojo).

La idea es la misma que se aplic en la programacin sobre el evento


ValueChanged del objeto lstCursos. La diferencia est en que esta vez se habilita
el botn de comando Eliminar.

En el botn de comando Eliminar colocamos la siguiente programacin (slo se


escribe lo que seala la llave de color rojo):

Lo novedoso de esta programacin es la presencia del mtodo remove() que


elimina un tem de la lista a travs de la variable objeto modelo1 modelo2 dado
el valor del ndice. Al final de la programacin se vuelve a calcular el costo total de
los cursos seleccionados y se inhabilita el botn de comando Eliminar.

Ahora procedemos a programar en el botn de comando Calcular (slo se escribe


lo que seala la llave de color rojo):

Ing. Roberto J. Macetas Rodrguez

62

TALLER DE PROGRAMACIN

A continuacin procedemos a programar en el botn de comando Limpiar (slo se


escribe lo que seala la llave de color rojo):

En esta programacin, la novedad est en que para limpiar totalmente una caja de
lista se hace con el mtodo clear() perteneciente a las variables objeto modelo1 y
modelo2, con lo cual tambin se hace la limpieza a los objetos lstCursel y lstCos.
Tambin, hacemos el uso del mtodo setSelectedIndex() dando el valor de 5, ya
que dicho ndice no existe en la caja de lista, lo que hace que se pierda lo
seleccionado.

Finalmente programamos en el botn de comando Cerrar:

Ing. Roberto J. Macetas Rodrguez

63

TALLER DE PROGRAMACIN

En el siguiente tema conoceremos a otro objeto de control y seguiremos trabajando con lo


aprendido con las sesiones 2, 3 y 4.

Ing. Roberto J. Macetas Rodrguez

64

TALLER DE PROGRAMACIN

USO DEL OBJETO JCOMBOBOX

Objeto de Control JComboBox


Un objeto de control JComboBox permite dibujar en el formulario una lista desplegadle, la
cual contiene opciones (tems). ComboBox significa cuadro combinado porque combina
un cuadro de texto con una caja de lista, es como si fuera un JTextField mezclado o
combinado con un JList. Tiene la particularidad de que se debe seleccionar un botn de
comando de despliegue y luego seleccionar la opcin o tem.

Una vez dado clic en el botn de despliegue se muestra las opciones o tems del objeto

Ing. Roberto J. Macetas Rodrguez

65

TALLER DE PROGRAMACIN

Propiedades ms usadas:

Model: Permite establecer los tems de la caja de lista.

Font: Permite establecer el tipo de letra en el objeto de control.

Enabled: Para habilitar o inhabilitar el uso del objeto de control.

getSelectedIndex: Contiene el ndice del tem seleccionado

setSelectedItem: Contiene el tem seleccionado

Mtodos ms usados:

setModel(): Permite vincular una variable objeto de tipo model a un objeto de


control JList.

getItemAt(): Devuelve el tem que est en el ndice que se especifica.

getSelectedIndex(): Contiene el valor del ndice activo o ndice actual del tem
seleccionado de la caja de lista. El ndice es un valor numrico correlativo no visible
que va desde 0.

Evento ms usado:

ValueChanged(): Sucede cuando el usuario selecciona un tem de la caja de lista.

Aplicacin
Construir una aplicacin que permita el ingreso del nombre del alumno y poder
seleccionar de una lista desplegadle una categora de los cursos. Al momento de
seleccionar la categora se debe mostrar los cursos con sus respectivos costos en las
cajas de listas (los JList que se muestran al lado izquierdo del diseo del formulario). Una
vez visualizado los cursos el usuario puede seleccionar y agregar en las cajas de listas
(los JList que se muestran al lado derecho del diseo del formulario) los cursos solicitados
por el alumno. El pago por el servicio de enseanza se establece de la siguiente manera:
Ing. Roberto J. Macetas Rodrguez

66

TALLER DE PROGRAMACIN

Existe un pago por matrcula del 80% del costo total (suma de los costos de los
cursos escogidos) siempre y cuando quiera el alumno llevar un solo curso, 60% del
costo total si lleva dos cursos y 50% del costo total si lleva 3 o ms cursos.

El costo total tiene un descuento del 10% si la forma de pago es al contado y un


incremento del 10% si es al crdito.

Existe un pago mensual cuando la forma de pago es al crdito y es equivalente al


costo total incrementado dividido en 4 cuotas.

Solucin:

Usars el mismo proyecto utilizado en la sesin anterior y slo agregars un


formulario (JFrame).

Inmediatamente se muestra la siguiente ventana:

Luego dar clic en el botn de comando Finish.


Ing. Roberto J. Macetas Rodrguez

67

TALLER DE PROGRAMACIN

A continuacin se muestra el entorno de desarrollo de NetBeans y no olvides de


dar clic en el botn derecho del mouse sobre el formulario y establece Absolute
Layout en Set Layout.

Procede a colocar un objeto JLabel con la expresin ALUMNO: acompaado de


un cuadro de texto (JTextField). Por debajo de ALUMNO: colocar un objeto JLabel
que exprese Categora de Cursos: y al lado derecho de ste objeto colocar un
objeto JComboBox.

Selecciona el objeto JComboBox y elige en la ventana de propiedades la propiedad

Ing. Roberto J. Macetas Rodrguez

68

TALLER DE PROGRAMACIN
model que permite colocar los tems dentro de la caja de lista desplegadle.

Luego de seleccionar el botn de comando referido a la propiedad model se


muestra la siguiente ventana:

Ingresas las categoras de cursos como son: <Seleccionar>, Diseo Grfico, Diseo
Web, Ofimtica, Lenguajes de Programacin y Sistemas Operativos, quedando el
diseo del formulario de la siguiente manera:

Ing. Roberto J. Macetas Rodrguez

69

TALLER DE PROGRAMACIN

Colocars un objeto JLabel con la expresin Cursos Ofertados y otro objeto


JLabel ubicado al lado derecho de ste ltimo con la expresin Costo. Aades
dos listas debajo de las expresiones de estos dos ltimos JLabel, haciendo que los
tems sean eliminados o removidos a travs del uso de la propiedad model. Luego
agregas

dos

botones

de

comando

que

indiquen

Agregar

Eliminar.

Posteriormente, aades dos objetos JLabel que expresen: Cursos Escogidos y


Costo y debajo de estos objetos JLabel agregas dos objetos JList siendo tambin
eliminados o removidos los tem a travs del uso de la propiedad model.

A continuacin agregas un objeto JLabel con la expresin Forma de Pago: y al


lado derecho de ste ltimo objeto colocas un JComboBox que debe contener
como tems: <Seleccionar>, Contado y Crdito. Luego los botones de comando
CALCULAR, BORRAR y CERRAR y los objetos que mostrarn el monto de la
matrcula, el costo total y el pago mensual. Los nombres de los objetos de control
dibujados en el formulario queda de la siguiente manera:

Ing. Roberto J. Macetas Rodrguez

70

TALLER DE PROGRAMACIN

Ahora bien, si observamos en el diseo del formulario, los cuatros objetos JList no
tienen tems. Los objetos JList referidos a Cursos Ofertados y Costo (objetos
ubicados al lado izquierdo del diseo del formulario) se llenarn de tems de
acuerdo a lo seleccionado en la lista desplegadle referido a la Categora de Cursos.
Los objetos JList referidos a Cursos Escogidos y Costos se llenarn en la medida
que se seleccione un curso ofertado y se agregue con el botn de comando
Agregar. Los 4 objetos JList deben tener un modelo (model) cada uno, para ello
debes definir 4 variables: modelo1, modelo2, modelo3 y modelo4 del tipo
DefaultListModel(). Para poder hacer uso de la clase DefaultListModel se debe
hacer uso del paquete javax.swing.*; y debe ser escrito despus del paquete
Aplicaciones.

Ahora procede a escribir la definicin de las variables del tipo DefaultListModel en


la clase frmCursosExtension.
Ing. Roberto J. Macetas Rodrguez

71

TALLER DE PROGRAMACIN

Una vez definido las 4 variables de memoria del tipo DefaultListModel, en el


mtodo constructor se debe indicar que la variable modelo1 es para la caja de
lista lstCurOfer, la variable modelo2 para la caja de lista lstCostos, la variable
modelo3 es para la caja de lista lstCurEsco y la variable modelo4 es para la caja
de lista lstCos. Tambin hacemos que los botones de comando Agregar y Eliminar
se inhabilite su uso desde la ejecucin de la aplicacin. Adems le indicamos una
localizacin dentro de la pantalla y el tamao del formulario (slo escribe lo que
seala la llave de color rojo).

Ahora le toca el turno en la programacin al objeto JComboBox denominado


cboCategorias en el evento ActionPerformed, para ello debes seleccionar el objeto
mencionado y dando clic botn derecho del mouse eliges Events y luego como
Actions seleccionas ActionPerformed.

Ing. Roberto J. Macetas Rodrguez

72

TALLER DE PROGRAMACIN

En el evento mencionado programa lo siguiente (slo escribe lo que seala la llave


de color rojo):

Se declara una variable de memoria llamada indice para que almacene el ndice
Ing. Roberto J. Macetas Rodrguez

73

TALLER DE PROGRAMACIN
actual del tem seleccionado del objeto JComboBox llamado cboCategorias.
Sabiendo el valor del ndice actual o activo se hace uso de una sentencia selectiva
switch que evala cul de los tems ha sido seleccionado. Se sabe que el primer
tem de la lista desplegadle es <Seleccionar> y le corresponde el ndice 0, Diseo
Grfico el ndice 1, Diseo Web el ndice 2 y as sucesivamente. Cuando sea
<Seleccionar> solo se procede a limpiar los objetos lstCurOfer y lstCostos a
travs del mtodo clear() aplicados a las variables modelo1 y modelo2. Si el tem
seleccionado es Diseo Grfico se procede a limpiar los objetos lstCurOfer y
lstCostos y se agrega los nombres de los cursos Corel Draw y Photo Show con
sus respectivos costos a travs del uso del mtodo addElement aplicados a las
variables modelo1 y modelo2 que tienen relacin directa con los objetos
lstCurOfer y lstCostos. De igual forma se trabaja para los dems tems del objeto
JComboBox llamado cboCategorias.

Si en estos momentos procedes a ejecutar la aplicacin se mostrar el formulario


de la siguiente manera:

Y si seleccionas el tem Diseo Grfico se visualizar los cursos con sus


respectivos costos en los JList del lado izquierdo del diseo del formulario.

Ing. Roberto J. Macetas Rodrguez

74

TALLER DE PROGRAMACIN

Salte de la ejecucin y continuemos con la programacin.

Selecciona el objeto lstCurOfer y ubcate en el evento ValueChaged perteneciente


a ListSelection y ste a su vez pertenece a Events. Recuerda que esto se hace
seleccionando al objeto lstCurOfer y dando clic botn derecho del mouse se
muestra un men flotante. En el evento mencionado programa lo siguiente:

Se declara una variable entera llamada ndice, esta variable recibe el valor del
ndice del tem seleccionado gracias al mtodo getSelectedIndex(). Lo que se
quiere es seleccionar el tem de la caja de lista de lstCostos que tenga el mismo
ndice que lstCurOfer, para ello se usa el mtodo setSelectedIndex(indice) para
dar el mismo ndice a la caja de lista lstCostos. Finalmente hacemos que el botn
de comando Agregar se habilite con el mtodo setEnabled()

A continuacin escribe el siguiente cdigo en el botn de comando Agregar (slo


escribe lo que seala la llave de color rojo):

Ing. Roberto J. Macetas Rodrguez

75

TALLER DE PROGRAMACIN

Aqu declaramos dos variables de tipo String llamados curso y costo y las variables
enteras total y i. En la variable curso se almacena el curso seleccionado en la lista
lstCurOfer, el mtodo getSelectionValue() trae consigo el tem seleccionado pero
lo trae como objeto y al poner (String) hacemos que se convierta en cadena de
caracteres para que pueda ser asignada a la variable curso. De igual manera
se hace con la variable costo. Para agregar un tem a una caja de lista se usa el
mtodo addElement perteneciente al objeto variable modelo3 o modelo4.
Finalmente inhabilitamos el botn de comando Agregar.

Ahora programa en la caja de lista lstCurEsco en el evento ValueChanged cuando


desees seleccionar un curso para luego eliminarlo (slo escribe lo que seala la
llave de color rojo).

La idea es la misma que se aplic en la programacin sobre el evento


ValueChanged del objeto lstCurOfer. La diferencia est en que esta vez se habilita
el uso del botn de comando Eliminar.

En el botn de comando eliminar colocas la siguiente programacin (slo escribe lo


que seala la llave de color rojo):

Ing. Roberto J. Macetas Rodrguez

76

TALLER DE PROGRAMACIN

En esta programacin se hace uso del mtodo remove() que elimina un tem de la
lista a travs de la variable objeto modelo3 modelo4 dado el valor del ndice. Al
final de la programacin se inhabilita el botn de comando Eliminar.

Ahora procede a programar en el botn de comando Calcular (slo escribe lo que


seala la llave de color rojo):

Se declara la variable de memoria cuenta que almacena la cantidad de tems


Ing. Roberto J. Macetas Rodrguez

77

TALLER DE PROGRAMACIN
existentes en la caja de lista lstCurEsco a travs del uso del mtodo Size()
aplicado a la variable modelo3. Tambin se declara una variable de memoria i de
tipo entero y tres variables de tipo float para el clculo de la matrcula, el costo total
y el pago mensual. A travs de una sentencia for se procede a obtener los valores
de la caja de lista lstCos usando la variable modelo4 con el mtodo elementAt(),
para que estos valores sean sumados ya acumulados en la variable de memoria
ctotal. En la primera sentencia if se procede a averiguar si las cajas de listas
lstCurEsco y LstCos tiene tems, si no tienen tems se visualiza un mensaje de
error indicando la necesidad de seleccionar y agregar cursos y se procede a
suspender la ejecucin del programa gracias a instruccin return (retornar). En los
siguientes tres if se calcula el monto de la matrcula aplicando el porcentaje indicado
en el enunciado de la aplicacin. En la siguiente sentencia if se evala si se
seleccion una forma de pago y si no se logr hacerlo muestra un mensaje de
error y suspende la ejecucin del programa. Luego con las siguientes sentencias if
se evala la forma de pago y se procede hacer los clculos respectivos. Finalmente
se los resultados en las variables de memoria de tipo float se envan a los objetos
JTextField par ser visualizados en el formulario.

La programacin en los botones de comando Borrar y Cerrar es de la misma forma


como se aplic en los temas o sesiones anteriores. Cuando procedas a ejecutar tu
aplicacin se debe visualizar el formulario y una vez interactuado se mostrarn los
resultados.

Ing. Roberto J. Macetas Rodrguez

78

TALLER DE PROGRAMACIN

Ing. Roberto J. Macetas Rodrguez

79

TALLER DE PROGRAMACIN

USO DEL OBJETO JTABLE

Objeto de Control JTable


Como programadores, sabemos muy bien que la presentacin de datos tabulados es una
de las tareas ms comunes que se presentan al momento de crear interfaces grficas;
desde la simple tabla que permite nicamente mostrar el resultado de una consulta, hasta
las que permiten editar directamente el contenido de cada celda, ordenar las columnas,
personalizar su apariencia, etc. Todas las tareas antes descritas, y muchas otras, son
posibles de realizar utilizando la clase JTable; por supuesto, mientras ms complejo sea el
requerimiento a cubrir, se requerir en igual medida utilizar ms mtodos o recursos de la
clase.
Los modelos de tabla son objetos que implementan la interface TableModel; a travs de
ellos es posible personalizar mucho ms y mejor el comportamiento de los componentes
JTable, permitiendo utilizar al mximo sus potencialidades.
El siguiente grfico intenta mostrar cmo cada componente JTable obtiene siempre sus
datos desde un modelo de tabla.
Ing. Roberto J. Macetas Rodrguez

80

TALLER DE PROGRAMACIN

La clase AbstractTableModel es la que implementa directamente a la interface


TableModel, aunque es esta clase la que se recomienda extender para utilizarla como
modelo de tabla, existe un modelo de tabla predeterminado que facilita mucho el trabajo
con tablas. Este modelo predeterminado es la clase DefaultTableModel.

Propiedad ms usada:

Model: Permite definir el nmero de columnas y filas del objeto como tambin las
expresiones que irn en las columnas.

Mtodos ms usados:

addColumn(): Aade la columna al final de la matriz de columnas.

setModel(): Asigna el modelo de datos al objeto JTable.

GetRowCount(): Devuelve el nmero de filas en la tabla.

DefaultTableModel
Esta clase permite construir el modelo para el objeto JTable. Los mtodos ms utilizados
son:

addColumn(): Aade una columna al modelo.

AddRow(): Aade una fila al final del modelo.

getColumnCount(): Devuelve el nmero de columnas en esta tabla de datos.

getRowCount(): Devuelve el nmero de filas en esta tabla de datos.

getValueAt(): Devuelve un valor de atributo para la celda en la posicin row,


column.

insertRow(): Inserta una fila en el modelo.

RemoveRow(): Elimina del modelo segn la posicin de la fila indicada.

Aplicacin
Construir una aplicacin que permita calcular el promedio de las notas obtenidas en el
curso de Programacin Visual. La aplicacin debe permitir el ingreso del nombre del
Ing. Roberto J. Macetas Rodrguez

81

TALLER DE PROGRAMACIN
alumno, la nota de la I Unidad, la nota de la II Unidad y la nota de la III Unidad. Adems
debe permitir la seleccin del turno a la que pertenece el alumno. A travs de un botn de
comando debe agregar los datos en un objeto Jtable, calculando el promedio de las notas;
y a travs de otro botn de comando debe eliminar la fila seleccionada en el objeto
JTable. Tambin se debe mostrar el total de filas agregadas en el objeto JTable.

Solucin:

Usaremos el mismo proyecto utilizado en la sesin anterior y slo agregars un


formulario (JFrame).

Inmediatamente se muestra la siguiente ventana:

Luego dar clic en el botn de comando Finish.

Ing. Roberto J. Macetas Rodrguez

82

TALLER DE PROGRAMACIN

A continuacin se muestra el entorno de desarrollo de NetBeans y no olvides de


dar clic en el botn derecho del mouse sobre el formulario y establece
AbsoluteLayout en Set Layout.

Procedemos a colocar un objeto JLabel con la expresin CALIFICACIONES DEL


CURSO DE PROGRAMACION VISUAL. Debajo de ste ttulo ubicar un objeto
JLabel con la expresin ALUMNO: acompaado de un cuadro de texto
(JTextField) . A continuacin, colocar otro JLabel con la expresin Nota de la I
Unidad acompaado de un cuadro de texto y de igual manera hacerlo para la
segunda y tercera unidad. Luego agregamos un objeto JComboBox para

seleccionar el turno.

Seleccionamos el objeto JComboBox y elegimos en la ventana de propiedades, la


propiedad model que permite colocar los tems dentro de la caja de lista
desplegadle. Elegimos el botn de comando referido a la propiedad model se

Ing. Roberto J. Macetas Rodrguez

83

TALLER DE PROGRAMACIN
muestra la siguiente ventana:

Ingresamos <Seleccionar>,Maana, Tarde y Noche y luego hacemos clic en


el botn de comando OK. Continuamos con el diseo del formulario agregando un
botn de comando Agregar y un botn de comando Eliminar. Luego procedemos
a agregar el objeto JTable.

Al ser dibujado el objeto JTable se observa en el panel de la izquierda que se


vincula a un objeto JScrollPane. El objeto JTable tiene como propiedad principal a
model.

Ing. Roberto J. Macetas Rodrguez

84

TALLER DE PROGRAMACIN

Luego de seleccionar el botn de comando referido a la propiedad model se


muestra la siguiente ventana:

Observamos en la ventana anterior que por defecto el objeto Table propone la


conformacin de 4 columnas y 4 filas, dando la posibilidad de aumentar o disminuir
el nmero de columnas y filas. Adems podemos establecer los ttulos de cada

Ing. Roberto J. Macetas Rodrguez

85

TALLER DE PROGRAMACIN
columna. Aqu debemos hacer hincapi que las columnas y las filas son tipo
Object esto quiere decir que un objeto JTable es una matriz de objetos (arreglo
bidimensional). Nosotros vamos a establecer el nmero de columnas a travs de la
programacin y las filas se crearn en la medida que se necesiten.

Los nombres de los objetos de control dibujados en el formulario queda de la


siguiente manera:

Vamos a proceder a programar. Comenzamos con hacer uso del paquete swing y
especficamente a las clases JOptionPane y a la clase JTable.

Luego procedemos a crear un modelo para el objeto JTable llamado Tabla a travs

Ing. Roberto J. Macetas Rodrguez

86

TALLER DE PROGRAMACIN
de la clase DefaultTableModel. Lo hacemos dentro de la clase frmNotas. Usar la
clase DefaultTableModel es posible gracias al import javax.swing.table.*;

Declaramos y creamos una variable de memoria dtm del tipo DefaultTableModel.

En el mtodo constructor programamos lo siguiente (slo escribe lo que se seala


la llave de color rojo):

Declaramos y creamos una variable de memoria titulos del tipo cadena y es un


arreglo. Esta variable titulos se inicializa con los valores Alumno, I Unidad, II
Unidad, III Unidad, Promedio y Turno, que sern los ttulos de las columnas
del objeto JTable. Luego, con el mtodo setColumnIdentifiers() se define las
columnas con sus respectivos ttulos en la variable dtm (modelo del JTable llamado
Tabla). Finalmente, se vincula el modelo, representado en la variable dtm, al objeto
JTable llamado Tabla.

Si en estos momentos decidimos ejecutar nuestra aplicacin, quedara nuestro


formulario as:

Observamos que el objeto JTable muestra las columnas definas en la


Ing. Roberto J. Macetas Rodrguez

87

TALLER DE PROGRAMACIN
programacin hecha en el mtodo constructor.

Procedamos con la programacin del botn de comando Agregar (slo escribe lo


que se seala la llave de color rojo).

Declaramos y creamos una variable de memoria datos de tipo String y de tamao


6. Luego, declaramos las variables de memoria n1, n2, n3 y total de tipo entero, la
variable promedio de tipo double y una variable de memoria verifica de tipo
booleano. Las variables de memoria n1, n2 y n3 reciben los valores ingresado en
los cuadros de textos txtn1, txtn2 y txtn3 respectivamente. Con la variable de
memoria verifica se pretende evaluar si se lleg a escribir en los cuadros de textos
y se haya seleccionado un turno. Con la sentencia IF evaluamos la variable verifica
y con el operador ! hacemos negacin, es decir, si la variable verifica es falso
entonces con ! se convierte en verdadero. Si la variable verifica es falso significa
que se ingres los datos en los cuadros de textos y se seleccion el turno, entonces
procedemos a calcular el promedio teniendo presente que las variables n1,n2, n3
siendo enteras deben ser tratadas como reales (double). Posteriormente, hacemos
uso del arreglo datos asignando los datos ingresados y el turno seleccionado en
cada uno de los elementos. Con el mtodo addRow() logramos crear una fila con
los valores contenidos con el vector o arreglo datos. Luego, limpiamos los
cuadros de textos y hacemos que el objeto JComboBox quede en
Ing. Roberto J. Macetas Rodrguez

88

TALLER DE PROGRAMACIN
<Seleccionar> al dar el valor cero al mtodo setSelectedIndex(). Si la variable
verifica es verdadero significa que falta ingresar algn dato o seleccionar el turno.
Finalmente, se muestra la cantidad de filas agregadas en el cuadro de texto txtTotal
y haciendo uso del mtodo setRowCount() perteneciente a dtm.

Procedamos con la programacin del botn de comando Eliminar.

Declaramos las variables fila y total de tipo entero. La variable fila se le asigna el
valor de la posicin de la fila seleccionada en el objeto JTable llamado Tabla. Con
la sentencia IF se evala a la variable fila si es mayor o igual a cero procedemos a
remover o borrar la fila previamente seleccionad, caso contrario se muestra un
mensaje indicando que se debe seleccionar una fila en la Tabla. Finalmente, se
muestra la cantidad de filas agregadas en el cuadro de texto txtTotal y haciendo
uso del mtodo setRowCount() perteneciente a dtm.

Procedemos finalmente a ejecutar el formulario.

AUTOEVALUACION
a) Responde a las siguientes preguntas:
1. Objeto de control que permite colocar una lista de tems para que el usuario pueda
seleccionar, se denomina
2. Objeto de control que permite seleccionar una sola opcin al desplegar una lista de
alternativas, se denomina
3. Objeto de control que permite visualizar los datos a manera de cuadrcula o celdas, se
denomina
4. Mtodo que devuelve el tem seleccionado de una caja de lista, se denomina
Ing. Roberto J. Macetas Rodrguez

89

TALLER DE PROGRAMACIN
5. La clase DefaultComboBoxModel permite crear un modelo para el manejo de un objeto
de control JComboBox. (verdadero o falso):

b) Desarrolla las siguientes aplicaciones:


1. Disea una aplicacin que permita ingresar nmeros y los califique en nmeros pares
en una caja de lista y nmeros impares en otra caja de lista. Luego se calcule la suma y el
promedio de los nmeros pares y de los nmeros impares. El diseo del formulario lo
propones t mismo.
2. Disea una aplicacin que permita ingresar el nombre del candidato, el nombre del
partido o movimiento al que pertenece y la cantidad de votos obtenidos en las elecciones
municipales (usar una cuadricula para colocar los datos ingresados). Posteriormente usar
un objeto de control JComboBox que contendr las opciones: Candidato de mayor
votacin, Candidato de menor votacin. Una vez elegido la opcin del objeto JComboBox
se debe mostrar los datos del candidato. El diseo del formulario lo propones t mismo.

Ing. Roberto J. Macetas Rodrguez

90

TALLER DE PROGRAMACIN

CAPITULO III
OBJETOS CONTENEDORES Y MENUS

Ing. Roberto J. Macetas Rodrguez

91

TALLER DE PROGRAMACIN

USO DEL OBJETO JFRAME

Objeto de Control JFrame


Hasta el momento hemos hablado muy poco o casi nada del objeto JFrame, es decir,
acerca del formulario. Es un objeto contenedor por excelencia debido a que es un interface
que facilita hacer los procesos que necesita el usuario de la aplicacin. En este objeto
podemos situar todos los dems componentes que necesitemos para el desarrollo de la
interface de nuestra aplicacin.

En la figura anterior muestra la jerarqua de herencia de este componente desde Object,


que es el padre de todas las clases de Java. Los mtodos estarn repartidos a lo largo de
Ing. Roberto J. Macetas Rodrguez

92

TALLER DE PROGRAMACIN
toda la jerarqua. As por ejemplo, resulta intuitivo que debiera haber un mtodo para
cambiar el color de fondo del formulario, pero l no tiene ningn mtodo para ello, lo tiene
Componet.

Propiedades ms usadas:

Title: Permite definir el ttulo del formulario, es decir, la etiqueta de la barra de ttulo.

Font: Se establece el tipo de letra y el tamao que servir de base a cualquier


expresin que se coloque con cualquier objeto de control dentro del formulario

Enabled: Permite habilitar o inhabilitar el uso del objeto.

Mtodos ms usados:

setTitle(): Aade el ttutlo en el formulario.

setSize(): Establece el tamao del formulario.

setLocation(): Establece la ubicacin del formulario dentro de la pantalla.

setVisible(): Establece la visibilidad del objeto. Usa valores booleanos.


Ing. Roberto J. Macetas Rodrguez

93

TALLER DE PROGRAMACIN

setIconImage(): Establece el cono que se colocar al lado izquierdo del ttulo del
formulario.

show(): Permite cargar un formulario a la maemoria para ser vista por el usuario.

Hide(): Permite ocultar al formulario.

Aplicacin
Construye una aplicacin que permite ingresar el nombre del postulante, la cantidad de
preguntas bien contestadas y la cantidad de preguntas mal contestadas. La suma entre
las preguntas bien y mal contestadas no debe superar a 100. Por cada pregunta bien
contestada vale 4.08 puntos y por cada pregunta mal contestada vale -1.04 puntos. Se
agregarn los datos antes mencionados en objetos JList y se debe obtener el postulante
de mayor puntaje o el postulante de menor puntaje en un segundo formulario. Usar los
atributos y mtodos de la clase JFrame.

Solucin:
1. Procedemos a crear un proyecto denominado Practica, la misma que contendr al
paquete practica. A partir de ste paquete vamos a crear un formulario con el
objeto JFrame, seleccionando dicho paquete y al dar clic con el botn derecho del
mouse se muestra un men flotante. Seleccionemos Formulario JFrame.

2. A continuacin, colocaremos como nombre al formulario frmPostulante.

Ing. Roberto J. Macetas Rodrguez

94

TALLER DE PROGRAMACIN

Luego dar clic en el botn de comando Finish (en caso de que la versin de
NetBeans es en castellano entonces dar clic en el botn de comando Terminar)

3. Se muestra el entorno de desarrollo de NetBeans y no olvidemos de dar clic en el


botn derecho del mouse sobre el formulario y establece Absolute Layout en
SetLayout.

4. Procedemos a colocar los objetos de control, tal como lo apreciamos en el siguiente


diseo de formulario.

Ing. Roberto J. Macetas Rodrguez

95

TALLER DE PROGRAMACIN

5. Procedemos a quitar los tems de cada uno de las cajas de listas.

6. Los objetos de control en el diseo del formulario tienen los siguientes nombres:

Ing. Roberto J. Macetas Rodrguez

96

TALLER DE PROGRAMACIN

7. Ahora bien, si observamos en el diseo del formulario, los cuatro objetos JList no
tienen tems. Los objetos JList referidos a Postulante, Buenas, Malas y Puntaje, se
llenarn de tems al momento de usar el botn de comando Agregar. Siendo cuatro
JList entonces necesitamos cuatro modelos del tipo DefaultListModel, uno para
cada JList, para lo cual debemos incluir en el cdigo de la programacin el paquete
swing con la siguiente instruccin:

Ahora

procedemos

escribir

la

definicin

de

las

variables

del

tipo

DefaultListModel en la clase frmPostulante

Ing. Roberto J. Macetas Rodrguez

97

TALLER DE PROGRAMACIN

8. Una vez definido las 4 variables de memoria del tipo DefaultListModel, en el


mtodo constructor se debe indicar que la variable modelo1 es para la caja de lista
lstPost, la variable modelo2 para la caja de lista lstBuenas, la variable modelo3
para la caja de lista lstMalas y la variable modelo4 para la caja de lista lstPuntaje.
Antes haremos uso del mtodo setTitle() para definir el ttulo del formulario en la
barra de ttulo cuya expresin es Postulantes al Examen de Admisin. Tambin
hacemos que los botones de comando Agregar y Eliminar se inhabilite su uso
desde la ejecucin de la aplicacin. Los cuadros de textos txtPost, txtBien y
txtMal deben inhabilitarse su uso en el momento de la ejecucin. Haremos uso de
los mtodos del objeto JFrame llamados setSize() y setLocation() para darle el
tamao apropiado al formulario y ubicacin dentro de la pantalla. El operador this
hace referencia al formulario frmPostulante. Slo escribe lo que seala la llave de
color rojo.

Ing. Roberto J. Macetas Rodrguez

98

TALLER DE PROGRAMACIN
9. Procedemos

definir

cuatro

atributos

propiedades

para

la

clase

frmPostulante. Las lneas de cdigo programacin lo puedes escribir despus de


las lneas de cdigo que definieron a las cuatro variables de tipo DefaultListModel

Los atributos mayor y menor es para almacenar el mayor y menor puntaje de los
postulantes ingresados en los objetos JList y los atributos postMay y postMen es
para almacenar el nombre del postulante de mayor puntaje y el nombre del
postulante de menor puntaje.

Ing. Roberto J. Macetas Rodrguez

99

TALLER DE PROGRAMACIN
10. Debajo de la definicin de los atributos, vamos a construir los mtodos que nos
permitan dar y obtener el valor a cada uno de los atributos. Comenzaremos por los
atributos mayor y menor definiendo los siguientes mtodos:

El mtodo setMayor() tiene un parmetro llamado m de tipo double y con el


operador void significa que no tiene el mtodo valor de retorno. Este mtodo
servir almacenar en el atributo mayor el valor del parmetro m. En cambio el
mtodo getMayor() no tiene parmetro pero su valor de retorno es double, es
decir, que ste mtodo arroja o se puede obtener el valor almacenado en el atributo
mayor. Lo mismo sucede para los mtodos setMenor() y getMenor(). Vamos a
proceder a crear los mtodos para los atributos postMay y postMen.

Ing. Roberto J. Macetas Rodrguez

100

TALLER DE PROGRAMACIN

11. Vamos a proceder a programar en el botn de comando Nuevo.

12. Ahora programemos en el botn de comando Agregar.

Ing. Roberto J. Macetas Rodrguez

101

TALLER DE PROGRAMACIN

Procedemos a declarar las variables buenas y malas como enteras y puntaje


como real (double). Las variables de memoria enteras reciben los valores
ingresados en los cuadros de textos txtBien y txtMal y la variable puntaje se
almacena el resultado segn el valor de las preguntas bien y mal contestadas. Con
la sentencia IF evala que la cantidad de preguntas contestadas no superen a 100.
Si no supera a 100 procedemos agregar en las cajas de listas a travs de las
variables de tipo DefaultListModel.

13. Programemos en el objeto JList denominado lstPost en el evento ValueChanged.

En esta programacin se busca que al momento de seleccionar a un postulante en


la caja de lista lstPost, se seleccione inmediatamente la cantidad de preguntas
bien contestadas, la cantidad de preguntas mal contestadas y el puntaje en las
dems cajas de listas. Se finaliza habilitando el uso del botn de comando Eliminar.

14. Programemos en el botn de comando Eliminar en el evento

Ing. Roberto J. Macetas Rodrguez

102

TALLER DE PROGRAMACIN

Eliminamos lo seleccionado con el mtodo remove perteneciente a los modelos de


cada caja de lista.

15. Es hora de crear el segundo formulario. Para ello seleccionamos el paquete practica
y en la opcin New (nuevo) elegimos Formulario JFrame. A ste formulario se
llamar frmConsulta, siendo el diseo el siguiente:

16. Es necesario que los objetos JRadioButton pertenezcan a un ButtonGroup.

17. Procedemos a colocar los nombres a los objetos de control.


Ing. Roberto J. Macetas Rodrguez

103

TALLER DE PROGRAMACIN

18. El formulario frmConsulta ser activado al momento de dar clic en el botn de


comando btnConsultar del primer formulario frmPostulante. Volvamos al primer
formulario y programemos en el botn Consultar.

Ing. Roberto J. Macetas Rodrguez

104

TALLER DE PROGRAMACIN
La programacin se inicia con la declaracin de variables de tipo entero, real y
cadena de caracteres. En la variable cuenta se almacena la totalidad de tems
existentes en la caja de lista lstPuntaje a travs de la variable modelo4. Si la
variable cuenta es mayor o igual a 1 entonces se procede con una sentencia for a
buscar el mayor puntaje y la posicin (ndice) dentro de la caja de lista
correspondiente al mayor puntaje. Luego con el mtodo setMayor() se asigna el
valor de la variable may al atributo mayor perteneciente a la clase frmPostulante.
La misma idea se hace con el mtodo setMenor() y con las variables pmay y
pmen se almacenan los nombres de los postulantes que obtuvieron el mayor y
menor puntaje respectivamente. Luego se asignan a los atributos postMay y
postMen, a travs de los mtodos setPostMay() y setPostMen(), los valores que
se encuentra en pmay y pmen. A continuacin, se declara y se instancia la variable
form2 de tipo frmConsulta, es decir, se crea una variable form2 que tiene los
mismos atributos y mtodos del formulario frmConsulta. Posteriormente con los
mtodos getMayor(), getMenor(), getPostMay() y getPostMen() se pasan los
valores a los atributos a la variable objeto form2. Luego con el mtodo show()
hacemos que el segundo formulario se muestre.

19. Volvamos al segundo formulario y comenzamos a programar. Definamos los


atributos y la programacin en el mtodo constructor.

Los atributos definidos al inicio de la clase frmConsulta nos permitir recibir los
valores o datos del primer formulario. La programacin agregada en el mtodo
constructor define el ttulo del formulario con la expresin Consulta del Mayor y
Ing. Roberto J. Macetas Rodrguez

105

TALLER DE PROGRAMACIN
Menor Puntaje, se establece el tamao del formulario frmConsulta y finalmente la
localizacin dentro de la pantalla.

20. Programemos en el botn de comando Ver lo siguiente:


Mandamos al cuadro de texto el valor contenido en el atributo postMay siempre y
cuando est seleccionado el JRadioButton referido al postulante de mayor puntaje,
de lo contrario se muestra el contenido del atributo postMen referido al postulante
de menor puntaje.

Ing. Roberto J. Macetas Rodrguez

106

TALLER DE PROGRAMACIN

OBJETOS CONTENEDORES JPANEL Y


JSCROLLPANEL

Swing Containers
Los objetos pertenecientes a Swing Containers, son objetos que permiten agrupar a
otros objetos y facilitan el manejo de ciertos procesos dentro de una aplicacin. En el
entorno de NetBeans la paleta de los Swing Containers muestra lo siguiente:

Ing. Roberto J. Macetas Rodrguez

107

TALLER DE PROGRAMACIN

En el presente tema vamos a hacer uso de los objetos JPanel y JScrollPane.

Objeto Contenedor JPanel


Este componente lo que nos permite es Agrupar Otros Componentes dentro de l (algo
as como el Frame en Visual.net o el GroupBox de Power Builder).
Para empezar creamos un proyecto, una vez hecho este paso, vamos al panel del lado
derecho donde se encuentran los elementos Swing Containers y seleccionamos el
componente Panel (JPanel), lo seleccionamos y soltamos en el Formulario.

Ing. Roberto J. Macetas Rodrguez

108

TALLER DE PROGRAMACIN
Despus de hacer esto soltamos y si hacemos clic en otro lado del rea del formulario
ntese que pareciera que el Panel no estuviera pero si esta pase el mouse por donde
coloc el Panel y ah lo ubicar, pero no se alarmen si est.

Bien para no tener estos problemas vamos a darle un borde a nuestro JPanel, En la
ventana de propiedades como se muestra en la imagen seleccionamos a la propiedad
Border.

Nos mostrar la siguiente imagen

Bien tendremos esto:


Ing. Roberto J. Macetas Rodrguez

109

TALLER DE PROGRAMACIN

Propiedad ms usada:

Border: Se establece el borde y el ttulo si fuese necesario.

Mtodo ms usado:

setEnabled(): Para habilitar o inhabilitar el uso del objeto.

Objeto Contenedor JScrollPanel


Un objeto ScrollPanel permite ubicar dentro de ella uno o varios objetos que comnmente
son objetos de control. Cuando se sobrepasa el espacio del objeto JScrollPanel, ste
muestra las barras de desplazamiento vertical y/o horizontal.

Por ejemplo, agregamos el JScrollPane y dentro del mismo agregamos un JPanel para
poder utilizar los componentes libremente; no olvidarse de la propiedad Absolute Layout
que nos permite colocar en cualquier posicin otro componente dentro del JPanel.
Haremos que cuando cargue el formulario cargue un texto dentro de un Frame

Ing. Roberto J. Macetas Rodrguez

110

TALLER DE PROGRAMACIN

Si colocamos el siguiente cdigo en el botn de comando Mostrar:


private void BtnMostrarActionPerformed(java.awt.event.ActionEvent evt) {
lblTexto.setText(Observa que el cdigo de ejemplo selecciona el tamao preferido del
contenedor del panel desplazable. Una alternativa sera seleccionar el tamao preferido
del propio panel desplazable. De cualquier modo, se est limitando el tamao del panel
desplazable. Esto es necesario porque el tamao preferido de un panel desplazable es ser
tan grande como pueda);}

Para el botn de comando Limpiar colocamos:


private void btnLimpiar ActionPerformed(java.awt.event.ActionEvent evt) {
lblTexto.setText();
}

Al ser ejecutado se debe mostrar el formulario como sigue.

Aplicacin
Construye una aplicacin que permita ingresar el ttulo de una pelcula, seleccionar su
categora que puede ser Comedia, accin, Dibujos animados o Drama. Adems se debe
ingresar la duracin en minutos de la pelcula y el nombre del actor principal. Una vez
ingresado los datos se procede a agregar en un objeto JTable generando una fila de datos
y mostrando en un cuadro de texto el nmero de pelculas ingresadas.

Solucin:
1. Creamos un proyecto denominado Ejercicios.
Ing. Roberto J. Macetas Rodrguez

111

TALLER DE PROGRAMACIN

Luego dar clic en el botn de comando Finish (Terminar si el entorno de NetBeans


es en castellano).

2. Estando en el entorno de NetBeans, seleccionamos el paquete ejercicios y dando


clic botn derecho del mouse se muestra un men flotante, donde seleccionamos
Formulario JFrame.

Ing. Roberto J. Macetas Rodrguez

112

TALLER DE PROGRAMACIN
3. A continuacin, colocaremos como nombre de formulario frmPeliculas.

Luego dar clic en el botn de comando Finish (en caso de que la versin de
NetBeans es en castellano entonces dar clic en el botn de comando Terminar)

4. Se muestra el entorno de desarrollo de NetBeans y no olvidemos de dar clic en el


botn derecho del mouse sobre el formulario y establece Absolute Layout en
SetLayout.

5. Procedemos a colocar un objeto de control JLabel con la expresin PELICULA: y


al lado derecho un cuadro de texto JTextField.

Ing. Roberto J. Macetas Rodrguez

113

TALLER DE PROGRAMACIN
6. Colocamos un objeto contenedor JPanel por debajo de la expresin PELICULA:.

7. Procedemos a utilizar la ventana de propiedades del objeto JPanel. No vamos a


usar la ficha de propiedades que se encuentra al lado derecho del diseo del
formulario, sino que seleccionamos al objeto JPanel y luego al dar clic botn
derecho del mouse, seleccionamos la opcin propiedades.

Ing. Roberto J. Macetas Rodrguez

114

TALLER DE PROGRAMACIN

Ing. Roberto J. Macetas Rodrguez

115

TALLER DE PROGRAMACIN
8. Seleccionamos la propiedad Border y damos clic en el botn de comando
correspondiente a sta propiedad.

9. A continuacin, seleccionamos como borde disponible a TitledBorder.

10. En ttulo colocamos Categoras de Pelculas.

Ing. Roberto J. Macetas Rodrguez

116

TALLER DE PROGRAMACIN

11. Ahora procedemos a definir el borde (propiedad que se encuentra encima de


Ttulo).

12. Posteriormente, seleccionamos el tipo de Borde EtchedBorder.


Ing. Roberto J. Macetas Rodrguez

117

TALLER DE PROGRAMACIN

13. Luego de dar clic en el botn de comando OK, queda definido el Borde y el ttulo.

14. Volvemos a dar clic en el botn de comando OK y regresamos a la ventana de


propiedades del JPanel.

Ing. Roberto J. Macetas Rodrguez

118

TALLER DE PROGRAMACIN

Cerrar sta ventana usando el botn de comando Close (Cerrar).

15. El diseo del formulario queda as:

16. Ahora debemos hacer algo muy importante, que es establecer como Absolute
Layout al objeto JPanel para que permita colocar los objetos de control con facilidad.

Ing. Roberto J. Macetas Rodrguez

119

TALLER DE PROGRAMACIN
17. Colocamos cuatro objetos de tipo JRadioButton dentro del objeto Panel,
quedando el diseo del formulario as:

18. No olvidemos de crear un objeto ButtonGroup e indicar para cada objeto


JRadioButton en su propiedad ButtonGroup que pertenecen a ButtonGroup1.

19. Seguimos agregando los objetos de control segn observamos en el diseo del
formulario. Esta vez vas a agregar un objeto JScrollPane para colocar dentro de
ella a un objeto JTable.

Ing. Roberto J. Macetas Rodrguez

120

TALLER DE PROGRAMACIN

20. A continuacin colocamos un objeto JTable. Los nombres de los objetos de control
son tal como se aprecia en el siguiente diseo de formulario.

Ing. Roberto J. Macetas Rodrguez

121

TALLER DE PROGRAMACIN
21. Vamos a proceder a programar. Comenzamos con hacer uso del paquete swing y
especficamente a las clases JOptionPane y a la clase JTable.

22. Luego procedemos a crear un modelo para el objeto JTable llamado Tabla a travs
de la clase DefaultTableModel. Lo hacemos dentro de la clase frmNotas. Usar la
clase DefaultTableModel es posible gracias al import javax.swing.table.*;

Declaramos y creamos una variable de memoria dtm del tipo DefaultTableModel.

23. En el mtodo constructor programamos lo siguiente (slo escribe lo que se seala


la llave de color rojo):

Declaramos y creamos una variable de memoria titulos del tipo cadena y es un


arreglo. Esta variable titulos se inicializa con los valores Ttulo de la Pelcula,
Categora, Duracin(min) y Actor Principal, que sern los ttulos de las
columnas del objeto JTable. Luego, con el mtodo setColumnIdentifiers() se define
las columnas con sus respectivos ttulos en la variable dtm (modelo del JTable
llamado Tabla). Se vincula el modelo, representado en la variable dtm, al objeto
JTable llamado Tabla. Inhabilitamos los objetos indicados en la programacin y
damos el enfoque al botn de comando Nuevo.

24. Procedemos a programar en el botn de comando Nuevo (slo escribe lo que se


Ing. Roberto J. Macetas Rodrguez

122

TALLER DE PROGRAMACIN
seala la llave de color rojo).

25. Procedemos a programar en el botn de comando Agregar (slo escribe lo que se


seala la llave de color rojo).

Declaramos una variable de memoria llamada datos de tipo String y de tamao 4.


Tambin declaramos una variable entera llamada total. En el primer elemento del
arreglo datos (datos[0]) se asigna el valor ingresado en el cuadro de texto txtPel
(el ttulo de la pelcula). A continuacin, se hace uso de sentencias selectivas IF
para evaluar cul de los objetos JRadioButton ha sido seleccionado y segn el
123
Ing. Roberto J. Macetas Rodrguez

TALLER DE PROGRAMACIN
objeto seleccionado se asigna la categora al segundo elemento del arreglo datos
(datos[1]). En el tercer elemento (datos[2]) y cuarto elemento (datos[3]) del arreglo
datos se asignan la duracin y el actor principal respectivamente. Con el mtodo
addRow(), agregamos una fila en el objeto Table con los datos contenidos en el
arreglo datos. Finalmente, en la variable total se asigna la cantidad de filas de
datos que tiene el objeto JTable haciendo uso del mtodo getRowCount() de la
variable objeto dtm. Este ltimo valor conseguido es visualizado en el cuadro de
texto txtTotal a travs del mtodo setText().

26. Luego, procedemos a programar en el botn de comando Eliminar (slo escribe lo


que se seala la llave de color rojo).

Declaramos las variables fila y total de tipo entero. La variable fila se le asigna el
valor de la posicin de la fila seleccionada en el objeto JTable llamado Tabla. Con
la sentencia IF se evala a la variable fila si es mayor o igual a cero procedemos a
remover o borrar la fila previamente seleccionada, caso contrario se muestra un
mensaje indicando que se debe seleccionar una fila en la Tabla. Finalmente, se
muestra la cantidad de filas agregadas en el cuadro de texto txtTotal y haciendo
uso del mtodo setRowCount() perteneciente a dtm.

27. Finalmente, programamos en el botn de comando Cerrar.

28. Procedemos a ejecutar el formulario.

Ing. Roberto J. Macetas Rodrguez

124

TALLER DE PROGRAMACIN

OBJETOS CONTENEDORES JTABBEDPANEL Y


JDESKTOPPANEL

Objeto Contenedor JTabbedPanel


Este componente est compuesto por un conjunto de paneles que puede almacenar un
contenido en un espacio compacto. Sitio donde ocultamos o revelamos el contenido
almacenado en los paneles con pestaas haciendo clic en la pestaa del panel que se
desea acceder. Por ejemplo, para empezar creamos un proyecto, una vez hecho este
paso, vamos al panel del lado derecho donde se encuentran los elementos Swing
Containers y seleccionamos el componente Panel (JPanel) Lo seleccionamos y soltamos
en el Formulario

Ing. Roberto J. Macetas Rodrguez

125

TALLER DE PROGRAMACIN

Para usar el JTabbedPanel debemos de insertarle un Panel dentro de el mismo ya que si


no lo hacemos, cualquier controles que agreguemos se maximizar apoderndose de
Tab1 y cada control que agreguemos ser un nuevo Tab.
Procedemos entonces a agregarle el panel a nuestro JTabbed para poder utilizarlo
correctamente.

No nos olvidemos de ponerle al JPanel su propiedad Absolute Layout para poder utilizar
los controles libremente dentro de l.

Propiedad ms usada:

Border: Se establece el borde y el ttulo si fuese necesario.

Mtodo ms usado:

setEnabled(): Para habilitar o inhabilitar el uso del objeto.

Ing. Roberto J. Macetas Rodrguez

126

TALLER DE PROGRAMACIN
Objeto Contenedor JDesktopPanel
Este objeto es utilizado ms para mejorar el diseo de los formularios. Es un interfaz ms
agradable para disear las aplicaciones.

btnClear

Como observamos los objetos de control se dibujan encima del objeto JDesktopPanel,
que por defecto es de un fondo de color azul.

Propiedad ms usada:

Background: Para definir el color del objeto JDesktopPanel.

Aplicacin
Construye una aplicacin que permita ingresar los apellidos, los nombres, el telfono,
seleccionar el grado de instruccin y el sexo de un alumno. Estos datos se manejarn en
una pestaa del objeto JTabbedPanel. En una segunda pestaa se debe seleccionar el
curso que el alumno quiere matricularse y la forma de pago. A travs de un botn de
comando MATRICULAR se llevar los datos a un objeto JTable que se encuentra en una
tercera pestaa. En la pestaa donde se encuentra el objeto JTable se mostrar la suma
de los precios de todos los cursos que el alumno quiere matricularse. Habr la posibilidad
de quitar o eliminar un curso que el alumno desista llevarlo.

Ing. Roberto J. Macetas Rodrguez

127

TALLER DE PROGRAMACIN
Solucin:
1. Creamos un proyecto denominado AplicaContenedores. Luego estando en el
entorno de NetBeans, seleccionamos el paquete aplicacontenedores y dando clic
botn derecho del mouse, se muestra un men flotante, donde seleccionamos
Formulario JFrame.

2. A continuacin, colocaremos como nombre de formulario frmMatricula.

Luego dar clic en el botn de comando Finish (en caso de que la versin de
NetBeans es en castellano entonces dar clic en el botn de comando Terminar)
Ing. Roberto J. Macetas Rodrguez

128

TALLER DE PROGRAMACIN
3. Se muestra el entorno de desarrollo de NetBeans y no olvidemos de dar clic en el
botn derecho del mouse sobre el formulario y establece Absolute Layout en
SetLayout.

4. Procedemos a colocar un objeto de control JLabel con la expresin MATRICULA


DE CURSOS DE EXTENSION. Debajo de sta expresin colocaremos un objeto
JTabbedPanel. Una vez seleccionado el objeto JTabbedPanel de la paleta y lo
ubicamos en el formulario, antes de dar clic para que quede dibujado, tiene la
siguiente apariencia:

Al dar clic se reduce el tamao del objeto JTabbedPanel.

Ing. Roberto J. Macetas Rodrguez

129

TALLER DE PROGRAMACIN

Debemos agrandar dicho objeto hasta que quede as:

5. Estando seleccionado el objeto JTabbedPanel, dar clic botn derecho del mouse,
seleccionamos la opcin Agregar desde Paleta, luego Swing y elegimos JPanel.

Ing. Roberto J. Macetas Rodrguez

130

TALLER DE PROGRAMACIN

Una vez seleccionado JPanel se crear una pestaa Tab1 en el objeto


JTabbedPanel.

6. Procedemos a colocar Absolute Layout en la opcin Set Layout cuando usemos


el botn derecho del mouse sobre el Tab1.

Ing. Roberto J. Macetas Rodrguez

131

TALLER DE PROGRAMACIN

7. A continuacin, colocaremos un objeto JdesktopPanel encima del Tab1. Una vez


seleccionado el objeto JDesktopPanel de la paleta y lo ubicamos dentro del Tab1,
antes de dar clic para que quede dibujado, tiene la siguiente apariencia:

Al dar clic se reduce el tamao del objeto JDesktopPanel.


Ing. Roberto J. Macetas Rodrguez

132

TALLER DE PROGRAMACIN

Debemos agrandar dicho objeto hasta que quede as:

8. Comenzamos a colocar objetos de control de tipo JLabel, JTextField y JComboBox.


El

objeto

JComboBox

contendr

como

grado

de

instruccin

<Seleccionar,Secundaria y Superior. Tambin colocaremos un objeto JPanel


para el sexo del alumno donde se establecer el ttulo y el borde.

Ing. Roberto J. Macetas Rodrguez

133

TALLER DE PROGRAMACIN

Este objeto JPanel (Jpanel2) referido a sexo se debe establecer en la propiedad


background, el color que debe ser parecido al color del JDesktopPanel.

Ing. Roberto J. Macetas Rodrguez

134

TALLER DE PROGRAMACIN
9. Una vez establecido el color del JPanel2, procedemos a establecer para ste
objeto JPanel2 el Absolute Layout en Set Layout.

10. El objeto JPanel2 esta referido al dato sexo, en cambio el objeto JPanel1 est
referido al Tab1. Como debemos colocar un ttulo a la pestaa Tab1 demos hacer
uso de la vista de propiedades del JPanel1. Puedes seleccionar del panel
Navegador (que se encuentra a la izquierda del diseo del formulario) y al dar clic
botn derecho del mouse se muestra un men flotante y seleccionas propiedades.
Vamos a colocar como ttulo de la pestaa Datos del alumno

Ing. Roberto J. Macetas Rodrguez

135

TALLER DE PROGRAMACIN

11. Vamos a proceder a crear otro Tab. Debemos nuevamente seleccionar el objeto
JTabbedPanel, dar clic botn derecho del mouse, seleccionamos la opcin
Agregar desde Paleta, luego Swing y elegimos JPanel.

Una vez seleccionado JPanel se crear una pestaa Tab2 en el objeto


JTabbedPanel.

Ing. Roberto J. Macetas Rodrguez

136

TALLER DE PROGRAMACIN

12. Procedemos a colocar Absolute Layout en la opcin Set Layout cuando usemos
el botn derecho del mouse sobre el Tab2.

13. Colocamos un objeto JDesktopPanel en el Tab2 tal como lo hicimos en


anteriormente. Luego sobre el objeto JDesktopPanel al dar clic botn derecho del
Ing. Roberto J. Macetas Rodrguez

137

TALLER DE PROGRAMACIN
mouse, en el men flotante seleccionamos propiedades.

Ing. Roberto J. Macetas Rodrguez

138

TALLER DE PROGRAMACIN
Se establece otro color al objeto JDesktopPanel.

14. Una vez establecido el color para el objeto JDesktopPanel, procedemos a colocar
los objetos de control para el Tab2. Se utilizar un JComboBox para los cursos que
contendr los nombres siguientes:

15. Utilizaremos un objeto JPanel para la forma de pago (al contado o al pago de dos
cuotas), que una vez dibujado y establecido el borde y el ttulo, debemos indicar
que su Set Layout es Absolute Layout.

Ing. Roberto J. Macetas Rodrguez

139

TALLER DE PROGRAMACIN

16. Seleccionamos al objeto JPanel3 que pertenece al Tab2 y definimos el ttulo de la


pestaa tal como se hizo con Tab. Esta vez el ttulo ser Curso a Matricularse.
Creamos un Tab3 de la forma cmo se hizo, tambin colocamos un objeto
JDesktopPanel, a ste ltimo le cambiamos el color en la propiedad background y
posteriormente colocamos los objetos de control. Se usar un objeto JTable para
visualizar los cursos matriculados del alumno. Vamos a colocar los nombres a cada
uno de los objetos de control para cada Tab del objeto JTabbedPanel.

Ing. Roberto J. Macetas Rodrguez

140

TALLER DE PROGRAMACIN

Ing. Roberto J. Macetas Rodrguez

141

TALLER DE PROGRAMACIN

17. Vamos a proceder a programar. Comenzaremos con hacer uso del paquete swing y
especficamente a las clases JOptionPane y JTable.

18. Luego procedemos a crear un modelo para el objeto JTable llamado Tabla a travs
de la clase DefaultTableModel. Lo hacemos dentro de la clase frmNotas. Usar la
clase DefaultTableModel es posible gracias al import javax.swing.table.*;

Declaramos y creamos una variable de memoria dtm del tipo DefaultTableModel.

19. En el mtodo constructor programamos lo siguiente (slo escribe lo que seala la


llave de color rojo):

Ing. Roberto J. Macetas Rodrguez

142

TALLER DE PROGRAMACIN

Declaramos y creamos una variable de memoria titulos del tipo cadena y es un


arreglo. Esta variable titulos se inicializa con los valores Curso Matriculado,
Duracin, Costo, Forma de Pago y Precio, que sern los ttulos de las
columnas del objeto JTable. Luego, con el mtodo setColumnIdentifiers() se define
las columnas con sus respectivos ttulos en la variable dtm (modelo del JTable
llamado Tabla). Se vincula el modelo, representado en la variable dtm, al objeto
JTable llamado Tabla.

20. Procedemos a programar en el botn de comando Nuevo (slo escribe lo que se


seala la llave de color rojo).

Declaramos como variables de memoria i y total de tipo entero. Limpiamos los


cuadros

de

textos y

para

los

objetos JComboBox damos

como

tem

predeterminado a <Seleccionar> (ndice activo igual a cero). En la variable total se


cuenta el nmero de filas del objeto JTable a travs de la variable dtm. Con la
sentencia If evaluamos si es mayor a cero y procedemos con la sentencia for a
eliminar fila por fila con el mtodo remove().
Ing. Roberto J. Macetas Rodrguez

143

TALLER DE PROGRAMACIN
21. Luego, procedemos a programar en el botn de comando MATRICULAR que se
encuentra en el Tab2 (Curso a Matricularse).

Declaramos una variable de memoria llamada datos de tipo String y de tamao 5.


Tambin declaramos las variables total, costo e i como enteros y precio como
numrico real. La variable costo se almacena el contenido del cuadro de texto
txtCosto. En el primer elemento del arreglo datos (datos[0]) se asigna el valor
seleccionado del objeto cboCurso. En el segundo elemento del arreglo datos
(datos[1]) se almacena el contenido del cuadro de texto txtDura y en el tercer
elemento (datos[2]) el contenido del cuadro de texto txtCosto. En el cuarto
elemento se almacena el valor Contado si la forma de pago es al contado y en el
quinto elemento el costo descontado en 5%. Si la forma de pago es a pagar a
cuotas entonces el cuarto elemento se asigna el valor Pago de 2 cuotas y al
Ing. Roberto J. Macetas Rodrguez

144

TALLER DE PROGRAMACIN
quinto elemento se asigna el resultado del costo incrementado en un 10%. Con el
mtodo addRow(), agregamos una fila en el objeto JTable con los datos
contenidos en el arreglo datos. En la variable total se asigna la cantidad de filas de
datos que tiene el objeto JTable haciendo uso del mtodo getRowCount() de la
variable objeto dtm. Con la sentencia for buscamos la suma de los precios en la
variable precio. Finalmente asignamos el valor calculado en precio al cuadro de
texto txtPTotal e inicializamos los objetos de control para la posibilidad de
seleccionar otro curso.

22. Tambin

debemos

programar

en

el

objeto

cboCurso

en

el

evento

ActionPerformed (slo escribe lo que se seala la llave de color rojo).

Pretendemos al momento de seleccionar un curso se muestre la duracin del curso


y el costo en los cuadros de textos txtDura y txtCosto respectivamente.

23. Procedemos a programar en el botn de comando QUITAR que se encuentra en el


Tab3 (slo escribe lo que se seala la llave de color rojo).

Ing. Roberto J. Macetas Rodrguez

145

TALLER DE PROGRAMACIN

Declaramos las variables i, fila y total de tipo entero. La variable fila se le asigna el
valor de la posicin de la fila seleccionada en el objeto JTable llamado Tabla. Con
la sentencia IF se evala a la variable fila si es mayor o igual a cero procedemos a
remover o borrar la fila previamente seleccionada y calculamos la suma de los
precios de todos los cursos mostrndolo en el cuadro de texto txtPTotal, caso
contrario se muestra un mensaje indicando que se debe seleccionar una fila en la
Tabla.

24. Finalmente, programamos en el botn de comando Cerrar.

25. Procedemos a ejecutar el formulario.

Ing. Roberto J. Macetas Rodrguez

146

TALLER DE PROGRAMACIN

OBJETOS MENUS JMENUBAR Y JMENUITEM

Swing Menus
Aqu podemos ver el rbol de herencia de las clases relacionadas con los mens:

Como se ve en la figura, los tems de mens (incluidos los propios mens) son simples
botones. Podramos preguntarnos como un men, si es slo un botn, muestra sus tems.
Ing. Roberto J. Macetas Rodrguez

147

TALLER DE PROGRAMACIN
La respuesta es que cuando se activa un men, automticamente trae un men
desplegable que muestra sus tems.
Crear y configurar Barras de Men
Mtodos:

JMenuBar(): Crea una barra de Men.

setJMenuBar(): Selecciona la barra de men de un Frame interno.

getJMenuBar(): Obtiene la barra de men de un Frame interno

Crear y rellenar Mens


Mtodos:

Jmenu(): Crea un Men a partir de una opcin de la barra.

add(JMenuItem): Crea un tem de men al final del men.

insert(): Inserta un tem de men o un separador de men, en la posicin


especificada.

Remove(): Elimina el tem o tems especificados del men. Si el argumento es un


entero, especifica la posicin del tem a eliminar.

Adicin del Men


Ubicar el cursor en la etiqueta [JFrame], hacer clic en el botn derecho del ratn. Se
desplegar el siguiente men flotante:

Ing. Roberto J. Macetas Rodrguez

148

TALLER DE PROGRAMACIN

Seleccionamos Add Form Palette (en la versin en castellano debe decir Agregar desde
paleta), luego la opcin Swing y finalmente JMenuBar. La interfaz que ese est
desarrollando adopta la siguiente apariencia:

En el panel de Inspector (Navegador) debe quedar as:

Ing. Roberto J. Macetas Rodrguez

149

TALLER DE PROGRAMACIN

Cambiamos el nombre de de jManuBar1 por jMenuBar_principal y jMenu1 por


jMenu_archivos. Para esto ubicamos el cursor en la etiqueta respectiva, se hace clic
botn derecho del mouse y en el men flotante desplegado seleccionamos Change
Variable Name. El aspecto del panel Inspector (Navegador) debe ser ahora el siguiente:

Cambiemos ahora el nombre que se despliega en la barra del men (Menu).

Ubicamos el cursor en la etiqueta el rbol de Inspector sobre jMenu_archivos. Hacer clic


botn derecho del mouse; en el men flotante desplegado, seleccionamos Properties (en
castellano propiedades). Cambiamos en el cuadro desplegado en la propiedad text, Menu
por Archivos. La interfaz grfica adopta la siguiente forma:
Ing. Roberto J. Macetas Rodrguez

150

TALLER DE PROGRAMACIN

Procedemos a Agregar tems al men Archivos. Ubicamos el cursor en el rbol de Inpector


sobre jMenu_archivos. Hacer clic botn derecho del mouse. En el men flotante
desplegado seleccionemos Add > JMenuItem.

El panel inspector (navegador) toma la siguiente forma:

Ing. Roberto J. Macetas Rodrguez

151

TALLER DE PROGRAMACIN

Cambiemos el nombre de jMenuItem1 por jMenuItem_abrir.

Si procedemos a compilar y ejecutar la aplicacin, vemos que al dar clic sobre el men
Archivos, se observar lo siguiente:

Cambiemos la cadena Item desplegada por la cadena Abrir. Ubiquemos el cursor en el


Ing. Roberto J. Macetas Rodrguez

152

TALLER DE PROGRAMACIN
rbol

de

Inspector

sobre

JMenuItem_abrir;

en

el

men

flotante

desplegado

seleccionemos Properties (propiedades) y cambiemos en el nuevo cuadro desplegado en


la propiedad text, Item por Abrir. Al compilar y ejecutar la aplicacin y dando clic sobre el
men Archivos, se observar lo siguiente:

Repetir el procedimiento antes explicado para agregar los tems: Guardar e Imprimir.
Las respectivas variables en el rbol o panel de Inspector (Navegador) lo cambiamos el
nombre por: jMenuItem_guardar y jMenuItem_imprimir. Nuevamente compilamos y
ejecutamos la aplicacin. El formulario se muestra de la siguiente manera:

El panel lnspector debe tener ahora el siguiente aspecto:

Ing. Roberto J. Macetas Rodrguez

153

TALLER DE PROGRAMACIN

Vamos a adicionar ms mens a la barra de mens. En el rbol de Inspector ubicamos el


cursor sobre jMenuBar y hacer clic botn derecho del mouse. En el men flotante
desplegado escoger Add JMenu. El aspecto de Inspector es el siguiente:

El aspecto del diseo del formulario queda as:

Ahora procedamos con el diseo del men dentro del diseo del formulario. Al momento
de que lo ejecutemos debe quedar el diseo del formulario de la siguiente forma:
Ing. Roberto J. Macetas Rodrguez

154

TALLER DE PROGRAMACIN

Y que el panel Inspector tenga el siguiente aspecto:

Aplicacin adicional
Vamos a construir una aplicacin que permita ejecutar todas las aplicaciones propuestas
en la Tarea 2 de la sesin Uso de los objetos JLabel, JTextField y JButton. Dicha tarea
contiene la formulacin de cuatro aplicaciones. Por lo tanto debemos construir un men
cuya opcin en la barra de men sea Tarea 2 y sus tems deben ser Venta de camisas
para la primera aplicacin, Venta de computadora para la segunda aplicacin,
Conversiones para la tercera aplicacin y Clculo para la cuarta aplicacin. Una vez
diseado el men debemos proceder a programar para que sean invocados o ejecutados
desde la opcin (tem) del men.

Ing. Roberto J. Macetas Rodrguez

155

TALLER DE PROGRAMACIN
Solucin:
1. Creamos un proyecto denominado ObjetosMenus. Luego, seleccionamos el
paquete objetosmenus y dando clic botn derecho del mouse en la opcin New
(Nuevo) seleccionamos Formulario JFrame.

Indicamos como nombre del formulario frmMenu y luego damos clic en Terminar o
Finish.

2. Estando en el entorno de desarrollo de NetBeans, en el panel de Inspector


seleccionamos JFrame y damos clic botn derecho del mouse seleccionamos
Agregar desde paleta, luego Swing y posteriormente JmenuBar.

Ing. Roberto J. Macetas Rodrguez

156

TALLER DE PROGRAMACIN

3. Se crear una barra de Men con una primera opcin del tipo Jmenu. Procedemos a
renombrarlo con JMenuTarea2 y cambiarle el texto como Tarea 2 y
posteriormente creamos un JMenuItem.

4. Debemos crear 4 JMenuItem dentro de jMenuTarea2. Segn el enunciado del


ejercicio son 4 aplicaciones propuestas en la Tarea 2. Procedemos a colocar los
textos a cada opcin en la propiedad Text y renombramos a cada objeto
JMenuItem. En el panel Inspector ubicado al lado izquierdo del diseo del
formulario debe quedar de la siguiente manera:

5. Si procedemos a ejecutar el formulario frmMenu debe tener la siguiente apariencia:

Ing. Roberto J. Macetas Rodrguez

157

TALLER DE PROGRAMACIN

6. Volviendo al entorno debemos crear 4 objetos del tipo JFrame, uno para cada
opcin o aplicacin de la Tarea 2.

7. Una vez programado en cada formulario las aplicaciones propuestas en la Tarea 2,


debemos invocar o ejecutar al momento de seleccionar la opcin dentro del men.
Para ello es necesario agregar programacin en frmMenu. Por ejemplo si
queremos ejecutar el formulario referido a Venta de Camisas cuyo formulario se
denomina frmCamisas, tendramos que seleccionar el objeto JMenuItem
correspondiente para indicar el evento a programar.

Ing. Roberto J. Macetas Rodrguez

158

TALLER DE PROGRAMACIN

8. A continuacin, debemos colocar la siguiente lnea de programacin:

Instanciamos con new un objeto del tipo frmCamisas() y procedemos a mostrarlo


con el mtodo setVisible(true).

9. Debemos tener claro que un formulario cuando es invocado desde un men al


momento de ser cerrado a travs de un botn de comando que puede llamarse
Cerrar o Salir ya no deberamos usar el mtodo dispose(), sino ms bien hide().
Este mtodo hide() solo oculta el formulario actual y no cierra al formulario que
contiene el men. Adems es necesario establecer los valores de los mtodos
setSize() y setLocation() del JFrame para hacer que la ejecucin de los
formularios al momento de ser visualizados sea la ms adecuada.

Ing. Roberto J. Macetas Rodrguez

159

TALLER DE PROGRAMACIN

OBJETOS MENUS JRADIOBUTTONMENUITEM,


JSEPARATOR y JMENU

Mens desplegables
Una barra de men contiene uno o ms mens, y tiene una posicin dependiente de la
plataforma -- normalmente debajo de la parte superior de la ventana. Un men
desplegable es un men que es invisible hasta que el usuario hace una accin del ratn
especfica de la plataforma, como pulsar el botn derecho del ratn sobre un componente.
Entonces el men desplegable aparece bajo el cursor.

Crear y configurar Barras de Men


Mtodos:

JMenuBar(): Crea una barra de Men.

setJMenuBar(): Selecciona la barra de men de un Frame interno.

getJMenuBar(): Obtiene la barra de men de un Frame interno

Crear y rellenar Mens


Ing. Roberto J. Macetas Rodrguez

160

TALLER DE PROGRAMACIN
Mtodos:

Jmenu(): Crea un Men a partir de una opcin de la barra.

add(JMenuItem): Crea un tem de men al final del men.

insert(): Inserta un tem de men o un separador de men, en la posicin


especificada.

Remove():Elimina el tem o tems especificados del men. Si el argumento es un


entero, especifica la posicin del tem a eliminar.

AddSeparator(): Aade un separador al final del men desplegable.

Implementar Items de Men


Mtodos:

JMenuItem(): Crea un tem en un men normal.

JCheckBoxMenuItem: Crea un tem de men que se parece y acta como un


checkbox.

JRadioButtonMenuItem: Crea un tem de men que se parece y acta como un


radio buttom. Se puede hacer uso de un cono.

setEnabled(): Si el argumento es true, activa el tem de men, si es false lo


desactiva.

Uso de la clase RadioButton


Los Botones de Radio son grupos de botones en los que, por convencin, slo uno de
ellos puede estar seleccionado. Swing soporta botones de radio con las clases
JRadioButton y ButtonGroup. Para poner un botn de radio en un men, se utiliza la
clase JRadioButtonMenuItem. Los botones de radio tienen un aspecto similar a los
checkboxes, pero, por convencin, los checkboxes no tienen lmites sobre cuntos tems
pueden estar seleccionados a la vez. Como JRadioButton desciende de AbstractButton,
los botones de radio Swing tienen todas las caractersticas de los botones normales.
Aqu podemos ver una imagen de una aplicacin que utiliza cinco botones de radio para
elegir qu tipo de mascota mostrar:

Uso de la clase CheckBox


La versin Swing soporta botones JCheckBox con la clase JCheckBox, Swing tambin
soporta checkboxes en mens, utilizando la clase JCheckBoxMenuItem. Como

Ing. Roberto J. Macetas Rodrguez

161

TALLER DE PROGRAMACIN
JCheckBox y JCheckBoxMenuItem descienden de AbstractButton, los checkboxes de
Swing tienen todas las caractersticas de un botn normal

Adicionar items dentro de los tems


En la sesin anterior (Tema 10), estuvimos desarrollando el diseo de un men que qued
su panel de inspector de la siguiente manera:

Ahora vamos a construir un tercer men algo ms complejo. La aplicacin una vez
terminado deber tener las siguientes formas:

Ing. Roberto J. Macetas Rodrguez

162

TALLER DE PROGRAMACIN

Ing. Roberto J. Macetas Rodrguez

163

TALLER DE PROGRAMACIN

Y el panel Inspector debe adoptar la siguiente forma:

Ing. Roberto J. Macetas Rodrguez

164

TALLER DE PROGRAMACIN
Para lograr esto es necesario adicionar dentro de los JMenu ms JMenus. Slo los
ltimos para adicionar en cada rama del rbol del panel Inspector sern los JMenuItem.
Repetir el paso Anterior para que la aplicacin una vez ejecutada adopte la siguiente
forma:

Y el panel Inspector se encuentre en el siguiente estado:

Ing. Roberto J. Macetas Rodrguez

165

TALLER DE PROGRAMACIN

Aplicacin 1
Vamos a construir una aplicacin que permita disear una barra de men, siendo la
opcin principal (construido a partir de un objeto JMenu) llamada Objetos de Control. A
partir de sta opcin creas items usando JMenuItems para las opciones: Tarea 2,
Tarea3, Tarea4, Tarea 5 y Tarea 6. Para la opcin Tarea 2 defines cuatro tems que
indiquen: Ventas de Camisas, Ventas de Computadoras, Conversiones y Clculo.
La tarea 2 contiene la formulacin de cuatro aplicaciones. Una vez diseado el men
debemos proceder a programar para que sean invocados o ejecutados desde la opcin
(tem) del men.

Solucin:
1. Creamos un proyecto denominado MenusObjetos. Luego, seleccionamos el
paquete menusobjetos y dando clic botn derecho del mouse en la opcin New
(Nuevo) seleccionamos Formulario JFrame.
Ing. Roberto J. Macetas Rodrguez

166

TALLER DE PROGRAMACIN

Indicamos como nombre del formulario frmMenu y luego damos clic en Terminar o
Finish.

2. Estando en el entorno de desarrollo de NetBeans, en el panel de Inspector


seleccionamos JFrame y damos clic botn derecho del mouse seleccionamos
Agregar desde paleta, luego Swing y posteriormente JmenuBar.

3. Se crear una barra de Men con una primera opcin del tipo JMenu. Procedemos a
renombrarlo con JMenuObjetosControl y cambiarle el texto como Objetos de
Control y posteriormente creamos un JMenuItem.

Ing. Roberto J. Macetas Rodrguez

167

TALLER DE PROGRAMACIN

4. Debemos crear 5 del tipo JMenu dentro de jMenuObjetosControl. Segn el


enunciado del ejercicio son 5 opciones: Tarea 2, Tarea 3, Tarea 4, Tarea 5 y
Tarea 6. Procedemos a colocar los textos a cada opcin en la propiedad Text y
renombramos a cada objeto JMenu. En el panel Inspector ubicado al lado izquierdo
del diseo del formulario debe quedar de la siguiente manera:

Ing. Roberto J. Macetas Rodrguez

168

TALLER DE PROGRAMACIN
5. Si procedemos a ejecutar el formulario frmMenu debe tener la siguiente apariencia:

6. Volviendo al entorno de NetBeans debemos crear los 4 items del tipo JMenuItem
dentro de la opcin JMenuTarea2. En el panel Inspector debe quedar de la siguiente
manera:

7. Si procedemos nuevamente a ejecutar el formulario frmMenu debe tener la


Ing. Roberto J. Macetas Rodrguez

169

TALLER DE PROGRAMACIN
siguiente apariencia:

8. Volviendo nuevamente al entorno de NetBeans debemos crear los 4 item objetos


del tipo JFrame, uno para cada opcin o aplicacin de la opcin de JMenuTarea 2.

9. Una vez programado en cada formulario las aplicaciones propuestas en la Tarea 2,


debemos invocar o ejecutar al momento de seleccionar la opcin dentro del men.
Para ello es necesario agregar programacin en frmMenu. Por ejemplo si
queremos ejecutar el formulario referido a Venta de Camisas cuyo formulario se
denomina frmCamisas, tendramos que seleccionar el objeto JMenuItem
correspondiente para indicar el evento a programar.

Ing. Roberto J. Macetas Rodrguez

170

TALLER DE PROGRAMACIN

10. A continuacin, debemos colocar la siguiente lnea de programacin:

Instanciamos con new un objeto del tipo frmCamisas() y procedemos a mostrarlo


con el mtodo setVisible(true).

11. Debemos tener presente que un formulario cuando es invocado desde un men al
momento de ser cerrado a travs de un botn de comando que puede llamarse
Cerrar o Salir ya no deberamos usar el mtodo dispose(), sino ms bien hide().
Este mtodo hide() solo oculta el formulario actual y no cierra al formulario que
contiene el men. Adems es necesario establecer los valores de los mtodos
setSize() y setLocation() del JFrame para hacer que la ejecucin de los
formularios al momento de ser visualizados sea la ms adecuada.

Aplicacin 2
Vamos hacer uso de los objetos JRadioButtonMenuItem y JCheckBoxMenuItem. En esta
oportunidad la aplicacin ser desarrollada usando pura programacin.

Solucin:
1. Procedemos a crear un archivo de extensin java. Estando en un proyecto
MenuObjetos y seleccionado el paquete menuobjetos, damos clic botn derecho
del mouse y seleccionamos Java class.

Ing. Roberto J. Macetas Rodrguez

171

TALLER DE PROGRAMACIN

2. Aparece la ventana para definir el nombre del archivo de extensin java. Vamos a
denominarlo PruebaMenu.

Luego damos clic en el botn de comando Terminar (Finish)

3. Agregamos los paquetes siguientes (debajo del package menusobjetos).

4. Agregamos la expresin extends JFrame en public class PruebaMenu.


Ing. Roberto J. Macetas Rodrguez

172

TALLER DE PROGRAMACIN

5. Vamos a proceder a agregar la programacin, fijmonos en los comentarios


colocados con // que nos permitirn comprender el cdigo de la programacin.
public class PruebaMenu extends JFrame{
//definimos los atributos de la clase PruebaMenu
private final Color valoresColor[]={Color.black,Color.blue,Color.red,Color.green };
private JRadioButtonMenuItem elementosColor[], tiposLetra[];
private JCheckBoxMenuItem elementosEstilo[];
private JLabel pantallaEtiqueta;
private ButtonGroup grupoTiposLetra, grupoColores;
private int estilo;
/** Creates a new instance of PruebaMenu */
public PruebaMenu()
{
// establece el titulo del formulario
super( "Uso de objetos JMenu" );
// establecer men Archivo y sus elementos de men
JMenu menuArchivo = new JMenu( "Archivo" );
menuArchivo.setMnemonic( 'A' );
// establecer elemento de men Acerca de...
JMenuItem elementoAcerca = new JMenuItem( "Acerca de..." );
elementoAcerca.setMnemonic( 'c' );
menuArchivo.add( elementoAcerca );
elementoAcerca.addActionListener(
new ActionListener() { // clase interna annima
// mostrar cuadro de dilogo de mensaje cuando el usuario seleccione Acerca de...
public void actionPerformed( ActionEvent evento )
{
JOptionPane.showMessageDialog( PruebaMenu.this,
"ste es un ejemplo\ndel uso de mens",
"Acerca de", JOptionPane.PLAIN_MESSAGE );
}
} // fin de la clase interna annima
); // fin de la llamada a addActionListener
// establecer elemento de men Salir
JMenuItem elementoSalir = new JMenuItem( "Salir" );
elementoSalir.setMnemonic( 'S' );
menuArchivo.add( elementoSalir );
elementoSalir.addActionListener(
new ActionListener() { // clase interna annima
// terminar la aplicacin cuando el usuario haga clic en elementoSalir
public void actionPerformed( ActionEvent evento )
{
System.exit( 0 );
}
} // fin de la clase interna annima
); // fin de la llamada a addActionListener
// crear barra de mens y adjuntarla a la ventana PruebaMenu
JMenuBar barra = new JMenuBar();
setJMenuBar( barra );
barra.add( menuArchivo );
// crear men Formato, con sus submens y elementos de men

Ing. Roberto J. Macetas Rodrguez

173

TALLER DE PROGRAMACIN
JMenu menuFormato = new JMenu( "Formato" );
menuFormato.setMnemonic( 'F' );
// crear submen Color
String colores[] = { "Negro", "Azul", "Rojo", "Verde" };
JMenu menuColor = new JMenu( "Color" );
menuColor.setMnemonic( 'C' );
elementosColor = new JRadioButtonMenuItem[ colores.length ];
grupoColores = new ButtonGroup();
ManejadorEventos manejadorEventos = new ManejadorEventos();
// crear elementos de men tipo botones de opcin para el men Color
for ( int cuenta = 0; cuenta < colores.length; cuenta++ ) {
elementosColor[ cuenta ] = new JRadioButtonMenuItem( colores[ cuenta ] );
menuColor.add( elementosColor[ cuenta ] );
grupoColores.add( elementosColor[ cuenta ] );
elementosColor[ cuenta ].addActionListener( manejadorEventos );
}
// seleccionar primer elemento del men Color
elementosColor[ 0 ].setSelected( true );
// agregar el men Formato a la barra de mens
menuFormato.add( menuColor );
menuFormato.addSeparator();
// crear submen Tipo de letra
String nombresTiposLetra[] = { "Serif", "Monospaced", "SansSerif" };
JMenu menuTiposLetra = new JMenu( "Tipo de letra" );
menuTiposLetra.setMnemonic( 'T' );
tiposLetra = new JRadioButtonMenuItem[ nombresTiposLetra.length ];
grupoTiposLetra = new ButtonGroup();
// crear elementos de men tipo botones de opcin para el men Tipos de letra
for ( int cuenta = 0; cuenta < tiposLetra.length; cuenta++ ) {
tiposLetra[ cuenta ] = new JRadioButtonMenuItem( nombresTiposLetra[ cuenta ] );
menuTiposLetra.add( tiposLetra[ cuenta ] );
grupoTiposLetra.add( tiposLetra[ cuenta ] );
tiposLetra[ cuenta ].addActionListener( manejadorEventos );
}
// seleccionar el primer elemento del men Tipo de letra
tiposLetra[ 0 ].setSelected( true );
menuTiposLetra.addSeparator();
// establecer elementos del men Estilo
String nombresEstilo[] = { "Negrita", "Cursiva" };
elementosEstilo = new JCheckBoxMenuItem[ nombresEstilo.length ];
ManejadorEstilo manejadorEstilo = new ManejadorEstilo();
// crear elementos de men tipo casilla de verificacin para el men Estilo
for ( int cuenta = 0; cuenta < nombresEstilo.length; cuenta++ ) {
elementosEstilo[ cuenta ] =
new JCheckBoxMenuItem( nombresEstilo[ cuenta ] );
menuTiposLetra.add( elementosEstilo[ cuenta ] );
elementosEstilo[ cuenta ].addItemListener( manejadorEstilo );
}
// colocar men Tipo de letra en el men Formato
menuFormato.add( menuTiposLetra );
// agregar men Formato a la barra de mens
barra.add( menuFormato );
// establecer etiqueta para mostrar texto
pantallaEtiqueta = new JLabel( "Programacin Visual", SwingConstants.CENTER );
pantallaEtiqueta.setForeground( valoresColor[ 0 ] );

Ing. Roberto J. Macetas Rodrguez

174

TALLER DE PROGRAMACIN
pantallaEtiqueta.setFont( new Font( "Serif", Font.PLAIN, 72 ) );
getContentPane().setBackground( Color.CYAN );
getContentPane().add( pantallaEtiqueta, BorderLayout.CENTER );
setSize( 850, 200 );
setVisible( true );
}
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
PruebaMenu aplicacion = new PruebaMenu();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
// clase interna para manejar eventos de accin de los elementos de men
private class ManejadorEventos implements ActionListener {
// procesar selecciones de color y tipo de letra
public void actionPerformed( ActionEvent evento )
{
// procesar seleccin de color
for ( int cuenta = 0; cuenta < elementosColor.length; cuenta++ )
if ( elementosColor[ cuenta ].isSelected() ) {
pantallaEtiqueta.setForeground( valoresColor[ cuenta ] );
break;
}
// procesar seleccin de tipo de letra
for ( int cuenta = 0; cuenta < tiposLetra.length; cuenta++ )
if ( evento.getSource() == tiposLetra[ cuenta ] ) {
pantallaEtiqueta.setFont(new Font( tiposLetra[ cuenta ].getText(), estilo, 72 ) );
break;
}
repaint();
} // fin del mtodo actionPerformed
} // fin de la clase ManejadorEventos
// clase interna para manejar eventos de los elementos de men tipo casilla de verificacin
private class ManejadorEstilo implements ItemListener {
// procesar selecciones de estilo de tipo de letra
public void itemStateChanged( ItemEvent e )
{
estilo = 0;
// checar seleccin de negrita
if ( elementosEstilo[ 0 ].isSelected() )
estilo += Font.BOLD;
// checar seleccin de cursiva
if ( elementosEstilo[ 1 ].isSelected() )
estilo += Font.ITALIC;
pantallaEtiqueta.setFont(
new Font( pantallaEtiqueta.getFont().getName(), estilo, 72 ) );
}

repaint();

} // fin de la clase ManejadorEstilo


} // fin de la clase PruebaMenu

Ing. Roberto J. Macetas Rodrguez

175

TALLER DE PROGRAMACIN
6. Ejecutamos el archivo PruebaMenu.java.

7. Ordenado la ejecucin veremos la siguiente ventana.

AUTOEVALUACION
a) Responde a las siguientes preguntas:
1. Los objetos contenedores se denominan as porque permite contener a su vez a otros
objetos. (verdadero o falso)

2. Permite que se pueda crear una opcin en el men y que se comporte como
JRadioButtom, es el objeto
3. El mtodo setSize() permite establecer el tamao de un objeto del tipo JFrame.
(verdadero o falso)
4. El mtodo show() permite hacer visible un formulario (verdadero o falso)

5. El mtodo setTitle() se usa para establecer el ttulo en la barra superior de un formulario


(verdadero o falso)

Ing. Roberto J. Macetas Rodrguez

176

TALLER DE PROGRAMACIN

b) Desarrolla las siguientes aplicaciones:


1. Construye una aplicacin que permita ingresar 4 notas por alumno. El promedio debe
ser igual al promedio de las 4 notas, duplicando la nota mayor y dividido entre 5.
Ingresar datos de varios alumnos y en segundo formulario mostrar el alumno con
mayor promedio o el alumno de menor promedio. Propone t mismo el diseo de los
formularios.
2. Usando la aplicacin anterior aplica el ingreso de las notas de los alumno en una ficha
(Tab), en una segunda ficha se muestre las notas de los alumnos con sus respectivos
promedios y en una tercera ficha se pueda seleccionar la opcin de mostrar el alumno
con mayor promedio o mostrar el alumno con menor promedio. Usa el objeto
JTabbedPane.
3. Usando los objetos del paquete swing Mens, construye un men que invoque o que
se pueda ejecutar las dos aplicaciones anteriores.

Ing. Roberto J. Macetas Rodrguez

177

TALLER DE PROGRAMACIN

CAPITULO IV
SISTEMAS DE APLICACION

Ing. Roberto J. Macetas Rodrguez

178

TALLER DE PROGRAMACIN

CONSTRUCCION DE UN SISTEMA DE APLICACION

Introduccin
Vamos a proceder a crear un sistema de aplicacin. En base a los conocimientos
adquiridos simularemos un sistema de aplicacin, pero ms adelante en desarrollo de
otros cursos se crearn aplicaciones usando base de datos. Haremos uso de los
objetos aprendidos en las sesiones anteriores como tambin manejo de atributos y
mtodos de clases. Adems haremos uso de estructuras de datos llamadas arreglos.
El caso que trataremos es sobre cuentas de ahorros y CTS de un Banco, y lo
desarrollaremos en dos etapas. En este tema o sesin haremos la primera etapa y en
la ltima sesin completaremos el desarrollo del caso.

CASO: Banco - Cuentas


Ing. Roberto J. Macetas Rodrguez

179

TALLER DE PROGRAMACIN
Un banco ofrece los productos de ahorros en soles, ahorros en dlares, CTS en soles y
CTS en dlares. Un cliente puede slo tener una cuenta de cualquier producto antes
mencionado. Observemos el siguiente diseo:

Para aperturar una cuenta debemos ingresar los apellidos y los nombres del cliente, luego
al dar clic en un botn de comando Buscar procedemos a la bsqueda de los datos en la
estructura de datos o arreglo. Si no se encuentra los datos procedemos a ingresar la
direccin y el nmero de documento de identidad y si existe los datos del cliente, entonces
se muestra el nmero de documento de identidad y el nmero de tarjeta. El nmero
de tarjeta se inicia con los dgitos 5788 seguido del nmero del documento de identidad.
Cabe sealar si los datos del cliente ya existen se debe inhabilitar el uso de los objetos
JRadioButton respecto a las cuentas que ya tiene el cliente. Si es un nuevo cliente se
habilitarn todos los objetos referidos a los tipos de cuentas. Una vez indicado los
datos procedemos a grabar los datos, lo cual implica insertar los datos en el objeto Table
como tambin en la estructura de datos o arreglo. El objeto Table se encuentra en la
segunda pestaa Cuentas Aperturadas del objeto JTabbedPanel.
Ing. Roberto J. Macetas Rodrguez

180

TALLER DE PROGRAMACIN

El botn de comando Cancelar es para suspender el proceso de apertura de cuenta


haciendo limpiar los objetos de control y el botn de comando Cerrar es para ocultar la
ventana.
Veamos el diseo del formulario de Operaciones Bancarias que tambin est conformado
por un objeto JTabbedPanel que contiene dos Tab, es decir, maneja dos pestaas. La
primera pestaa tiene el siguiente diseo:

Ing. Roberto J. Macetas Rodrguez

181

TALLER DE PROGRAMACIN

La segunda pestaa tiene el siguiente diseo:

Ing. Roberto J. Macetas Rodrguez

182

TALLER DE PROGRAMACIN
Para las operaciones o transacciones bancarias se inicia con ingresar el nmero de tarjeta
(recordemos que el nmero de tarjeta se inicia con 5788, seguido del nmero de
documento de identidad). Luego al dar clic en el botn de comando Buscar hacemos la
bsqueda de la cuenta en el arreglo o estructura de datos. Si encuentra el nmero de
tarjeta procedemos a visualizar los apellidos y nombres del cliente y se habilitan a los
objetos JRadioButton de las cuentas que tiene el cliente. Si no se encuentra el nmero de
tarjeta procedemos a mostrar un mensaje de error. A continuacin se selecciona una
cuenta y el tipo de operacin (Retiro o Depsito) e ingresamos el monto de la operacin.
Al dar clic en el botn de comando Procesar grabaremos o insertamos los datos en el
objeto Table (objeto que se muestra en la segunda pestaa) y en la estructura de datos o
arreglo. Cabe sealar que el uso de los arreglos es para salvar los datos ya que al cerrar
la ventana los datos contenidos en el objeto JTable se pierden y cuando se vuelve a
mostrar nuevamente la ventana los datos contenidos en los arreglos se llenan en el objeto
JTable.
Tanto la ventana o formulario de Apertura de Cuentas como la ventana o formulario de
Operaciones Bancarias sern invocados o ejecutados desde las opciones de un men,
cuyo diseo es el siguiente:

Ing. Roberto J. Macetas Rodrguez

183

TALLER DE PROGRAMACIN
Solucin:
1. Creamos un proyecto denominado Caso_banco. Luego estando en el entorno de
NetBeans, seleccionamos el paquete caso_banco y dando clic botn derecho del
mouse, se muestra un men flotante, donde seleccionamos Formulario JFrame.

2. A continuacin, colocaremos como nombre de formulario frmMenu.

Luego dar clic en el botn de comando Finish (en caso de que la versin de
Ing. Roberto J. Macetas Rodrguez

184

TALLER DE PROGRAMACIN
NetBeans es en castellano entonces dar clic en el botn de comando Terminar)

3. Estando en el entorno de desarrollo de NetBeans, en el panel de Inspector


seleccionamos JFrame y damos clic botn derecho del mouse seleccionamos
Agregar desde paleta, luego Swing y posteriormente JMenuBar.

4. Se crea una barra de Men con una primera opcin del tipo JMenu. Procedemos a
renombrarlo con JMenuProcesos y cambiarle el texto como Procesos.

Ing. Roberto J. Macetas Rodrguez

185

TALLER DE PROGRAMACIN
5. Procedemos a agregar dos objetos del tipo JMenuItem. Estas opciones del men
indicarn: Apertura de Cuentas y Operaciones Bancarias. El panel de Inspector
debe quedar as:

6. Si procedemos a ejecutar lo avanzado hasta el momento se debe visualizar lo


siguiente:

7. Ahora, vamos a proceder a crear el formulario para apertura de cuentas. Creamos


un objeto JFrame.

Ing. Roberto J. Macetas Rodrguez

186

TALLER DE PROGRAMACIN

8. Le damos como nombre al formulario frmApertura.

Luego dar clic en el botn de comando Finish (en caso de que la versin de
NetBeans es en castellano entonces dar clic en el botn de comando Terminar)

9. Se muestra el entorno de desarrollo de NetBeans y no olvidemos de dar clic en el


botn derecho del mouse sobre el formulario y establece Absolute Layout en
SetLayout.
Ing. Roberto J. Macetas Rodrguez

187

TALLER DE PROGRAMACIN

10. Iniciamos el diseo del formulario colocando un objeto JLabel y JTabbedPanel.


Creamos la primera pestaa con la expresin Apertura de Cuentas.

11. Procedemos a colocar Absolute Layout en la opcin Set Layout cuando usemos
el botn derecho del mouse sobre el Tab1.

Ing. Roberto J. Macetas Rodrguez

188

TALLER DE PROGRAMACIN

12. Colocamos un objeto JDesktopPanel, cambiamos el color a un amarillo claro y


luego ponemos un objeto JPanel, el cual debe tener un borde y un ttulo con la
expresin Informacin del Cliente. Al objeto JPanel debemos establecer Absolute
Layout en SetLayout.

Ing. Roberto J. Macetas Rodrguez

189

TALLER DE PROGRAMACIN
13. Continuamos con el diseo del formulario. Debemos crear un segundo objeto
JPanel dentro del Tab1 y establecer Absolute Layout en SetLayout.

14. Procedamos a colocar nombres a los objetos de control de la primera pestaa.

Ing. Roberto J. Macetas Rodrguez

190

TALLER DE PROGRAMACIN

15. Vamos a disear la segunda pestaa. Procedemos a colocar Absolute Layout en


la opcin Set Layout cuando usemos el botn derecho del mouse sobre el Tab2.

Ing. Roberto J. Macetas Rodrguez

191

TALLER DE PROGRAMACIN
16. El diseo del formulario para la segunda pestaa debe quedar as:

17. Pasemos a disear el formulario para las operaciones bancarias. Creamos un


objeto JFrame.

18. Le damos como nombre al formulario frmOperaciones.

Ing. Roberto J. Macetas Rodrguez

192

TALLER DE PROGRAMACIN

Luego dar clic en el botn de comando Finish (en caso de que la versin de
NetBeans es en castellano entonces dar clic en el botn de comando Terminar)

19. Se muestra el entorno de desarrollo de NetBeans y no olvidemos de dar clic en el


botn derecho del mouse sobre el formulario y establece Absolute Layout en
SetLayout.

20. Iniciamos el diseo del formulario colocando un objeto JLabel y JTabbedPanel.


Ing. Roberto J. Macetas Rodrguez

193

TALLER DE PROGRAMACIN
Creamos la primera pestaa con la expresin Operaciones Bancarias y
procedemos a colocar Absolute Layout en la opcin Set Layout cuando usemos
el botn derecho del mouse sobre el Tab1.

21. Colocamos un objeto JDesktopPanel, cambiamos el color a un amarillo claro y


luego ponemos un objeto JPanel, el cual debe tener un borde y un ttulo con la
expresin Informacin del Cliente. Al objeto JPanel debemos establecer Absolute
Layout en SetLayout.

Ing. Roberto J. Macetas Rodrguez

194

TALLER DE PROGRAMACIN
22. Continuamos con el diseo del formulario. Debemos crear un segundo objeto
JPanel dentro del Tab1 y establecer Absolute Layout en SetLayout.

23. Procedamos a colocar nombres a los objetos de control de la primera pestaa.

Ing. Roberto J. Macetas Rodrguez

195

TALLER DE PROGRAMACIN
24. Vamos a disear la segunda pestaa. Procedemos a colocar Absolute Layout en
la opcin Set Layout cuando usemos el botn derecho del mouse sobre el Tab2.

25. El diseo del formulario para la segunda pestaa debe quedar as:

Ing. Roberto J. Macetas Rodrguez

196

TALLER DE PROGRAMACIN
26. Procedamos a programar en cada uno de los formularios.
CODIGO DEL FORMULARIO frmMenu
public class frmMenu extends javax.swing.JFrame {
//creacin de atributos de tipo arreglo y entero
public static String valores[][]=new String [100][5];
public static String movimientos[][]=new String [100][6];
public static int registros=-1;
public static int filas=-1;
//mtodo para asignar datos al arreglo valores
public void setValores(int f,String d1, String d2, String d3, String d4, String d5)
{
valores[f][0]=d1;
valores[f][1]=d2;
valores[f][2]=d3;
valores[f][3]=d4;
valores[f][4]=d5;
}
//mtodo para obtener un dato dado el valor de los ndices del elemento del arreglo
public String getValores(int f, int c)
{
return valores[f][c];
}
//mtodo que actualiza el saldo de la cuenta
public void setActualizaSaldo(int f, String s)
{
valores[f][4]=s;
}
//mtodo que actualiza el valor de filas que controla al arreglo valores
public void setFilas(int f)
{
filas=f;
}
//mtodo que perimte obtener el valor del atributo filas
public int getFilas()
{
return filas;
}
//mtodo para asignar datos al arreglo movimeintos
public void setMovimientos(int f,String d1, String d2, String d3, String d4, String d5, String d6)
{
movimientos[f][0]=d1;
movimientos[f][1]=d2;
movimientos[f][2]=d3;
movimientos[f][3]=d4;
movimientos[f][4]=d5;
movimientos[f][5]=d6;
}
//mtodo para obtener un dato dado el valor de los ndices de un elemento
public String getMovimientos(int f, int c)
{
return movimientos[f][c];
}
//mtodo que actualiza el valor de registros que controla el arreglo movimientos.
public void setRegistros(int f)
{
registros=f;
}
//mtodo para obtener el valor del atributo registros
public int getRegistros()
{
return registros;

Ing. Roberto J. Macetas Rodrguez

197

TALLER DE PROGRAMACIN
}
//mtodo constructor
public frmMenu() {
initComponents();
this.setSize(800,700);
}
private void jMenuItemOperacionesActionPerformed(java.awt.event.ActionEvent evt) {
new frmOperaciones().setVisible(true);
}
private void jMenuItemAperturaCuentasActionPerformed(java.awt.event.ActionEvent evt) {
new frmApertura().setVisible(true);
}

CODIGO DEL FORMULARIO frmApertura


package caso_banco;
import javax.swing.JOptionPane.*;
import javax.swing.*;
import javax.swing.table.*;
public class frmApertura extends javax.swing.JFrame {
DefaultTableModel dtm=new DefaultTableModel();
//instanciar fmenu a partir de la clase frmMenu
frmMenu fmenu=new frmMenu();
/** Creates new form frmApertura */
//mtodo constructor
public frmApertura() {
initComponents();
String titulos[]={"Nro Tarjeta","Apellidos","Nombres","Tipo Cuenta","Saldo Actual"};
dtm.setColumnIdentifiers(titulos);
this.usoObjetosRadio(false);
TablaCuentas.setModel(dtm);
this.llenarTabla();
btnGrabar.setEnabled(false);
this.setLocation(120,120);
txtApe.requestFocus();
}
//mtodo para llenar de filas a la TablaCuentas
public void llenarTabla()
{
int f, i;
f=fmenu.getFilas();
String datos[]=new String[5];
if (f>=0)
{
for (i=0;i<=f;i++)
{
datos[0]=fmenu.getValores(i,0);
datos[1]=fmenu.getValores(i,1);
datos[2]=fmenu.getValores(i,2);
datos[3]=fmenu.getValores(i,3);
datos[4]=fmenu.getValores(i,4);
dtm.addRow(datos);
}
}

public void limpiarObjetos()


{
txtApe.setText("");
txtNom.setText("");
txtDir.setText("");
txtDoc.setText("");
txtNroTar.setText("");
txtSaldoInicial.setText("");
}

Ing. Roberto J. Macetas Rodrguez

198

TALLER DE PROGRAMACIN
public void usoObjetosTexto(boolean accion)
{
txtDir.setEnabled(accion);
txtDoc.setEnabled(accion);
}
public void usoObjetosRadio(boolean accion)
{
rbAhorroSoles.setEnabled(accion);
rbAhorroDolares.setEnabled(accion);
rbCTSsoles.setEnabled(accion);
rbCTSdolares.setEnabled(accion);
}
private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {
this.limpiarObjetos();
this.usoObjetosTexto(false);
this.usoObjetosRadio(false);
btnGrabar.setEnabled(false);
txtApe.requestFocus();
}
private void btnGrabarActionPerformed(java.awt.event.ActionEvent evt) {
String datos[]=new String[5];
int filas;
boolean verifica;
if (txtApe.getText().length()==0)
{
JOptionPane.showMessageDialog(null,"Ingresa el Apellido del Cliente");
return;
}
if (txtNom.getText().length()==0)
{
JOptionPane.showMessageDialog(null,"Ingresa el Nombre del Cliente");
return;
}
if (txtDoc.getText().length()==0)
{
JOptionPane.showMessageDialog(null,"Ingresa el Nmero del Documento de Identidad del Cliente");
return;
}
verifica=rbAhorroSoles.isSelected() || rbAhorroDolares.isSelected() || rbCTSsoles.isSelected() ||
rbCTSdolares.isSelected();
if (!verifica)
{
JOptionPane.showMessageDialog(null,"Selecciona un tipo de Cuenta");
return;
}
if (txtSaldoInicial.getText().length()==0)
{
JOptionPane.showMessageDialog(null,"Ingresa un Saldo Inicial");
return;
}
datos[0]="5788"+txtDoc.getText();
datos[1]=txtApe.getText();
datos[2]=txtNom.getText();
datos[4]=txtSaldoInicial.getText();
if (rbAhorroSoles.isSelected())
{
datos[3]="Ahorro en Soles";
}
if (rbAhorroDolares.isSelected())
{
datos[3]="Ahorro en Dlares";
}
if (rbCTSsoles.isSelected())
{
datos[3]="CTS en Soles";
}
if (rbCTSdolares.isSelected())
{
datos[3]="CTS en Dlares";

Ing. Roberto J. Macetas Rodrguez

199

TALLER DE PROGRAMACIN

}
dtm.addRow(datos);
filas=dtm.getRowCount();
fmenu.setValores(filas-1,datos[0],datos[1],datos[2],datos[3],datos[4]);
fmenu.setFilas(filas-1);
this.limpiarObjetos();
this.usoObjetosTexto(false);
btnGrabar.setEnabled(false);
this.usoObjetosRadio(false);

private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {


String ape, nom, tipocuenta, nrotar;
ape=txtApe.getText();
nom=txtNom.getText();
this.usoObjetosRadio(true);
int filas, i;
boolean encuentra=false;
filas=TablaCuentas.getRowCount();
if (filas>0)
{
for (i=0;i<filas;i++)
{
if (ape.equalsIgnoreCase((String)TablaCuentas.getValueAt(i,1)) &&
nom.equalsIgnoreCase((String)TablaCuentas.getValueAt(i,2)))
{
encuentra=true;
txtNroTar.setEnabled(true);
nrotar=(String)TablaCuentas.getValueAt(i,0);
txtNroTar.setText(nrotar);
txtNroTar.setEnabled(false);
txtDoc.setEnabled(true);
txtDoc.setText(nrotar.substring(4));
txtDoc.setEnabled(false);
tipocuenta=(String)TablaCuentas.getValueAt(i,3);
if (tipocuenta.equals("Ahorro en Soles"))
rbAhorroSoles.setEnabled(false);
if (tipocuenta.equals("Ahorro en Dlares"))
rbAhorroDolares.setEnabled(false);
if (tipocuenta.equals("CTS en Soles"))
rbCTSsoles.setEnabled(false);
if (tipocuenta.equals("CTS en Dlares"))
rbCTSdolares.setEnabled(false);
}
}

}
if (!encuentra)
{
this.usoObjetosTexto(true);
txtDir.setText("");
txtDoc.setText("");
txtDir.requestFocus();
}
btnGrabar.setEnabled(true);

CODIGO DEL FORMULARIO frmOperaciones


package caso_banco;
import javax.swing.JOptionPane.*;
import javax.swing.*;
import javax.swing.table.*;
public class frmOperaciones extends javax.swing.JFrame {
DefaultTableModel dtm=new DefaultTableModel();
//instanciar fmenu a partir de la clase frmMenu
frmMenu fmenu=new frmMenu();
/** Creates new form frmOperaciones */

Ing. Roberto J. Macetas Rodrguez

200

TALLER DE PROGRAMACIN
//mtodo constructor
public frmOperaciones() {
initComponents();
String titulos[]={"Tarjeta","Apellidos","Nombres","Tipo Cuenta","Tipo Operacin","Monto"};
dtm.setColumnIdentifiers(titulos);
TablaOperaciones.setModel(dtm);
btnProcesar.setEnabled(false);
this.llenarTabla();
this.setLocation(120,120);
}
//mtodo para llenar de filas a la TablaOperaciones
public void llenarTabla()
{
int f, i;
f=fmenu.getRegistros();
String datos[]=new String[6];
if (f>=0)
{
for (i=0;i<=f;i++)
{
datos[0]=fmenu.getMovimientos(i,0);
datos[1]=fmenu.getMovimientos(i,1);
datos[2]=fmenu.getMovimientos(i,2);
datos[3]=fmenu.getMovimientos(i,3);
datos[4]=fmenu.getMovimientos(i,4);
datos[5]=fmenu.getMovimientos(i,5);
dtm.addRow(datos);
}
}

public void usoObjetosRadio(boolean accion)


{
rbAhorroSoles.setEnabled(accion);
rbAhorroDolares.setEnabled(accion);
rbCTSsoles.setEnabled(accion);
rbCTSdolares.setEnabled(accion);
}
public void limpiarObjetos()
{
txtNroTar.setText("");
txtApe.setText("");
txtNom.setText("");
txtMonto.setText("");
}
private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {
this.limpiarObjetos();
this.usoObjetosRadio(true);
txtNroTar.requestFocus();
}
private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt) {
this.hide();
}
private void btnProcesarActionPerformed(java.awt.event.ActionEvent evt) {
String datos[]=new String[6];
int reg, filas, i, posicion=0;
double saldo=0.0;
boolean verifica;
verifica=rbAhorroSoles.isSelected() || rbAhorroDolares.isSelected() || rbCTSsoles.isSelected() ||
rbCTSdolares.isSelected();
if (!verifica)
{
JOptionPane.showMessageDialog(null,"Selecciona un tipo de Cuenta");
return;
}
verifica=rbRetiro.isSelected() || rbDeposito.isSelected();

Ing. Roberto J. Macetas Rodrguez

201

TALLER DE PROGRAMACIN
if (!verifica)
{
JOptionPane.showMessageDialog(null,"Selecciona un tipo de Operacin");
return;
}
if (txtMonto.getText().length()==0)
{
JOptionPane.showMessageDialog(null,"Ingresa el Monto de la Operacin");
return;
}
datos[0]=txtNroTar.getText();
datos[1]=txtApe.getText();
datos[2]=txtNom.getText();
if (rbAhorroSoles.isSelected())
{
datos[3]="Ahorro en Soles";
}
if (rbAhorroDolares.isSelected())
{
datos[3]="Ahorro en Dlares";
}
if (rbCTSsoles.isSelected())
{
datos[3]="CTS en Soles";
}
if (rbCTSdolares.isSelected())
{
datos[3]="CTS en Dlares";
}
if (rbRetiro.isSelected())
{
datos[4]="Retiro";
}
if (rbDeposito.isSelected())
{
datos[4]="Depsito";
}
datos[5]=txtMonto.getText();
//Bsqueda del Saldo de la cuenta
filas=fmenu.getFilas();
for (i=0;i<=filas;i++)
{
if (fmenu.getValores(i,0).equals(datos[0]) && fmenu.getValores(i,3).equals(datos[3]))
{
saldo=Double.parseDouble(fmenu.getValores(i,4));
posicion=i;
}
}
//en caso de ser retiro verificar suficiente saldo de la cuenta
if (rbRetiro.isSelected())
{
if (Double.parseDouble(datos[5])>saldo)
{
JOptionPane.showMessageDialog(null,"El Monto de retiro supera al saldo Actual");
return;
}
saldo=saldo-Double.parseDouble(datos[5]);
}
//en caso de ser deposito sumar en saldo
if (rbDeposito.isSelected())
{
saldo=saldo+Double.parseDouble(datos[5]);
}
//actualizamos el saldo de la cuenta
fmenu.setActualizaSaldo(posicion,String.valueOf(saldo));
//agregamos una fila en la Tabla que se encuentra en la segunda pestaa
dtm.addRow(datos);
//obtenemos el nmero de filas encontradas en la Tabla y luego grabamos en el arreglo matriz
Movimientos
reg=dtm.getRowCount();
fmenu.setMovimientos(reg-1,datos[0],datos[1],datos[2],datos[3],datos[4],datos[5]);
//actualizamos el nmero de registros
fmenu.setRegistros(reg-1);

Ing. Roberto J. Macetas Rodrguez

202

TALLER DE PROGRAMACIN

this.limpiarObjetos();
this.usoObjetosRadio(true);
btnProcesar.setEnabled(false);
txtNroTar.requestFocus();

private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {


String nrotar;
nrotar=txtNroTar.getText();
int f, i;
f=fmenu.getFilas();
boolean encuentra=false;
if (f>=0)
{
this.usoObjetosRadio(false);
for (i=0;i<=f;i++)
{
if (fmenu.getValores(i,0).equals(nrotar))
{
if (fmenu.getValores(i,3).equals("Ahorro en Soles"))
rbAhorroSoles.setEnabled(true);
if (fmenu.getValores(i,3).equals("Ahorro en Dlares"))
rbAhorroDolares.setEnabled(true);
if (fmenu.getValores(i,3).equals("CTS en Soles"))
rbCTSsoles.setEnabled(true);
if (fmenu.getValores(i,3).equals("CTS en Dlares"))
rbCTSdolares.setEnabled(true);
txtApe.setText(fmenu.getValores(i,1));
txtNom.setText(fmenu.getValores(i,2));
encuentra=true;
btnProcesar.setEnabled(true);
}
}
if (!encuentra)
{
JOptionPane.showMessageDialog(null,"El nmero de Tarjeta NO EXISTE !!!");
this.usoObjetosRadio(true);
}

}
else
{
JOptionPane.showMessageDialog(null,"No existe Tarjeta alguna para realizar una Operacin");
}

27. Una vez programado, procedemos a ejecutar la aplicacin. Ejecutamos el


formulario frmMenu.

Ing. Roberto J. Macetas Rodrguez

203

TALLER DE PROGRAMACIN

Al dar clic en la opcin Apertura de Cuentas, ingresamos los apellidos y nombres


de un cliente.

Luego damos clic en el botn de comando Buscar y como es un nuevo cliente


procedemos a ingresar la direccin y el documento de identidad. Seleccionamos el
Ing. Roberto J. Macetas Rodrguez

204

TALLER DE PROGRAMACIN
tipo de cuenta Ahorro en Soles. Por ejemplo si no ingresamos el saldo inicial y
damos clic en el botn de comando Grabar mostrar un mensaje de error.

Una vez ingresado el saldo inicial y al dar clic en el botn de comando Grabar se
graba en el objeto JTable denominado TablaCuentas. Se limpia los objetos de
control y se inhabilita el botn de comando Grabar.

Se mostrar en la segunda pestaa la cuenta aperturada.


Ing. Roberto J. Macetas Rodrguez

205

TALLER DE PROGRAMACIN

Damos clic en el botn de comando Cerrar. Seleccionamos del men la opcin


Operaciones Bancarias. Ingresamos el nmero de tarjeta y al dar clic se visualiza
los datos del cliente y se habilitan las cuentas aperturadas.

Ing. Roberto J. Macetas Rodrguez

206

TALLER DE PROGRAMACIN
Una vez seleccionado la cuenta de Ahorros en soles, elegimos el tipo de operacin
de Depsito. Ingresamos el monto de la operacin.

Damos clic en el botn de comando Procesar se procede a grabar los datos


generando una nueva fila en el objeto JTable denominado TablaOperaciones.

Si cerramos la ventana de Operaciones Bancarias y seleccionamos la opcin de


Ing. Roberto J. Macetas Rodrguez

207

TALLER DE PROGRAMACIN
Apertura de Cuentas y nos dirigimos a la segunda pestaa y observamos que el
saldo actual ha aumentando en 300 soles quedando en 800 soles.

Ing. Roberto J. Macetas Rodrguez

208

TALLER DE PROGRAMACIN

MANEJO DE LOS SWING WINDOWS

Objeto JDialog y JFrame


JDialog

es un componente que sirve para presentar dilogos que son ventanas auxiliares

que se presentan cuando se registra un evento dentro de un programa, sirven para


prevencin o en su defecto se puede utilizar para dar informacin sobre algo, los dilogos
que JDialog muestra pueden ser modales o no modales, esto quiere decir que si son
modales la ventana del dilogo bloquea las entradas a otras ventanas, este tipo de
dilogos se pueden hacer tambin con JOptionPane.
Todos los dilogos dependen de un frame, las modificaciones que se le hagan al frame
afectaran a el dilogo, en caso de que el frame sea cerrado, minimizado o maximizado,
sus dilogos tendrn el mismo comportamiento.

Un objeto JFrame es una ventana ms utilizado para disear formularios. Vamos a


proceder hacer comparaciones con el objeto JDialog:

Si instanciamos un JFrame en la barra de abajo de windows (creo que se llama


"barra de herramientas") nos aparece un nuevo "botoncito" correspondiente a

Ing. Roberto J. Macetas Rodrguez

209

TALLER DE PROGRAMACIN
nuestra aplicacin. Si instanciamos un JDialog, no aparece nada.

Un JFrame tiene un mtodo setIconImage() para cambiar el icono por defecto de


la taza de caf. JDialog no tiene este mtodo.

Un JDialog admite otra ventana (JFrame o JDialog) como padre en el constructor.


JFrame no admite padres.

Un JDialog puede ser modal, un JFrame no.

Todo esto nos indica lo siguiente:

Un JFrame debe ser la ventana principal de nuestra aplicacin y slo debe haber
una.

Las ventanas secundarias de nuestra aplicacin deben ser JDialog.

Los motivos de esto son los siguientes:


Al mostrar el JFrame un botn en la barra de herramientas de windows y tener mtodo
para cambiar el icono, es la ventana ideal como ventana principal de nuestra aplicacin y
slo debe haber una. Nos permite cambiar el icono y slo debe haber un botn en la barra
de herramientas de windows para nuestra aplicacin.
Si usamos un JDialog como ventana principal, no tenemos botn en la barra de
herramientas y no hay forma fcil de cambiarle el icono.
Los JDialog son ideales para ventanas secundarias porque admiten una ventana padre.
Si la VentanaA es padre del JDialogB, entonces el JDialogB siempre estar por delante de
VentanaA, nunca quedar por detrs. Lo ideal es que hagamos nuestras ventanas
secundarias como JDialog cuyo padre sea el JFrame principal. De esta forma los JDialog
siempre sern visibles por encima del JFrame y no se irn detrs ni quedarn ocultos
por el JFrame.
Otra ventaja de admitir un padre es que heredan el icono de l. Si hemos cambiado el
icono del JFrame con el mtodo setIconImage(), entonces todos los JDialog que
hagamos como hijos de este JFrame heredarn el icono. Todas las ventanas de nuestra
aplicacin tendrn el mismo icono en lugar de la taza de caf por defecto.

Un JDialog puede ser modal, pasndole un true en el constructor en el sitio adecuado o


hacindolo modal con el mtodo setModal(). Si hacemos un JDialog modal, todas las
dems ventanas se deshabilitarn hasta que el usuario de nuestro programa cierre el
JDialog. Esto est estupendo para pedir un dato al usuario y evitar que toque otras cosas
Ing. Roberto J. Macetas Rodrguez

210

TALLER DE PROGRAMACIN
hasta que haya introducido el dato. Sin embargo, tiene un peligro.
Supongamos un JDialog que lo hacemos modal para pedir unos datos al usuario. Este
JDialog tiene un botn de "Aceptar" para que el usuario lo pulse cuando haya terminado
de introducir los datos. Supongamos que en el cdigo de ese botn "Aceptar"
comprobamos los datos que ha metido el usuario y vemos que son incorrectos. Le
sacamos un segundo JDialog modal para indicarle el error y no cerramos el primero.
Quin debe ser el padre de ese segundo JDialog modal?. Si hacemos que el padre sea
el JFrame tendremos dos JDialog modales hijos del JFrame, es decir, dos JDialog
modales hermanos. Esto nos dar problemas, como que ambas ventanas queden
deshabilitadas, que al cerrar una de ellas se nos oculten todas, que parte de la ventana
quede deshabilitada mientras que otra parte no, etc.
Entonces, cmo hacemos?. Para que java no haga cosas raras, el padre del segundo
JDialog modal debe ser el primer JDialog modal. De esta forma, el segundo tiene
"prioridad" sobre el primero. Todo queda deshabilitado excepto este segundo JDialog.
Cuando lo cerremos, ser el primero el que mande. Si queremos varias ventanas modales
simultneamente en pantalla, cada ventana que se muestre debe ser padre de la siguiente,
de forma que la cadena de ventanas modales sean padre, hijo, nieto, etc. Tener dos
ventanas modales simultneas que sean hermanas o primas o cualquier otra relacin que
no sea directa, nos dar problemas

Aplicacin 1
Vamos a proceder a crear un formulario donde se har uso del objeto JDialog para
mostrar un mensaje dentro de un objeto de control JtextArea.

Solucin:
1. Procedemos a crear un proyecto denominado SwingWindows.

Ing. Roberto J. Macetas Rodrguez

211

TALLER DE PROGRAMACIN

Luego dar clic en el botn de comando Finish (en caso de que la versin de
NetBeans es en castellano entonces dar clic en el botn de comando Terminar)

2. Estando en el entorno de NetBeans, seleccionamos el paquete swingwindows y


dando clic botn derecho del mouse, se muestra un men flotante, donde
seleccionamos Formulario JFrame.

3. A continuacin, colocaremos como nombre de formulario frmUsoJDialog.


Ing. Roberto J. Macetas Rodrguez

212

TALLER DE PROGRAMACIN

4. Procedemos a programar
package swingwindows;
import javax.swing.*;
import java.awt.*;
public class frmUsoJDialog extends javax.swing.JFrame {
/** Creates new form frmUsoJDialog */
public frmUsoJDialog() {
initComponents();
// creamos una variable del tipo JDialog
JDialog dialog;
// creamos una variable de tipo JFrame
JFrame credi;
credi=new JFrame();
dialog = new JDialog(credi, "", true);
dialog.setTitle("Creditos");
JTextArea texto = new JTextArea("Este Programa fue Diseado por :\n" + "Martn Salcedo Quiones\n"
+ "Como Trabajo del curso de Programacin Visual\n" +"Contiene jFrame y JDialog\n");
Container contentPane = dialog.getContentPane();
contentPane.add(texto, BorderLayout.CENTER);
dialog.setSize(new Dimension(300, 150));
dialog.show();
}

En la lnea de programacin siguiente:


dialog = new JDialog(credi, "", true);

Podemos notar la parte del String est vaca, esto se debe a que en el programa
vamos a cambiarle el ttulo al JDialog, a medida que necesitemos presentar uno
nuevo, esto con el fin de crear un solo JDialog para las diferentes ventanas.
Ing. Roberto J. Macetas Rodrguez

213

TALLER DE PROGRAMACIN
Tambin vemos que en boolean esta true esto es para especificar que es un
dilogo modal en caso que no lo pondramos false.

En la lnea de programacin siguiente:


dialog.setTitle("Creditos");

El mtodo setTitle es utilizada para cambiarle el ttulo a dialog.

En las lneas de programacin siguiente:


JTextArea texto = new JTextArea("Este Programa fue Diseado por :\n" + "Martn Salcedo Quiones\n" +
"Como Trabajo del curso de Programacin Visual\n" +"Contiene jFrame y JDialog\n");
Container contentPane = dialog.getContentPane();

Creamos el componente que va dentro, y a continuacin se pone el dialog dentro


del contentPane junto con el componente.

En las lneas de programacin siguiente:


dialog.setSize(new Dimension(300, 150));
dialog.show();

Por ltimo se dice el tamao del JDialog y la ltima lnea es para que sea
mostrado.

5. Procedemos a compilar el formulario frmUsoDialog y luego ejecutarlo.

6. Una vez ejecutado se muestra la siguiente ventana:

Ing. Roberto J. Macetas Rodrguez

214

TALLER DE PROGRAMACIN

Objeto JFileChooser
En Java tenemos varias formas para leer y escribir ficheros de textos, binarios, de formato
xml, etc. La clase JFileChooser permite mostrar una ventana para que el usuario navegue
por los directorios y elija un archivo.
Para pedir un archivo para abrirlo y leerlo basta hacer dos lneas de programacin:
JFileChooser fileChooser = new JfileChooser();
int seleccion = fileChooser.showOpenDialog(areatexto);

Este cdigo abre una ventana para navegar en directorios y elegir un fichero.

Podremos seleccionar el botn de comando Abrir o el botn de comando Cancelar. En la


variable de memoria seleccion se almacenar el valor del botn de comando
seleccionado. Slo debemos comprobar si es el botn de comando Abrir para pedirle a
JFileChooser qu archivo ha elegido el usuario y empezar a trabajar con l.
If (seleccin ==JfileChooser.APPROVE_OPTION)
{
File fichero = fileChooser.getSelectedFile();
}

Ing. Roberto J. Macetas Rodrguez

215

TALLER DE PROGRAMACIN
Si seleccin vale JFileChooser.APPROVE_OPTION es que el usuario ha pulsado Abrir,
as que pedimos el fichero seleccionado con getSelectedFile().
JFileChooser abre una ventana que se mostrar junto a la ventana de nuestro editor. Nos
gustara que esta ventana de seleccin de fichero no se vaya detrs y quede oculta por la
ventana del editor. La ventana de elegir fichero debera estar siempre delante y visible
sobre el editor. La forma de conseguir esto es que JFileChooser sepa cual es esta
ventana delante de la cual debe estar siempre. Para saber cul es esa ventana, basta con
pasarle en el parmetro cualquier componente de dicha ventana. En nuestro ejemplo
hemos decidido pasarle el JTextArea de nuestro editor, pero podamos pasarle
perfectamente el JMenuBar o el JFrame principal.
Para elegir un fichero para salvar, el cdigo es exactamente igual, pero cambia el mtodo
para visualizar el dilogo.
JFileChooser fileChooser = new JFileChooser();
int seleccion = fileChooser.showSaveDialog(areatexto);

Aplicacin 2
Vamos a proceder a crear una aplicacin donde usaremos el JFrame,JDialog, JTextArea,
y JFileChooser para hacer lectura de un archivo texto seleccionado y abierto desde un
JFileChooser.

Solucin:
1. Procedemos a crear un proyecto denominado PruebaJFileChooser.

Luego dar clic en el botn de comando Finish (en caso de que la versin de
NetBeans es en castellano entonces dar clic en el botn de comando Terminar)

2. Todo proyecto creado crea por defecto un archivo main de extensin java. Haremos
uso de este archivo para lo cual colocaremos el siguiente cdigo.
package pruebajfilechooser;
import javax.swing.*;
import java.io.*;
import java.awt.*;

Ing. Roberto J. Macetas Rodrguez

216

TALLER DE PROGRAMACIN
/**
*
* @author Usuario
*/
public class Main {
/** Creates a new instance of Main */
public Main() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args)throws IOException {
JTextArea area= new JTextArea();
JDialog dialog;
JFrame formulario = new JFrame();
dialog = new JDialog(formulario, "", true);
dialog.setTitle("Mostrar Archivo");
//se instancia la variable fileChooser del tipo JFileChooser
JFileChooser fileChooser = new JFileChooser();
//con el mtodo showOpenDialog() se muestra la ventana para seleccionar el archivo
int seleccion = fileChooser.showOpenDialog(area);
//si el usuario selecciona el botn de comando Abrir, el if se hace verdadero
if (seleccion==JFileChooser.APPROVE_OPTION)
{
//la variable fichero contiene el archivo texto seleccionado con el mtodo getSelectedFile()
File fichero = fileChooser.getSelectedFile();
//la variable reader permite leer linea por linea el archivo a travs del mtodo readLine()
BufferedReader reader = new BufferedReader(new FileReader(fichero));
String linea = reader.readLine();
//con while se lee lnea por lnea y se pasa a la variable area que es un JTextArea
while (linea != null)
{
area.append(linea);
area.append(System.getProperty("line.separator"));
linea = reader.readLine();
}
//se cierra el fichero
reader.close();
//se muestra visualmente el contenido de la variable area dentro de un JDialog
Container contentPane = dialog.getContentPane();
contentPane.add(area, BorderLayout.CENTER);
dialog.setSize(new Dimension(500, 600));
dialog.show();
}
}
}

3. Una vez compilado, procedemos a ejecutarlo.

Ing. Roberto J. Macetas Rodrguez

217

TALLER DE PROGRAMACIN
4. Observamos la ventana generada por el objeto JFileChooser.

Seleccionamos el archivo texto Grupos para Procedimientos Almacenados ..., luego


damos clic en el botn de comando Abrir. A continuacin, visualizamos la
siguiente interface:

Ing. Roberto J. Macetas Rodrguez

218

TALLER DE PROGRAMACIN

PRESENTACION DE UN SISTEMA DE APLICACION

Continuacin del CASO: Banco - Cuentas


Continuando con la construccin del caso de Bancos, vamos a agregar dos formularios
que manejar cada uno de ellos una consulta. Observemos el siguiente diseo:

Ing. Roberto J. Macetas Rodrguez

219

TALLER DE PROGRAMACIN

En ste formulario vamos a consultar por apellidos, que una vez ingresado los apellidos
del cliente y al dar clic en el botn de comando Buscar se mostrar los nombres del
cliente, el nmero de documento de documento de identidad, el nmero de tarjeta y se
habilitar los objetos JRadioButton de aquellas cuentas que el cliente posee. En caso no
existiera los apellidos del cliente se mostrar un mensaje de que el cliente no existe.
Podremos seleccionar una de las cuentas que tiene el cliente y al dar clic en el botn de
comando Saldo Actual se mostrar en el cuadro de texto el monto actual de la cuenta.
Crearemos una segunda pestaa para hacer lo mismo pero la bsqueda ser por el
nmero de tarjeta, siendo el diseo el siguiente:

Ing. Roberto J. Macetas Rodrguez

220

TALLER DE PROGRAMACIN
Para el segundo formulario se har la consulta de los movimientos de una cuenta, para lo
cual se usar el siguiente diseo:

Ingresaremos el nmero de tarjeta y al dar clic en el botn de comando Buscar se


mostrar los apellidos y nombres en un cuadro de texto y se habilitarn los objetos
JRadioButton de las cuentas que tiene el cliente. En caso no existiera el nmero de tarjeta
se mostrar un mensaje de que la tarjeta no existe. En el momento que seleccionemos
una cuenta se visualizarn las operaciones de la cuenta seleccionada en un objeto JTable
como tambin el total de depsitos, el total de retiros y el saldo actual en objeto JTextField.
En el men crearemos una opcin en la barra de men que exprese Consultas con dos
opciones (JMenuItem) que expresen Cuentas del Cliente y Operaciones de la Cuenta.

Ing. Roberto J. Macetas Rodrguez

221

TALLER DE PROGRAMACIN
Solucin:
1. Seleccionamos el paquete caso_banco del proyecto Caso_Banco y dando clic
botn derecho del mouse, se muestra un men flotante, donde seleccionamos
Formulario JFrame.

2. A continuacin, colocaremos como nombre de formulario frmConsultaClientes.

Luego dar clic en el botn de comando Finish (en caso de que la versin de
NetBeans es en castellano entonces dar clic en el botn de comando Terminar)

Ing. Roberto J. Macetas Rodrguez

222

TALLER DE PROGRAMACIN
3. Se muestra el entorno de desarrollo de NetBeans y no olvidemos de dar clic en el
botn derecho del mouse sobre el formulario y establecemos Absolute Layout en
SetLayout.

4. Iniciamos el diseo del formulario colocando un objeto JLabel y JTabbedPanel.

5. Agregamos un objeto JPanel para crear el primer Tab.


Ing. Roberto J. Macetas Rodrguez

223

TALLER DE PROGRAMACIN
//

6. Colocamos como expresin en la pestaa Consulta de Apellidos y procedemos a


colocar Absolute Layout en la opcin Set Layout cuando usemos el botn derecho
del mouse sobre el Tab1

7. Colocamos un objeto JDesktopPanel, cambiamos el color a un anaranjado claro y


luego colocamos los objetos de control. Tendremos que colocar un objeto JPanel
para disear los objetos JRadioButton para las cuentas del cliente. Al objeto JPanel
debemos establecer Absolute Layout en SetLayout.
Ing. Roberto J. Macetas Rodrguez

224

TALLER DE PROGRAMACIN

Colocamos los dems objetos de control segn el diseo indicado en el enunciado


del caso.

8. Procedamos a colocar nombres a los objetos de control de la primera pestaa.

Ing. Roberto J. Macetas Rodrguez

225

TALLER DE PROGRAMACIN
9. Vamos a disear la segunda pestaa. Procedemos a colocar Absolute Layout en
la opcin Set Layout cuando usemos el botn derecho del mouse sobre el Tab2.
La expresin de la segunda pestaa es Consulta por Tarjeta.

10. Colocamos un objeto JDesktopPanel, cambiamos el color a un celeste claro (color


agua) y luego colocamos los objetos de control. Tendremos que colocar un objeto
JPanel para disear los objetos JRadioButton para las cuentas del cliente. Al objeto
JPanel debemos establecer Absolute Layout en SetLayout.

Ing. Roberto J. Macetas Rodrguez

226

TALLER DE PROGRAMACIN
11. Procedamos a colocar nombres a los objetos de control de la segunda pestaa.

12. Pasemos a disear el formulario para las consultas de operaciones bancarias.


Creamos un objeto JFrame.

13. Le damos como nombre al formulario frmConsultaOperaciones.

Ing. Roberto J. Macetas Rodrguez

227

TALLER DE PROGRAMACIN

Luego dar clic en el botn de comando Finish (en caso de que la versin de
NetBeans es en castellano entonces dar clic en el botn de comando Terminar)

14. Se muestra el entorno de desarrollo de NetBeans y no olvidemos de dar clic en el


botn derecho del mouse sobre el formulario y establece Absolute Layout en
SetLayout.

15. Iniciamos el diseo del formulario colocando los objetos de control y usaremos un
objeto JPanel donde se colocarn los objetos JRadioButton para las cuentas del
Ing. Roberto J. Macetas Rodrguez

228

TALLER DE PROGRAMACIN
cliente. Al objeto JPanel debemos establecer Absolute Layout en SetLayout.

16. Continuamos el diseo del formulario agregando un objeto JTable para visualizar
en tiempo de ejecucin las operaciones bancarias. Agregamos tres objetos
JTextField para mostrar el total de depsitos, el total de retiros y el saldo actual de
la cuenta seleccionada dentro del objeto JPanel. Procedamos a colocar nombres a
los objetos de control.

Ing. Roberto J. Macetas Rodrguez

229

TALLER DE PROGRAMACIN
17. Procedemos a programar en cada uno de los formularios.
CODIGO DEL FORMULARIO frmConsultaClientes
public class frmConsultaClientes extends javax.swing.JFrame {
frmMenu fmenu=new frmMenu();
/** Creates new form frmConsultaClientes */
public frmConsultaClientes() {
initComponents();
this.setLocation(120,120);
}
public void usoObjetosRadio(boolean accion)
{
rbAhorroSoles.setEnabled(accion);
rbAhorroDolares.setEnabled(accion);
rbCTSsoles.setEnabled(accion);
rbCTSdolares.setEnabled(accion);
}
public void usoObjRadio(boolean accion)
{
rbASoles.setEnabled(accion);
rbADolares.setEnabled(accion);
rbCTSs.setEnabled(accion);
rbCTSd.setEnabled(accion);
}
private void btnSaldoActualActionPerformed(java.awt.event.ActionEvent evt) {
String saldo="", cuenta="";
int fila,i;
fila=fmenu.getFilas();
//en la variable cuenta asignamos el tipo de cuenta seleccionada
if (rbASoles.isSelected())
{
cuenta="Ahorro en Soles";
}
if (rbADolares.isSelected())
{
cuenta="Ahorro en Dlares";
}
if (rbCTSs.isSelected())
{
cuenta="CTS en Soles";
}
if (rbCTSd.isSelected())
{
cuenta="CTS en Dlares";
}
//buscamos el saldo actual a travs del nmero de tarjeta y el tipo de cuenta
for (i=0;i<=fila;i++)
{
if(txtTar.getText().equals(fmenu.getValores(i,0)) &&
cuenta.equalsIgnoreCase(fmenu.getValores(i,3)))
{
saldo=fmenu.getValores(i,4);
}
}
txtSaldoActual.setText(saldo);
}
private void btnEncontrarActionPerformed(java.awt.event.ActionEvent evt) {
String cuenta, tar;
int fila, i;
tar=txtTar.getText();
fila=fmenu.getFilas();
this.usoObjRadio(false);
//buscamos los datos del cliente a travs del nmero de tarjeta
for (i=0;i<=fila;i++)
{
if (fmenu.getValores(i,0).equals(tar))
{
txtAp.setText(fmenu.getValores(i,1));

Ing. Roberto J. Macetas Rodrguez

230

TALLER DE PROGRAMACIN

txtNo.setText(fmenu.getValores(i,2));
txtNroDoc.setText(fmenu.getValores(i,0).substring(4));
//habilitamos las cuentas que tiene el cliente
cuenta=fmenu.getValores(i,3);
if (cuenta.equalsIgnoreCase("Ahorro en Soles"))
rbASoles.setEnabled(true);
if (cuenta.equalsIgnoreCase("Ahorro en Dlares"))
rbADolares.setEnabled(true);
if (cuenta.equalsIgnoreCase("CTS en Soles"))
rbCTSs.setEnabled(true);
if (cuenta.equalsIgnoreCase("CTS en Dlares"))
rbCTSd.setEnabled(true);

private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt) {


this.hide();
}
private void btnSaldoActionPerformed(java.awt.event.ActionEvent evt) {
String saldo="", cuenta="";
int fila,i;
fila=fmenu.getFilas();
if (rbAhorroSoles.isSelected())
{
cuenta="Ahorro en Soles";
}
if (rbAhorroDolares.isSelected())
{
cuenta="Ahorro en Dlares";
}
if (rbCTSsoles.isSelected())
{
cuenta="CTS en Soles";
}
if (rbCTSdolares.isSelected())
{
cuenta="CTS en Dlares";
}
for (i=0;i<=fila;i++)
{
if(txtNroTar.getText().equals(fmenu.getValores(i,0)) &&
cuenta.equalsIgnoreCase(fmenu.getValores(i,3)))
{
saldo=fmenu.getValores(i,4);
}
}
txtSaldo.setText(saldo);
}
private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {
String ape, cuenta;
int fila, i;
ape=txtApe.getText();
fila=fmenu.getFilas();
this.usoObjetosRadio(false);
for (i=0;i<=fila;i++)
{
if (fmenu.getValores(i,1).equalsIgnoreCase(ape))
{
txtNom.setText(fmenu.getValores(i,2));
txtDoc.setText(fmenu.getValores(i,0).substring(4));
txtNroTar.setText(fmenu.getValores(i,0));
cuenta=fmenu.getValores(i,3);
if (cuenta.equalsIgnoreCase("Ahorro en Soles"))
rbAhorroSoles.setEnabled(true);
if (cuenta.equalsIgnoreCase("Ahorro en Dlares"))
rbAhorroDolares.setEnabled(true);
if (cuenta.equalsIgnoreCase("CTS en Soles"))
rbCTSsoles.setEnabled(true);
if (cuenta.equalsIgnoreCase("CTS en Dlares"))
rbCTSdolares.setEnabled(true);

Ing. Roberto J. Macetas Rodrguez

231

TALLER DE PROGRAMACIN
}

CODIGO DEL FORMULARIO frmConsultaOperaciones


package caso_banco;
import javax.swing.JOptionPane;
import javax.swing.table.*;
public class frmConsultaOperaciones extends javax.swing.JFrame {
frmMenu fmenu=new frmMenu();
DefaultTableModel dtm = new DefaultTableModel();
/** Creates new form frmConsultaOperaciones */
public frmConsultaOperaciones() {
initComponents();
String titulos[]={"Tipo de Operacin","Monto"};
dtm.setColumnIdentifiers(titulos);
tablaOperaciones.setModel(dtm);
this.setLocation(120,120);
}
public void usoObjetosRadio(boolean accion)
{
rbAhorroSoles.setEnabled(accion);
rbAhorroDolares.setEnabled(accion);
rbCTSsoles.setEnabled(accion);
rbCTSdolares.setEnabled(accion);
}
public void llenaTabla(String nrotar, String cuenta)
{
String datos[]=new String[2];
int reg, i, f, fila;
double sumaDep=0.0, sumaRet=0.0, monApe=0.0;
reg=fmenu.getRegistros();
f=tablaOperaciones.getRowCount();
//limpiamos el objeto Table luego llenar con los movimientos de la cuenta
if (f>0)
for (i=0;i<f;i++)
dtm.removeRow(0);
// luego llenamos al objeto Table con los movimientos de la cuenta
for (i=0;i<=reg;i++)
{
if(fmenu.getMovimientos(i,0).equals(nrotar) && fmenu.getMovimientos(i,3).equals(cuenta))
{
datos[0]=fmenu.getMovimientos(i,4);
datos[1]=fmenu.getMovimientos(i,5);
dtm.addRow(datos);
}
}
//sumamos los depsitos y los retiros en las variables sumaDep y sumaRet
f=tablaOperaciones.getRowCount();
if (f>0)
for (i=0;i<f;i++)
{
if (tablaOperaciones.getValueAt(i,0).equals("Depsito"))
sumaDep=sumaDep+Double.parseDouble((String)tablaOperaciones.getValueAt(i,1));
else
sumaRet=sumaRet+Double.parseDouble((String)tablaOperaciones.getValueAt(i,1));
}
txtTotalDep.setText(String.valueOf(sumaDep));
txtTotalRet.setText(String.valueOf(sumaRet));
fila=fmenu.getFilas();
//obtenemos el saldo actual de la cuenta

Ing. Roberto J. Macetas Rodrguez

232

TALLER DE PROGRAMACIN

for (i=0; i<=fila; i++)


if (fmenu.getValores(i,0).equals(nrotar) && fmenu.getValores(i,3).equals(cuenta))
txtSaldoActual.setText(fmenu.getValores(i,4));
monApe=Double.parseDouble(txtSaldoActual.getText()) - (sumaDep - sumaRet);
txtMonApe.setText(String.valueOf(monApe));

private void rbCTSdolaresActionPerformed(java.awt.event.ActionEvent evt) {


this.llenaTabla(txtTar.getText(),"CTS en Dlares");
}
private void rbCTSsolesActionPerformed(java.awt.event.ActionEvent evt) {
this.llenaTabla(txtTar.getText(),"CTS en Soles");
}
private void rbAhorroDolaresActionPerformed(java.awt.event.ActionEvent evt) {
this.llenaTabla(txtTar.getText(),"Ahorro en Dlares");
}
private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt) {
this.hide();
}
private void rbAhorroSolesActionPerformed(java.awt.event.ActionEvent evt) {
this.llenaTabla(txtTar.getText(),"Ahorro en Soles");
}
private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {
String cuenta, tar;
int fila, i;
tar=txtTar.getText();
fila=fmenu.getFilas();
this.usoObjetosRadio(false);
for (i=0;i<=fila;i++)
{
if (fmenu.getValores(i,0).equals(tar))
{
txtApeNom.setText(fmenu.getValores(i,1)+" "+fmenu.getValores(i,2));
cuenta=fmenu.getValores(i,3);
if (cuenta.equalsIgnoreCase("Ahorro en Soles"))
rbAhorroSoles.setEnabled(true);
if (cuenta.equalsIgnoreCase("Ahorro en Dlares"))
rbAhorroDolares.setEnabled(true);
if (cuenta.equalsIgnoreCase("CTS en Soles"))
rbCTSsoles.setEnabled(true);
if (cuenta.equalsIgnoreCase("CTS en Dlares"))
rbCTSdolares.setEnabled(true);
}
}
}

18. Una vez programado, procedemos a ejecutar la aplicacin. Ejecutamos el


formulario frmMenu e ingresamos los datos que se indicaron en la sesin o tema
12. Luego, procedemos a seleccionar la opcin de Consultas y posteriormente
Cuentas del Cliente.

Ing. Roberto J. Macetas Rodrguez

233

TALLER DE PROGRAMACIN

19. Ingresamos los apellidos y nombres y damos clic en el botn de comando Buscar
y mostrar el nmero de documento de identidad, el nmero de tarjeta y se
habilitarn las cuentas que tiene el cliente. Seleccionamos una cuenta, damos clic
en el botn de comando Saldo Actual y se visualizar el saldo de la cuenta
elegida.

Ing. Roberto J. Macetas Rodrguez

234

TALLER DE PROGRAMACIN
20. Lo mismo podemos hacerlo en la otra pestaa que se consulta por el nmero de
tarjeta. Cerramos la ventana de la consulta dando clic en el botn de comando
Cerrar y posteriormente seleccionamos la opcin Operaciones de la Cuenta.
Ingresamos el nmero de tarjeta y damos clic en el botn de comando Buscar y se
mostrar los apellidos y nombres del cliente y se habilitarn las cuentas que tiene
el cliente.

21. Procedemos a seleccionar la cuenta Ahorro en Soles y se visualizar las


operaciones realizadas con la cuenta como tambin el monto de la apertura, el total
de depsitos, el total de retiros y el saldo actual.

Ing. Roberto J. Macetas Rodrguez

235

TALLER DE PROGRAMACIN
AUTOEVALUACION
a) Responde a las siguientes preguntas:
1. El objeto contenedor que puede estar compuesto por varios pestaas o panales, se
denomina
2. El mtodo que permite ocultar un formulario es

hide() (verdadero o falso)

3. El mtodo que aade una nueva fila al modelo de un objeto JTable se denomina

4. El operador new permite instanciar un objeto a partir de su clase y mtodo constructor


(verdadero o falso)
b) Desarrolla las siguientes aplicaciones:
1. Al caso de Banco modifica la aplicacin que permita buscar un cliente por su
documento de identidad y no por sus apellidos y nombres.
2. Al caso de Banco en lugar de seleccionar el tipo de cuenta a travs de objetos de
JradioButton se haga a travs de una lista desplegable. Hacer el cambio en el
formulario de apertura de cuentas.

REFERENCIAS BIBLIOGRAFICAS

- Harvey M. Deitel y Paul J.Deitel Cmo programar en Java.Pearson Educacin, 5da


edicin, 1268p, 2004
- Pgina oficial de NetBeans. Utilizando el entorno NetBeans
http://wiki.netbeans.org/SpanishTranslationTutorialesAPIPersistenciaVWP
- Sun Microsystems NetBeans IDE Java Quick Start Tutorial
http://www.netbeans.org/kb/docs/java/quickstart.html
- Noelia Mndez Fernndez y Jos Garca Valiente. Programacin con Swing, Junio 2005
http://es.scribd.com/doc/7222069/Java-Swing
- Java Swing Containers http://www.cs.qub.ac.uk/~P.Hanna/JavaProgramming/Lecture6/Java Lecture 6 - Containers.pdf

Ing. Roberto J. Macetas Rodrguez

236

También podría gustarte