Sunteți pe pagina 1din 236

Visual Java usando NetBeans

Contiene los objetos del paquete swing controls, los objetos contenedores del paquete swing containers, los objetos del swing Windows y el desarrollo del caso de Bancos

Texto para el curso de Programacin Visual I del III ciclo de la escuela de Ingeniera de Sistemas de la ULADECH

Elaborado por: Ing. Martn Salcedo Quiones

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

INDICE
Pgina CAPITULO I: Objetos de control bsicos Introduccin a la programacin visual Uso de los objetos Jlabel, JTextField y JButtom Uso de los objetos de control JradioButton y JCheckBox CAPITULO II:Objetos de control para lista y cuadrcula de datos Uso del objeto Jlist Uso del objeto JComboBox Uso de objeto JTable CAPITULO III: Objetos contenedores y mens Uso del objeto JFrame Objetos contenedores JPanel y JScrollPanel Objetos contenedores JTabbedPanel y JDesktopPanel Objetos Menus JmenuBar y JManuItem Objetos Menus JradioButtonMenuItem, Jseparator y Jmenu CAPITULO IV: Sistema de Aplicacin Construccin de un Sistema de Aplicacin Manejo de los swing windows Presentacin de un Sistema de Aplicacin 03 04 22 33 48 49 65 80 91 92 107 125 147 160 178 179 209 219

Ing. Martn Salcedo Quiones

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

CAPITULO I
OBJETOS DE CONTROL BASICOS

Ing. Martn Salcedo Quiones

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 4

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote (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. Martn Salcedo Quiones

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 6

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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 Ing. Martn Salcedo Quiones 8

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

10

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

11

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

12

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

13

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

Ing. Martn Salcedo Quiones

14

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

15

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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

Ing. Martn Salcedo Quiones

16

PROGRAMACION VISUAL I

Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

17

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

18

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

19

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote
/** * @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. Martn Salcedo Quiones

20

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 21

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 22

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

23

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

24

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 25

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

26

PROGRAMACION VISUAL I

Universidad Catlica Los Angeles de Chimbote Ahora procedamos a usar a cambiar los valores de las propiedades de los objetos de control en la ventana de propiedades: Objeto de Control JLabel1 JLabel2 JLabel3 JTextField1 JTextField2 JTextField3 JButton1 JButton2 JButton3 Text Text Text Text Text Text Text Text Text Propiedad Valor de la Propiedad BASE: ALTURA: El rea del Tringulo es: (Vaco o limpiar) (Vaco o limpiar) (Vaco o limpiar) CALCULAR LIMPIAR 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. Martn Salcedo Quiones

27

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

Colocamos como nombre al objeto JtextField1: txtBase

Continuamos con los objetos de control siguientes: Objeto de Control JTextField2 JTextField3 Ing. Martn Salcedo Quiones txtAltura txtArea 28 Nombre

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote JButton1 JButton2 JButton3 btnCalcular btnLimpiar 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. Martn Salcedo Quiones 29

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

30

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

31

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

En la siguiente sesin conoceremos ms objetos de control y seguiremos trabajando con lo aprendido en esta sesin.

Ing. Martn Salcedo Quiones

32

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 33

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 34

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

35

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

36

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

37

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

Seleccionamos el objeto JRadioButton referido a Audio y luego buscamos en la ventana de propiedades, la propiedad buttongroup y 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. Martn Salcedo Quiones

38

PROGRAMACION VISUAL I

Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

39

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote
} 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=(costo-dcto+incre)+igv; txtDcto.setText(String.valueOf(dcto)); txtIncre.setText(String.valueOf(incre)); txtIgv.setText(String.valueOf(igv)); txtMPagar.setText(String.valueOf(mpagar)); if (rbLinea.isSelected()) dcto=costo*0.05;

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. Martn Salcedo Quiones

40

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote
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. Martn Salcedo Quiones 41

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

42

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

43

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

44

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

45

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote
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. Martn Salcedo Quiones 46

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 47

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

CAPITULO II
OBJETOS DE CONTROL PARA LISTA Y CUADRICULA DE DATOS

Ing. Martn Salcedo Quiones

48

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. 49

Ing. Martn Salcedo Quiones

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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 Ing. Martn Salcedo Quiones 50

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

51

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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 52

Ing. Martn Salcedo Quiones

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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 53

Ing. Martn Salcedo Quiones

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

54

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

Luego de seleccionar el botn de comando referido a la propiedad model se muestra la siguiente ventana:

Ing. Martn Salcedo Quiones

55

PROGRAMACION VISUAL I

Universidad Catlica Los Angeles de Chimbote 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 56

Ing. Martn Salcedo Quiones

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

57

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

58

PROGRAMACION VISUAL I

Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

59

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 60

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 61

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

62

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

63

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

En el siguiente tema conoceremos a otro objeto de control y seguiremos trabajando con lo aprendido con las sesiones 2, 3 y 4.

Ing. Martn Salcedo Quiones

64

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

65

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 66

PROGRAMACION VISUAL I

Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 67

PROGRAMACION VISUAL I

Universidad Catlica Los Angeles de Chimbote 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 68

Ing. Martn Salcedo Quiones

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

69

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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 y 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. Martn Salcedo Quiones

70

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 71

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

72

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 73

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

74

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

75

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

76

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 77

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

78

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

Ing. Martn Salcedo Quiones

79

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 80

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 81

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

82

PROGRAMACION VISUAL I

Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 83

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

84

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

85

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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 86

Ing. Martn Salcedo Quiones

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 87

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 88

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote <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. Martn Salcedo Quiones 89

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote ______________________ 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. Martn Salcedo Quiones

90

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

CAPITULO III
OBJETOS CONTENEDORES Y MENUS

Ing. Martn Salcedo Quiones

91

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 92

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. 93

setVisible(): Establece la visibilidad del objeto. Usa valores booleanos. Ing. Martn Salcedo Quiones

PROGRAMACION VISUAL I

Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

94

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

95

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

96

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

97

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

98

PROGRAMACION VISUAL I
9. Procedemos Universidad Catlica Los Angeles de Chimbote a definir cuatro atributos o 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. Martn Salcedo Quiones

99

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

100

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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

12. Ahora programemos en el botn de comando Agregar.

Ing. Martn Salcedo Quiones

101

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

102

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 103

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

104

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 105

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

106

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

107

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

108

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 109

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

110

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 111

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

112

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

113

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

114

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

Ing. Martn Salcedo Quiones

115

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

116

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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

12. Posteriormente, seleccionamos el tipo de Borde EtchedBorder. Ing. Martn Salcedo Quiones 117

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

118

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

119

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

120

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

121

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 122

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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 Ing. Martn Salcedo Quiones 123

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

124

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

125

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

126

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

127

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 128

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

129

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

130

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 131

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 132

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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 a <Seleccionar,Secundaria y Superior. Tambin colocaremos un objeto JPanel para el sexo del alumno donde se establecer el ttulo y el borde.

Ing. Martn Salcedo Quiones

133

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

134

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

135

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

136

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 137

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote mouse, en el men flotante seleccionamos propiedades.

Ing. Martn Salcedo Quiones

138

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

139

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

140

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

Ing. Martn Salcedo Quiones

141

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

142

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 143

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 144

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

145

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

146

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 147

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

148

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

149

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 150

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

151

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 152

PROGRAMACION VISUAL I
rbol de Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 153

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 154

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 155

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

156

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

157

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

158

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

159

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 160

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 161

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

162

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

Ing. Martn Salcedo Quiones

163

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

Y el panel Inspector debe adoptar la siguiente forma:

Ing. Martn Salcedo Quiones

164

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

165

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 166

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

167

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

168

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 169

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

170

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

171

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 172

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

173

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote
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. Martn Salcedo Quiones

174

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote
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. Martn Salcedo Quiones

175

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

176

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

177

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

CAPITULO IV
SISTEMAS DE APLICACION

Ing. Martn Salcedo Quiones

178

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 179

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 180

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

181

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

La segunda pestaa tiene el siguiente diseo:

Ing. Martn Salcedo Quiones

182

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

183

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 184

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

185

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

186

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 187

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

188

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

189

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

190

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

191

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

192

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 193

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

194

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

195

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

196

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

197

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote
} //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. Martn Salcedo Quiones

198

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote
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. Martn Salcedo Quiones

199

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote
} 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. Martn Salcedo Quiones

200

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote
//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. Martn Salcedo Quiones

201

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote
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. Martn Salcedo Quiones

202

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote
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. Martn Salcedo Quiones

203

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 204

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 205

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

206

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 207

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

208

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

209

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 210

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

211

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 212

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 213

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

214

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

215

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

216

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote
/** * * @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. Martn Salcedo Quiones

217

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

218

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

219

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

220

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

221

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

222

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones 223

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 224

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

225

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

226

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

227

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones 228

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

229

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

230

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote
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. Martn Salcedo Quiones

231

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote
} } }

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. Martn Salcedo Quiones

232

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote
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. Martn Salcedo Quiones

233

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote

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. Martn Salcedo Quiones

234

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

235

PROGRAMACION VISUAL I
Universidad Catlica Los Angeles de Chimbote 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. Martn Salcedo Quiones

236

S-ar putea să vă placă și