Texto de Programacion Visual Java
Texto de Programacion Visual Java
DE
PROGRAMACIN
EN
JAVA
CON
NETBEANS
***************************************************************************************
Elaborado por:
Ing. Roberto J. Macetas Rodrguez
2015
TALLER DE PROGRAMACIN
INDICE
Pgina
CAPITULO I: Objetos de control bsicos
03
04
22
33
48
49
65
80
91
92
107
125
147
160
178
179
209
219
TALLER DE PROGRAMACIN
CAPITULO I
OBJETOS DE CONTROL BASICOS
TALLER DE PROGRAMACIN
Qu es Programacin Visual?
TALLER DE PROGRAMACIN
(POO). La POO define a los programas en trminos de clases de objetos, objetos que
son entidades que combinan estado (datos), comportamiento (procedimientos o mtodos)
e identidad (propiedad o atributo del objeto) que lo diferencia de los dems. La POO
expresa un programa como un conjunto de objetos, que colaboran entre ellos para realizar
tareas.
Podramos decir que las caractersticas de los objetos son:
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.
TALLER DE PROGRAMACIN
TALLER DE PROGRAMACIN
Una vez que ingresas al entorno de desarrollo de NetBeans se observa:
Para dar inicio a una aplicacin de Java bajo el entorno de Netbeans se debe definir un
proyecto, para ello, seleccionas la opcin del men denominada File. Se muestra
inmediatamente un men flotante cuya primera opcin indica New Proyect, est opcin la
seleccionas.
TALLER DE PROGRAMACIN
Dado que nuestras aplicaciones van ser desarrolladas en entorno visual en Categories
seleccionas la carpeta Java y en Proyects seleccionas Java Application. Luego hacer clic
8
Ing. Roberto J. Macetas Rodrguez
TALLER DE PROGRAMACIN
en el botn de comando Next que mostrar la siguiente ventana:
Es conveniente que uno mismo cree su carpeta de destino de los archivos que se
generan para la construccin de una aplicacin. Supongamos que la carpeta que
necesitamos crear se llama Ejercicios y la creamos en la unidad E, para ello es necesario
dar clic en el botn de comando Browse.
TALLER DE PROGRAMACIN
Una vez indicada la nueva carpeta Ejercicios, procede a dar clic en el botn de comando
Abrir quedando la ventana New Java Application de la siguiente forma:
10
TALLER DE PROGRAMACIN
Se observa que en Proyect Location se muestra la carpeta destino del proyecto. Vamos
a suponer que se quiere construir un programa que calcule el promedio de dos notas,
entonces la ventana debera quedar de la siguiente forma:
Al dar clic en Finish se mostrar el entorno de desarrollo de NetBeans listo para dar inicio
a la construccin de la aplicacin.
11
TALLER DE PROGRAMACIN
Cuando se pretenda construir una aplicacin de entorno visual tendramos que usar
plantillas que el mismo NetBeans IDE te ofrece. Ahora, seleccionemos el paquete
ejercicios y luego elijamos la opcin New y a continuacin seleccionemos JFrameForm
Una vez seleccionada la opcin JFrameForm se muestra la ventana New Jframe Form
para definir el nombre de clase.
12
TALLER DE PROGRAMACIN
Como nombre de clase le pondremos frmPromedio2Notas esto generar un archivo de
extensin .java dentro de la ruta:
E:\Ejercicios\Promedio2Notas\src\ejercicios\frmPromedio2Notas.java
y como veremos todo se encuentra dentro de la carpeta Ejercicios creada inicialmente en
la unidad E
13
TALLER DE PROGRAMACIN
14
TALLER DE PROGRAMACIN
Solucin:
15
TALLER DE PROGRAMACIN
16
TALLER DE PROGRAMACIN
17
TALLER DE PROGRAMACIN
Sabemos que en Java una clase tiene comnmente al mtodo Main que es el
mtodo que se ejecuta cuando se aplica Run a la aplicacin construida. En el
entorno de NetBeans, una clase creada, crea un mtodo que tiene el mismo
nombre de la clase a la que se denomina mtodo constructor y toda programacin
hecha en ste mtodo se ejecutar primero antes que el mtodo main. NetBeans
generar un paquete (Package) denominado ejercicios y dentro de ella se mostrar
la clase de acceso pblico AreaTriangulo. El entorno de desarrollo de NetBeans
despus de dar clic en el botn Finish queda as:
18
TALLER DE PROGRAMACIN
Agregamos al cdigo
19
TALLER DE PROGRAMACIN
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException
{
int base, altura;
double area;
base=Integer.parseInt(JOptionPane.showInputDialog(null,"Ingrese la base: "));
altura=Integer.parseInt(JOptionPane.showInputDialog(null,"Ingrese la altura"));
area=base*altura/2;
JOptionPane.showMessageDialog(null,"El area del triangulo es: "+area);
}
}
En el mtodo main observamos que para leer el dato para la variable base utilizamos
el mtodo showInputDialog de la clase JOptionPane que a su vez pertenece al
paquete swing, que mostrar una caja de mensaje para la lectura de datos. De
igual manera se trabajar para leer el dato de altura.
Tambin se observa el mtodo showMessageDialog de la clase JOptionPane que
permite mostrar en una caja de mensaje el resultado del clculo del rea.
20
TALLER DE PROGRAMACIN
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:
Propiedades ms usadas:
21
TALLER DE PROGRAMACIN
Un objeto de control JTextField permite dibujar en el formulario un cuadro de texto, es
decir, una caja que permite la introduccin de un dato o valor. Este objeto es utilizado para
el ingreso de datos.
Propiedades ms usadas:
Mtodos ms usados:
Propiedades ms usadas:
Evento ms usado:
22
TALLER DE PROGRAMACIN
Ahora procedamos a desarrollar la misma aplicacin usando como interface un formulario
y los objetos de control antes mencionado.
Solucin:
23
TALLER DE PROGRAMACIN
24
TALLER DE PROGRAMACIN
Sobre el diseo del formulario damos clic botn derecho y seleccionamos Set
Layout y posteriormente AbsoluteLayout.
Es necesario usar AbsoluteLayout para que permita dibujar los objetos de control
Ing. Roberto J. Macetas Rodrguez
25
TALLER DE PROGRAMACIN
en el lugar donde uno quiere en el formulario.
26
TALLER DE PROGRAMACIN
Ahora procedamos a usar a cambiar los valores de las propiedades de los objetos
de control en la ventana de propiedades:
Objeto de Control
Propiedad
Valor de la Propiedad
JLabel1
Text
BASE:
JLabel2
Text
ALTURA:
JLabel3
Text
JTextField1
Text
(Vaco o limpiar)
JTextField2
Text
(Vaco o limpiar)
JTextField3
Text
(Vaco o limpiar)
JButton1
Text
CALCULAR
JButton2
Text
LIMPIAR
JButton3
Text
CERRAR
Luego de aplicar los cambios en los valores de propiedades el diseo del formulario
debe quedar de la siguiente manera:
27
TALLER DE PROGRAMACIN
Nombre
JTextField2
txtAltura
JTextField3
txtArea
28
TALLER DE PROGRAMACIN
JButton1
btnCalcular
JButton2
btnLimpiar
JButton3
btnCerrar
Se limpian los cuadros de textos a travs del mtodo setText() y con el mtodo
29
TALLER DE PROGRAMACIN
requestFocus() se pasa el cursor al objeto de control txtArea.
30
TALLER DE PROGRAMACIN
Podemos observar que el formulario sale con los objetos de control cercano a los
bordes del formulario y el mismo formulario se visualiza pegado en la parte superior
izquierda de la pantalla del computador. Vamos a proceder a corregir estos defectos
agregando dos lneas de cdigo en el mtodo constructor de la clase
frmAreaTriangulo. (escribe lo que est en azul)
public class frmAreaTriangulo extends javax.swing.JFrame
{
/** Creates new form frmAreaTriangulo */
public frmAreaTriangulo()
{
initComponents();
setSize(400,250);
setLocation(250,250);
}
31
TALLER DE PROGRAMACIN
32
TALLER DE PROGRAMACIN
En la figura anterior se observan tres objetos JRadioButton y para poder seleccionar sola
una alternativa se tendr que usar el objeto ButtonGroup que es un elemento que no se
llega a dibujar en el formulario pero permite agrupar objetos JRadioButton y una vez
agrupados permite la seleccin de una opcin cuando la aplicacin se encuentre en
ejecucin. En las dos aplicaciones que veremos ms adelante se har hincapi en este
asunto.
Ing. Roberto J. Macetas Rodrguez
33
TALLER DE PROGRAMACIN
Propiedades ms usadas:
Mtodo ms usado:
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:
Mtodo ms usado:
Aplicacin 1
Vamos a construir una aplicacin en entorno visual que permita ingresar del costo de un
Ing. Roberto J. Macetas Rodrguez
34
TALLER DE PROGRAMACIN
artefacto, del tipo de artefacto y la forma de pago, para calcular lo siguiente:
a. Si el pago es al contado hay un descuento del 6% del costo del artefacto si el tipo
de artefacto es Audio, 8% si es Video y 5% si es Lnea Blanca.
b. Si el pago es al crdito hay un incremento del 7% sobre el costo del artefacto si es
el tipo de artefacto es Audio, 9% si es Video y 10% si es Lnea Blanca.
c. El monto del IGV es del 19% sobre el costo del artefacto luego de aplicar el
descuento o el incremento.
d. El monto a pagar que es el costo del artefacto (descontado o incrementado) ms el
monto del IGV.
Solucin:
Seleccionamos la carpeta de ejemplos, damos clic con el botn derecho del mouse
y elegimos la opcin New y posteriormente JFrameForm.
35
TALLER DE PROGRAMACIN
36
TALLER DE PROGRAMACIN
37
TALLER DE PROGRAMACIN
de
propiedades,
la
propiedad buttongroup
luego
elegimos
buttongroup1
Lo mismo hacemos para los tipos de artefactos Video y Lnea Blanca. Por lo tanto,
los tres objetos JRadioButton deben pertenecer a buttongroup1. Si pretendemos
en estos momentos ejecutar el formulario podremos seleccionar uno de los tres
tipos de artefactos.
38
TALLER DE PROGRAMACIN
39
TALLER DE PROGRAMACIN
if (rbLinea.isSelected())
dcto=costo*0.05;
}
else
{
if (rbAudio.isSelected())
incre=costo*0.07;
if (rbVideo.isSelected())
incre=costo*0.09;
if (rbLinea.isSelected())
incre=costo*0.1;
}
igv=(costo-dcto+incre)*0.19; mpagar=(costodcto+incre)+igv;
txtDcto.setText(String.valueOf(dcto));
txtIncre.setText(String.valueOf(incre));
txtIgv.setText(String.valueOf(igv));
txtMPagar.setText(String.valueOf(mpagar));
40
TALLER DE PROGRAMACIN
rbLinea.setSelected(false);
chkContado.setSelected(false);
txtCosto.requestFocus();
Se limpian los cuadros de textos con slo poner en el mtodo setText() y a los
objetos botn de radio (JRadioButton) y el objeto de caja verificacin (JCheckBox)
se les aplica el mtodo setSelected() para lograr quitar la seleccin de estos
objetos. Lo ms importante es que los cuadros de textos estn limpios para poder
permitir el ingreso de nuevos datos.
Aplicacin 2
Vamos a construir una aplicacin en entorno visual que permita calcular la bonificacin, el
descuento y el sueldo neto de un trabajador dado el ingreso del sueldo bsico, el grado de
instruccin, la condicin laboral e indicando si tiene vivienda e hijos bajo las siguientes
consideraciones:
a) Por el grado de instruccin percibe una bonificacin de 5% del sueldo bsico si el
grado es Secundaria, 12% del sueldo bsico si es Universitaria y 18% del sueldo
bsico si es maestra.
b) Por la condicin laboral percibe una bonificacin del 4% del sueldo bsico si es
contratado, 10% del sueldo bsico si es nombrado y del 5% del sueldo bsico si es
de servicios no personales.
Ing. Roberto J. Macetas Rodrguez
41
TALLER DE PROGRAMACIN
c) Si tiene vivienda no percibe ninguna bonificacin pero si no tiene vivienda percibe
una bonificacin del 3% del sueldo bsico
d) Si tiene hijos percibe una bonificacin del 6% del sueldo bsico.
e) Se le aplica 11% del sueldo bruto (sueldo bsico + bonificaciones) por el pago de la
AFP y esto constituye un descuento en sus haberes.
f) El sueldo neto es igual al sueldo bruto menos el descuento.
Solucin:
Seleccionamos la carpeta de ejemplos, damos clic con el botn derecho del mouse
y elegimos la opcin New y posteriormente JFrameForm.
42
TALLER DE PROGRAMACIN
43
TALLER DE PROGRAMACIN
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
44
TALLER DE PROGRAMACIN
debemos recordar que para asignar un nombre a un objeto de control hay que
seleccionar al objeto y dando clic al botn derecho del mouse se procede a
seleccionar la opcin Change Variable Name.
45
TALLER DE PROGRAMACIN
sn=sbruto-dcto;
txtBoni.setText(String.valueOf(boni));
txtDcto.setText(String.valueOf(dcto));
txtSN.setText(String.valueOf(sn));
46
TALLER DE PROGRAMACIN
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
47
TALLER DE PROGRAMACIN
CAPITULO II
OBJETOS DE CONTROL PARA LISTA Y CUADRICULA
DE DATOS
48
TALLER DE PROGRAMACIN
Propiedades ms usadas:
49
TALLER DE PROGRAMACIN
Mtodos ms usados:
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:
Aplicacin
Construir una aplicacin que permita el ingreso del nombre del alumno y poder
50
Ing. Roberto J. Macetas Rodrguez
TALLER DE PROGRAMACIN
seleccionar uno o varios cursos que ste quisiera llevar. El pago por los cursos
seleccionados podr ser pagado al contado o al crdito. Si el pago es al contado hay un
descuento del 5% del costo total de los cursos a llevar y si el pago es al crdito se pagar
un incremento del 7% del costo total. La aplicacin debe mostrar el descuento, el
incremento y el monto a pagar por los seleccionados.
Solucin:
51
TALLER DE PROGRAMACIN
A continuacin se muestra la ventana New JFrame Form que debe quedar as:
No olvidemos de dar clic botn derecho del mouse sobre el formulario y establecer
52
TALLER DE PROGRAMACIN
Absolute Layout en Set Layout.
53
TALLER DE PROGRAMACIN
diseo del formulario se muestra de la siguiente manera:
54
TALLER DE PROGRAMACIN
55
TALLER DE PROGRAMACIN
Luego vamos a colocar en el diseo del formulario otro objeto JScrollPane junto a
56
TALLER DE PROGRAMACIN
JList1 para luego poner un objeto JList. En esta lista colocaremos los costos de
cada curso.
57
TALLER DE PROGRAMACIN
Posteriormente agregamos las formas de pago con dos objetos JRadioButton, los
botones de comando Calcular, Limpiar y Cerrar. Finalmente, los objetos que
mostrarn el descuento, el incremento y el monto a pagar por los cursos
seleccionados. El diseo del formulario debe quedar as:
58
TALLER DE PROGRAMACIN
Ahora bien, si observamos en el diseo del formulario de las cuatros objetos JList,
dos de ellos ya tienen tems como lo son lstCursos y lstCostos. En cambio, los
objetos lstCursel y lstCos se llenarn en funcin a lo seleccionado y agregado con
el botn de comando Agregar. Por lo tanto, debemos definir un modelo (model)
para aquellas listas que se llenarn en tiempo de ejecucin. Por esto debemos
definir las variables modelo1 y modelo2 como DefaultListModel(), como se muestra
a continuacin (escribe lo que indica las flechas de color rojo):
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.
59
TALLER DE PROGRAMACIN
Se declara una variable entera llamada ndice, esta variable recibe el valor del
ndice del tem seleccionado gracias al mtodo getSelectedIndex(). Por ejemplo, si
de la caja de lista lstCursos estuviera seleccionado Power Builder, ste mtodo
devolvera el valor de 1. El valor 0 lo tiene Visual Basic, el valor de 2 lo tiene Visual
Java y as sucesivamente. Lo que se quiere es seleccionar el tem de la caja de
lista de lstCostos que tenga el mismo ndice que lstCursos, para ello se usa el
Ing. Roberto J. Macetas Rodrguez
60
TALLER DE PROGRAMACIN
mtodo setSelectedIndex(indice) para dar el mismo ndice a la caja de lista
lstCostos. Finalmente, hacemos que el botn de comando Agregar se habilite con
el mtodo setEnabled().
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.
61
TALLER DE PROGRAMACIN
llave de color rojo).
62
TALLER DE PROGRAMACIN
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.
63
TALLER DE PROGRAMACIN
64
TALLER DE PROGRAMACIN
Una vez dado clic en el botn de despliegue se muestra las opciones o tems del objeto
65
TALLER DE PROGRAMACIN
Propiedades ms usadas:
Mtodos ms usados:
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:
Aplicacin
Construir una aplicacin que permita el ingreso del nombre del alumno y poder
seleccionar de una lista desplegadle una categora de los cursos. Al momento de
seleccionar la categora se debe mostrar los cursos con sus respectivos costos en las
cajas de listas (los JList que se muestran al lado izquierdo del diseo del formulario). Una
vez visualizado los cursos el usuario puede seleccionar y agregar en las cajas de listas
(los JList que se muestran al lado derecho del diseo del formulario) los cursos solicitados
por el alumno. El pago por el servicio de enseanza se establece de la siguiente manera:
Ing. Roberto J. Macetas Rodrguez
66
TALLER DE PROGRAMACIN
Existe un pago por matrcula del 80% del costo total (suma de los costos de los
cursos escogidos) siempre y cuando quiera el alumno llevar un solo curso, 60% del
costo total si lleva dos cursos y 50% del costo total si lleva 3 o ms cursos.
Solucin:
67
TALLER DE PROGRAMACIN
68
TALLER DE PROGRAMACIN
model que permite colocar los tems dentro de la caja de lista desplegadle.
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:
69
TALLER DE PROGRAMACIN
dos
botones
de
comando
que
indiquen
Agregar
Eliminar.
70
TALLER DE PROGRAMACIN
Ahora bien, si observamos en el diseo del formulario, los cuatros objetos JList no
tienen tems. Los objetos JList referidos a Cursos Ofertados y Costo (objetos
ubicados al lado izquierdo del diseo del formulario) se llenarn de tems de
acuerdo a lo seleccionado en la lista desplegadle referido a la Categora de Cursos.
Los objetos JList referidos a Cursos Escogidos y Costos se llenarn en la medida
que se seleccione un curso ofertado y se agregue con el botn de comando
Agregar. Los 4 objetos JList deben tener un modelo (model) cada uno, para ello
debes definir 4 variables: modelo1, modelo2, modelo3 y modelo4 del tipo
DefaultListModel(). Para poder hacer uso de la clase DefaultListModel se debe
hacer uso del paquete javax.swing.*; y debe ser escrito despus del paquete
Aplicaciones.
71
TALLER DE PROGRAMACIN
72
TALLER DE PROGRAMACIN
Se declara una variable de memoria llamada indice para que almacene el ndice
Ing. Roberto J. Macetas Rodrguez
73
TALLER DE PROGRAMACIN
actual del tem seleccionado del objeto JComboBox llamado cboCategorias.
Sabiendo el valor del ndice actual o activo se hace uso de una sentencia selectiva
switch que evala cul de los tems ha sido seleccionado. Se sabe que el primer
tem de la lista desplegadle es <Seleccionar> y le corresponde el ndice 0, Diseo
Grfico el ndice 1, Diseo Web el ndice 2 y as sucesivamente. Cuando sea
<Seleccionar> solo se procede a limpiar los objetos lstCurOfer y lstCostos a
travs del mtodo clear() aplicados a las variables modelo1 y modelo2. Si el tem
seleccionado es Diseo Grfico se procede a limpiar los objetos lstCurOfer y
lstCostos y se agrega los nombres de los cursos Corel Draw y Photo Show con
sus respectivos costos a travs del uso del mtodo addElement aplicados a las
variables modelo1 y modelo2 que tienen relacin directa con los objetos
lstCurOfer y lstCostos. De igual forma se trabaja para los dems tems del objeto
JComboBox llamado cboCategorias.
74
TALLER DE PROGRAMACIN
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()
75
TALLER DE PROGRAMACIN
Aqu declaramos dos variables de tipo String llamados curso y costo y las variables
enteras total y i. En la variable curso se almacena el curso seleccionado en la lista
lstCurOfer, el mtodo getSelectionValue() trae consigo el tem seleccionado pero
lo trae como objeto y al poner (String) hacemos que se convierta en cadena de
caracteres para que pueda ser asignada a la variable curso. De igual manera
se hace con la variable costo. Para agregar un tem a una caja de lista se usa el
mtodo addElement perteneciente al objeto variable modelo3 o modelo4.
Finalmente inhabilitamos el botn de comando Agregar.
76
TALLER DE PROGRAMACIN
En esta programacin se hace uso del mtodo remove() que elimina un tem de la
lista a travs de la variable objeto modelo3 modelo4 dado el valor del ndice. Al
final de la programacin se inhabilita el botn de comando Eliminar.
77
TALLER DE PROGRAMACIN
existentes en la caja de lista lstCurEsco a travs del uso del mtodo Size()
aplicado a la variable modelo3. Tambin se declara una variable de memoria i de
tipo entero y tres variables de tipo float para el clculo de la matrcula, el costo total
y el pago mensual. A travs de una sentencia for se procede a obtener los valores
de la caja de lista lstCos usando la variable modelo4 con el mtodo elementAt(),
para que estos valores sean sumados ya acumulados en la variable de memoria
ctotal. En la primera sentencia if se procede a averiguar si las cajas de listas
lstCurEsco y LstCos tiene tems, si no tienen tems se visualiza un mensaje de
error indicando la necesidad de seleccionar y agregar cursos y se procede a
suspender la ejecucin del programa gracias a instruccin return (retornar). En los
siguientes tres if se calcula el monto de la matrcula aplicando el porcentaje indicado
en el enunciado de la aplicacin. En la siguiente sentencia if se evala si se
seleccion una forma de pago y si no se logr hacerlo muestra un mensaje de
error y suspende la ejecucin del programa. Luego con las siguientes sentencias if
se evala la forma de pago y se procede hacer los clculos respectivos. Finalmente
se los resultados en las variables de memoria de tipo float se envan a los objetos
JTextField par ser visualizados en el formulario.
78
TALLER DE PROGRAMACIN
79
TALLER DE PROGRAMACIN
80
TALLER DE PROGRAMACIN
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:
DefaultTableModel
Esta clase permite construir el modelo para el objeto JTable. Los mtodos ms utilizados
son:
Aplicacin
Construir una aplicacin que permita calcular el promedio de las notas obtenidas en el
curso de Programacin Visual. La aplicacin debe permitir el ingreso del nombre del
Ing. Roberto J. Macetas Rodrguez
81
TALLER DE PROGRAMACIN
alumno, la nota de la I Unidad, la nota de la II Unidad y la nota de la III Unidad. Adems
debe permitir la seleccin del turno a la que pertenece el alumno. A travs de un botn de
comando debe agregar los datos en un objeto Jtable, calculando el promedio de las notas;
y a travs de otro botn de comando debe eliminar la fila seleccionada en el objeto
JTable. Tambin se debe mostrar el total de filas agregadas en el objeto JTable.
Solucin:
82
TALLER DE PROGRAMACIN
seleccionar el turno.
83
TALLER DE PROGRAMACIN
muestra la siguiente ventana:
84
TALLER DE PROGRAMACIN
85
TALLER DE PROGRAMACIN
columna. Aqu debemos hacer hincapi que las columnas y las filas son tipo
Object esto quiere decir que un objeto JTable es una matriz de objetos (arreglo
bidimensional). Nosotros vamos a establecer el nmero de columnas a travs de la
programacin y las filas se crearn en la medida que se necesiten.
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
TALLER DE PROGRAMACIN
de la clase DefaultTableModel. Lo hacemos dentro de la clase frmNotas. Usar la
clase DefaultTableModel es posible gracias al import javax.swing.table.*;
87
TALLER DE PROGRAMACIN
programacin hecha en el mtodo constructor.
88
TALLER DE PROGRAMACIN
<Seleccionar> al dar el valor cero al mtodo setSelectedIndex(). Si la variable
verifica es verdadero significa que falta ingresar algn dato o seleccionar el turno.
Finalmente, se muestra la cantidad de filas agregadas en el cuadro de texto txtTotal
y haciendo uso del mtodo setRowCount() perteneciente a dtm.
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.
AUTOEVALUACION
a) Responde a las siguientes preguntas:
1. Objeto de control que permite colocar una lista de tems para que el usuario pueda
seleccionar, se denomina
2. Objeto de control que permite seleccionar una sola opcin al desplegar una lista de
alternativas, se denomina
3. Objeto de control que permite visualizar los datos a manera de cuadrcula o celdas, se
denomina
4. Mtodo que devuelve el tem seleccionado de una caja de lista, se denomina
Ing. Roberto J. Macetas Rodrguez
89
TALLER DE PROGRAMACIN
5. La clase DefaultComboBoxModel permite crear un modelo para el manejo de un objeto
de control JComboBox. (verdadero o falso):
90
TALLER DE PROGRAMACIN
CAPITULO III
OBJETOS CONTENEDORES Y MENUS
91
TALLER DE PROGRAMACIN
92
TALLER DE PROGRAMACIN
toda la jerarqua. As por ejemplo, resulta intuitivo que debiera haber un mtodo para
cambiar el color de fondo del formulario, pero l no tiene ningn mtodo para ello, lo tiene
Componet.
Propiedades ms usadas:
Title: Permite definir el ttulo del formulario, es decir, la etiqueta de la barra de ttulo.
Mtodos ms usados:
93
TALLER DE PROGRAMACIN
setIconImage(): Establece el cono que se colocar al lado izquierdo del ttulo del
formulario.
show(): Permite cargar un formulario a la maemoria para ser vista por el usuario.
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.
94
TALLER DE PROGRAMACIN
Luego dar clic en el botn de comando Finish (en caso de que la versin de
NetBeans es en castellano entonces dar clic en el botn de comando Terminar)
95
TALLER DE PROGRAMACIN
6. Los objetos de control en el diseo del formulario tienen los siguientes nombres:
96
TALLER DE PROGRAMACIN
7. Ahora bien, si observamos en el diseo del formulario, los cuatro objetos JList no
tienen tems. Los objetos JList referidos a Postulante, Buenas, Malas y Puntaje, se
llenarn de tems al momento de usar el botn de comando Agregar. Siendo cuatro
JList entonces necesitamos cuatro modelos del tipo DefaultListModel, uno para
cada JList, para lo cual debemos incluir en el cdigo de la programacin el paquete
swing con la siguiente instruccin:
Ahora
procedemos
escribir
la
definicin
de
las
variables
del
tipo
97
TALLER DE PROGRAMACIN
98
TALLER DE PROGRAMACIN
9. Procedemos
definir
cuatro
atributos
propiedades
para
la
clase
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.
99
TALLER DE PROGRAMACIN
10. Debajo de la definicin de los atributos, vamos a construir los mtodos que nos
permitan dar y obtener el valor a cada uno de los atributos. Comenzaremos por los
atributos mayor y menor definiendo los siguientes mtodos:
100
TALLER DE PROGRAMACIN
101
TALLER DE PROGRAMACIN
102
TALLER DE PROGRAMACIN
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:
103
TALLER DE PROGRAMACIN
104
TALLER DE PROGRAMACIN
La programacin se inicia con la declaracin de variables de tipo entero, real y
cadena de caracteres. En la variable cuenta se almacena la totalidad de tems
existentes en la caja de lista lstPuntaje a travs de la variable modelo4. Si la
variable cuenta es mayor o igual a 1 entonces se procede con una sentencia for a
buscar el mayor puntaje y la posicin (ndice) dentro de la caja de lista
correspondiente al mayor puntaje. Luego con el mtodo setMayor() se asigna el
valor de la variable may al atributo mayor perteneciente a la clase frmPostulante.
La misma idea se hace con el mtodo setMenor() y con las variables pmay y
pmen se almacenan los nombres de los postulantes que obtuvieron el mayor y
menor puntaje respectivamente. Luego se asignan a los atributos postMay y
postMen, a travs de los mtodos setPostMay() y setPostMen(), los valores que
se encuentra en pmay y pmen. A continuacin, se declara y se instancia la variable
form2 de tipo frmConsulta, es decir, se crea una variable form2 que tiene los
mismos atributos y mtodos del formulario frmConsulta. Posteriormente con los
mtodos getMayor(), getMenor(), getPostMay() y getPostMen() se pasan los
valores a los atributos a la variable objeto form2. Luego con el mtodo show()
hacemos que el segundo formulario se muestre.
Los atributos definidos al inicio de la clase frmConsulta nos permitir recibir los
valores o datos del primer formulario. La programacin agregada en el mtodo
constructor define el ttulo del formulario con la expresin Consulta del Mayor y
Ing. Roberto J. Macetas Rodrguez
105
TALLER DE PROGRAMACIN
Menor Puntaje, se establece el tamao del formulario frmConsulta y finalmente la
localizacin dentro de la pantalla.
106
TALLER DE PROGRAMACIN
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:
107
TALLER DE PROGRAMACIN
108
TALLER DE PROGRAMACIN
Despus de hacer esto soltamos y si hacemos clic en otro lado del rea del formulario
ntese que pareciera que el Panel no estuviera pero si esta pase el mouse por donde
coloc el Panel y ah lo ubicar, pero no se alarmen si est.
Bien para no tener estos problemas vamos a darle un borde a nuestro JPanel, En la
ventana de propiedades como se muestra en la imagen seleccionamos a la propiedad
Border.
109
TALLER DE PROGRAMACIN
Propiedad ms usada:
Mtodo ms usado:
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
110
TALLER DE PROGRAMACIN
Aplicacin
Construye una aplicacin que permita ingresar el ttulo de una pelcula, seleccionar su
categora que puede ser Comedia, accin, Dibujos animados o Drama. Adems se debe
ingresar la duracin en minutos de la pelcula y el nombre del actor principal. Una vez
ingresado los datos se procede a agregar en un objeto JTable generando una fila de datos
y mostrando en un cuadro de texto el nmero de pelculas ingresadas.
Solucin:
1. Creamos un proyecto denominado Ejercicios.
Ing. Roberto J. Macetas Rodrguez
111
TALLER DE PROGRAMACIN
112
TALLER DE PROGRAMACIN
3. A continuacin, colocaremos como nombre de formulario frmPeliculas.
Luego dar clic en el botn de comando Finish (en caso de que la versin de
NetBeans es en castellano entonces dar clic en el botn de comando Terminar)
113
TALLER DE PROGRAMACIN
6. Colocamos un objeto contenedor JPanel por debajo de la expresin PELICULA:.
114
TALLER DE PROGRAMACIN
115
TALLER DE PROGRAMACIN
8. Seleccionamos la propiedad Border y damos clic en el botn de comando
correspondiente a sta propiedad.
116
TALLER DE PROGRAMACIN
117
TALLER DE PROGRAMACIN
13. Luego de dar clic en el botn de comando OK, queda definido el Borde y el ttulo.
118
TALLER DE PROGRAMACIN
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.
119
TALLER DE PROGRAMACIN
17. Colocamos cuatro objetos de tipo JRadioButton dentro del objeto Panel,
quedando el diseo del formulario as:
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.
120
TALLER DE PROGRAMACIN
20. A continuacin colocamos un objeto JTable. Los nombres de los objetos de control
son tal como se aprecia en el siguiente diseo de formulario.
121
TALLER DE PROGRAMACIN
21. Vamos a proceder a programar. Comenzamos con hacer uso del paquete swing y
especficamente a las clases JOptionPane y a la clase JTable.
22. Luego procedemos a crear un modelo para el objeto JTable llamado Tabla a travs
de la clase DefaultTableModel. Lo hacemos dentro de la clase frmNotas. Usar la
clase DefaultTableModel es posible gracias al import javax.swing.table.*;
122
TALLER DE PROGRAMACIN
seala la llave de color rojo).
TALLER DE PROGRAMACIN
objeto seleccionado se asigna la categora al segundo elemento del arreglo datos
(datos[1]). En el tercer elemento (datos[2]) y cuarto elemento (datos[3]) del arreglo
datos se asignan la duracin y el actor principal respectivamente. Con el mtodo
addRow(), agregamos una fila en el objeto Table con los datos contenidos en el
arreglo datos. Finalmente, en la variable total se asigna la cantidad de filas de
datos que tiene el objeto JTable haciendo uso del mtodo getRowCount() de la
variable objeto dtm. Este ltimo valor conseguido es visualizado en el cuadro de
texto txtTotal a travs del mtodo setText().
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.
124
TALLER DE PROGRAMACIN
125
TALLER DE PROGRAMACIN
No nos olvidemos de ponerle al JPanel su propiedad Absolute Layout para poder utilizar
los controles libremente dentro de l.
Propiedad ms usada:
Mtodo ms usado:
126
TALLER DE PROGRAMACIN
Objeto Contenedor JDesktopPanel
Este objeto es utilizado ms para mejorar el diseo de los formularios. Es un interfaz ms
agradable para disear las aplicaciones.
btnClear
Como observamos los objetos de control se dibujan encima del objeto JDesktopPanel,
que por defecto es de un fondo de color azul.
Propiedad ms usada:
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.
127
TALLER DE PROGRAMACIN
Solucin:
1. Creamos un proyecto denominado AplicaContenedores. Luego estando en el
entorno de NetBeans, seleccionamos el paquete aplicacontenedores y dando clic
botn derecho del mouse, se muestra un men flotante, donde seleccionamos
Formulario JFrame.
Luego dar clic en el botn de comando Finish (en caso de que la versin de
NetBeans es en castellano entonces dar clic en el botn de comando Terminar)
Ing. Roberto J. Macetas Rodrguez
128
TALLER DE PROGRAMACIN
3. Se muestra el entorno de desarrollo de NetBeans y no olvidemos de dar clic en el
botn derecho del mouse sobre el formulario y establece Absolute Layout en
SetLayout.
129
TALLER DE PROGRAMACIN
5. Estando seleccionado el objeto JTabbedPanel, dar clic botn derecho del mouse,
seleccionamos la opcin Agregar desde Paleta, luego Swing y elegimos JPanel.
130
TALLER DE PROGRAMACIN
131
TALLER DE PROGRAMACIN
132
TALLER DE PROGRAMACIN
objeto
JComboBox
contendr
como
grado
de
instruccin
133
TALLER DE PROGRAMACIN
134
TALLER DE PROGRAMACIN
9. Una vez establecido el color del JPanel2, procedemos a establecer para ste
objeto JPanel2 el Absolute Layout en Set Layout.
10. El objeto JPanel2 esta referido al dato sexo, en cambio el objeto JPanel1 est
referido al Tab1. Como debemos colocar un ttulo a la pestaa Tab1 demos hacer
uso de la vista de propiedades del JPanel1. Puedes seleccionar del panel
Navegador (que se encuentra a la izquierda del diseo del formulario) y al dar clic
botn derecho del mouse se muestra un men flotante y seleccionas propiedades.
Vamos a colocar como ttulo de la pestaa Datos del alumno
135
TALLER DE PROGRAMACIN
11. Vamos a proceder a crear otro Tab. Debemos nuevamente seleccionar el objeto
JTabbedPanel, dar clic botn derecho del mouse, seleccionamos la opcin
Agregar desde Paleta, luego Swing y elegimos JPanel.
136
TALLER DE PROGRAMACIN
12. Procedemos a colocar Absolute Layout en la opcin Set Layout cuando usemos
el botn derecho del mouse sobre el Tab2.
137
TALLER DE PROGRAMACIN
mouse, en el men flotante seleccionamos propiedades.
138
TALLER DE PROGRAMACIN
Se establece otro color al objeto JDesktopPanel.
14. Una vez establecido el color para el objeto JDesktopPanel, procedemos a colocar
los objetos de control para el Tab2. Se utilizar un JComboBox para los cursos que
contendr los nombres siguientes:
15. Utilizaremos un objeto JPanel para la forma de pago (al contado o al pago de dos
cuotas), que una vez dibujado y establecido el borde y el ttulo, debemos indicar
que su Set Layout es Absolute Layout.
139
TALLER DE PROGRAMACIN
140
TALLER DE PROGRAMACIN
141
TALLER DE PROGRAMACIN
17. Vamos a proceder a programar. Comenzaremos con hacer uso del paquete swing y
especficamente a las clases JOptionPane y JTable.
18. Luego procedemos a crear un modelo para el objeto JTable llamado Tabla a travs
de la clase DefaultTableModel. Lo hacemos dentro de la clase frmNotas. Usar la
clase DefaultTableModel es posible gracias al import javax.swing.table.*;
142
TALLER DE PROGRAMACIN
de
textos y
para
los
como
tem
143
TALLER DE PROGRAMACIN
21. Luego, procedemos a programar en el botn de comando MATRICULAR que se
encuentra en el Tab2 (Curso a Matricularse).
144
TALLER DE PROGRAMACIN
quinto elemento se asigna el resultado del costo incrementado en un 10%. Con el
mtodo addRow(), agregamos una fila en el objeto JTable con los datos
contenidos en el arreglo datos. En la variable total se asigna la cantidad de filas de
datos que tiene el objeto JTable haciendo uso del mtodo getRowCount() de la
variable objeto dtm. Con la sentencia for buscamos la suma de los precios en la
variable precio. Finalmente asignamos el valor calculado en precio al cuadro de
texto txtPTotal e inicializamos los objetos de control para la posibilidad de
seleccionar otro curso.
22. Tambin
debemos
programar
en
el
objeto
cboCurso
en
el
evento
145
TALLER DE PROGRAMACIN
Declaramos las variables i, fila y total de tipo entero. La variable fila se le asigna el
valor de la posicin de la fila seleccionada en el objeto JTable llamado Tabla. Con
la sentencia IF se evala a la variable fila si es mayor o igual a cero procedemos a
remover o borrar la fila previamente seleccionada y calculamos la suma de los
precios de todos los cursos mostrndolo en el cuadro de texto txtPTotal, caso
contrario se muestra un mensaje indicando que se debe seleccionar una fila en la
Tabla.
146
TALLER DE PROGRAMACIN
Swing Menus
Aqu podemos ver el rbol de herencia de las clases relacionadas con los mens:
Como se ve en la figura, los tems de mens (incluidos los propios mens) son simples
botones. Podramos preguntarnos como un men, si es slo un botn, muestra sus tems.
Ing. Roberto J. Macetas Rodrguez
147
TALLER DE PROGRAMACIN
La respuesta es que cuando se activa un men, automticamente trae un men
desplegable que muestra sus tems.
Crear y configurar Barras de Men
Mtodos:
148
TALLER DE PROGRAMACIN
Seleccionamos Add Form Palette (en la versin en castellano debe decir Agregar desde
paleta), luego la opcin Swing y finalmente JMenuBar. La interfaz que ese est
desarrollando adopta la siguiente apariencia:
149
TALLER DE PROGRAMACIN
150
TALLER DE PROGRAMACIN
151
TALLER DE PROGRAMACIN
Si procedemos a compilar y ejecutar la aplicacin, vemos que al dar clic sobre el men
Archivos, se observar lo siguiente:
152
TALLER DE PROGRAMACIN
rbol
de
Inspector
sobre
JMenuItem_abrir;
en
el
men
flotante
desplegado
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:
153
TALLER DE PROGRAMACIN
Ahora procedamos con el diseo del men dentro del diseo del formulario. Al momento
de que lo ejecutemos debe quedar el diseo del formulario de la siguiente forma:
Ing. Roberto J. Macetas Rodrguez
154
TALLER DE PROGRAMACIN
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.
155
TALLER DE PROGRAMACIN
Solucin:
1. Creamos un proyecto denominado ObjetosMenus. Luego, seleccionamos el
paquete objetosmenus y dando clic botn derecho del mouse en la opcin New
(Nuevo) seleccionamos Formulario JFrame.
Indicamos como nombre del formulario frmMenu y luego damos clic en Terminar o
Finish.
156
TALLER DE PROGRAMACIN
3. Se crear una barra de Men con una primera opcin del tipo Jmenu. Procedemos a
renombrarlo con JMenuTarea2 y cambiarle el texto como Tarea 2 y
posteriormente creamos un JMenuItem.
157
TALLER DE PROGRAMACIN
6. Volviendo al entorno debemos crear 4 objetos del tipo JFrame, uno para cada
opcin o aplicacin de la Tarea 2.
158
TALLER DE PROGRAMACIN
159
TALLER DE PROGRAMACIN
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.
160
TALLER DE PROGRAMACIN
Mtodos:
161
TALLER DE PROGRAMACIN
JCheckBox y JCheckBoxMenuItem descienden de AbstractButton, los checkboxes de
Swing tienen todas las caractersticas de un botn normal
Ahora vamos a construir un tercer men algo ms complejo. La aplicacin una vez
terminado deber tener las siguientes formas:
162
TALLER DE PROGRAMACIN
163
TALLER DE PROGRAMACIN
164
TALLER DE PROGRAMACIN
Para lograr esto es necesario adicionar dentro de los JMenu ms JMenus. Slo los
ltimos para adicionar en cada rama del rbol del panel Inspector sern los JMenuItem.
Repetir el paso Anterior para que la aplicacin una vez ejecutada adopte la siguiente
forma:
165
TALLER DE PROGRAMACIN
Aplicacin 1
Vamos a construir una aplicacin que permita disear una barra de men, siendo la
opcin principal (construido a partir de un objeto JMenu) llamada Objetos de Control. A
partir de sta opcin creas items usando JMenuItems para las opciones: Tarea 2,
Tarea3, Tarea4, Tarea 5 y Tarea 6. Para la opcin Tarea 2 defines cuatro tems que
indiquen: Ventas de Camisas, Ventas de Computadoras, Conversiones y Clculo.
La tarea 2 contiene la formulacin de cuatro aplicaciones. Una vez diseado el men
debemos proceder a programar para que sean invocados o ejecutados desde la opcin
(tem) del men.
Solucin:
1. Creamos un proyecto denominado MenusObjetos. Luego, seleccionamos el
paquete menusobjetos y dando clic botn derecho del mouse en la opcin New
(Nuevo) seleccionamos Formulario JFrame.
Ing. Roberto J. Macetas Rodrguez
166
TALLER DE PROGRAMACIN
Indicamos como nombre del formulario frmMenu y luego damos clic en Terminar o
Finish.
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.
167
TALLER DE PROGRAMACIN
168
TALLER DE PROGRAMACIN
5. Si procedemos a ejecutar el formulario frmMenu debe tener la siguiente apariencia:
6. Volviendo al entorno de NetBeans debemos crear los 4 items del tipo JMenuItem
dentro de la opcin JMenuTarea2. En el panel Inspector debe quedar de la siguiente
manera:
169
TALLER DE PROGRAMACIN
siguiente apariencia:
170
TALLER DE PROGRAMACIN
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.
171
TALLER DE PROGRAMACIN
2. Aparece la ventana para definir el nombre del archivo de extensin java. Vamos a
denominarlo PruebaMenu.
172
TALLER DE PROGRAMACIN
173
TALLER DE PROGRAMACIN
JMenu menuFormato = new JMenu( "Formato" );
menuFormato.setMnemonic( 'F' );
// crear submen Color
String colores[] = { "Negro", "Azul", "Rojo", "Verde" };
JMenu menuColor = new JMenu( "Color" );
menuColor.setMnemonic( 'C' );
elementosColor = new JRadioButtonMenuItem[ colores.length ];
grupoColores = new ButtonGroup();
ManejadorEventos manejadorEventos = new ManejadorEventos();
// crear elementos de men tipo botones de opcin para el men Color
for ( int cuenta = 0; cuenta < colores.length; cuenta++ ) {
elementosColor[ cuenta ] = new JRadioButtonMenuItem( colores[ cuenta ] );
menuColor.add( elementosColor[ cuenta ] );
grupoColores.add( elementosColor[ cuenta ] );
elementosColor[ cuenta ].addActionListener( manejadorEventos );
}
// seleccionar primer elemento del men Color
elementosColor[ 0 ].setSelected( true );
// agregar el men Formato a la barra de mens
menuFormato.add( menuColor );
menuFormato.addSeparator();
// crear submen Tipo de letra
String nombresTiposLetra[] = { "Serif", "Monospaced", "SansSerif" };
JMenu menuTiposLetra = new JMenu( "Tipo de letra" );
menuTiposLetra.setMnemonic( 'T' );
tiposLetra = new JRadioButtonMenuItem[ nombresTiposLetra.length ];
grupoTiposLetra = new ButtonGroup();
// crear elementos de men tipo botones de opcin para el men Tipos de letra
for ( int cuenta = 0; cuenta < tiposLetra.length; cuenta++ ) {
tiposLetra[ cuenta ] = new JRadioButtonMenuItem( nombresTiposLetra[ cuenta ] );
menuTiposLetra.add( tiposLetra[ cuenta ] );
grupoTiposLetra.add( tiposLetra[ cuenta ] );
tiposLetra[ cuenta ].addActionListener( manejadorEventos );
}
// seleccionar el primer elemento del men Tipo de letra
tiposLetra[ 0 ].setSelected( true );
menuTiposLetra.addSeparator();
// establecer elementos del men Estilo
String nombresEstilo[] = { "Negrita", "Cursiva" };
elementosEstilo = new JCheckBoxMenuItem[ nombresEstilo.length ];
ManejadorEstilo manejadorEstilo = new ManejadorEstilo();
// crear elementos de men tipo casilla de verificacin para el men Estilo
for ( int cuenta = 0; cuenta < nombresEstilo.length; cuenta++ ) {
elementosEstilo[ cuenta ] =
new JCheckBoxMenuItem( nombresEstilo[ cuenta ] );
menuTiposLetra.add( elementosEstilo[ cuenta ] );
elementosEstilo[ cuenta ].addItemListener( manejadorEstilo );
}
// colocar men Tipo de letra en el men Formato
menuFormato.add( menuTiposLetra );
// agregar men Formato a la barra de mens
barra.add( menuFormato );
// establecer etiqueta para mostrar texto
pantallaEtiqueta = new JLabel( "Programacin Visual", SwingConstants.CENTER );
pantallaEtiqueta.setForeground( valoresColor[ 0 ] );
174
TALLER DE PROGRAMACIN
pantallaEtiqueta.setFont( new Font( "Serif", Font.PLAIN, 72 ) );
getContentPane().setBackground( Color.CYAN );
getContentPane().add( pantallaEtiqueta, BorderLayout.CENTER );
setSize( 850, 200 );
setVisible( true );
}
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
PruebaMenu aplicacion = new PruebaMenu();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
// clase interna para manejar eventos de accin de los elementos de men
private class ManejadorEventos implements ActionListener {
// procesar selecciones de color y tipo de letra
public void actionPerformed( ActionEvent evento )
{
// procesar seleccin de color
for ( int cuenta = 0; cuenta < elementosColor.length; cuenta++ )
if ( elementosColor[ cuenta ].isSelected() ) {
pantallaEtiqueta.setForeground( valoresColor[ cuenta ] );
break;
}
// procesar seleccin de tipo de letra
for ( int cuenta = 0; cuenta < tiposLetra.length; cuenta++ )
if ( evento.getSource() == tiposLetra[ cuenta ] ) {
pantallaEtiqueta.setFont(new Font( tiposLetra[ cuenta ].getText(), estilo, 72 ) );
break;
}
repaint();
} // fin del mtodo actionPerformed
} // fin de la clase ManejadorEventos
// clase interna para manejar eventos de los elementos de men tipo casilla de verificacin
private class ManejadorEstilo implements ItemListener {
// procesar selecciones de estilo de tipo de letra
public void itemStateChanged( ItemEvent e )
{
estilo = 0;
// checar seleccin de negrita
if ( elementosEstilo[ 0 ].isSelected() )
estilo += Font.BOLD;
// checar seleccin de cursiva
if ( elementosEstilo[ 1 ].isSelected() )
estilo += Font.ITALIC;
pantallaEtiqueta.setFont(
new Font( pantallaEtiqueta.getFont().getName(), estilo, 72 ) );
}
repaint();
175
TALLER DE PROGRAMACIN
6. Ejecutamos el archivo PruebaMenu.java.
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)
176
TALLER DE PROGRAMACIN
177
TALLER DE PROGRAMACIN
CAPITULO IV
SISTEMAS DE APLICACION
178
TALLER DE PROGRAMACIN
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.
179
TALLER DE PROGRAMACIN
Un banco ofrece los productos de ahorros en soles, ahorros en dlares, CTS en soles y
CTS en dlares. Un cliente puede slo tener una cuenta de cualquier producto antes
mencionado. Observemos el siguiente diseo:
Para aperturar una cuenta debemos ingresar los apellidos y los nombres del cliente, luego
al dar clic en un botn de comando Buscar procedemos a la bsqueda de los datos en la
estructura de datos o arreglo. Si no se encuentra los datos procedemos a ingresar la
direccin y el nmero de documento de identidad y si existe los datos del cliente, entonces
se muestra el nmero de documento de identidad y el nmero de tarjeta. El nmero
de tarjeta se inicia con los dgitos 5788 seguido del nmero del documento de identidad.
Cabe sealar si los datos del cliente ya existen se debe inhabilitar el uso de los objetos
JRadioButton respecto a las cuentas que ya tiene el cliente. Si es un nuevo cliente se
habilitarn todos los objetos referidos a los tipos de cuentas. Una vez indicado los
datos procedemos a grabar los datos, lo cual implica insertar los datos en el objeto Table
como tambin en la estructura de datos o arreglo. El objeto Table se encuentra en la
segunda pestaa Cuentas Aperturadas del objeto JTabbedPanel.
Ing. Roberto J. Macetas Rodrguez
180
TALLER DE PROGRAMACIN
181
TALLER DE PROGRAMACIN
182
TALLER DE PROGRAMACIN
Para las operaciones o transacciones bancarias se inicia con ingresar el nmero de tarjeta
(recordemos que el nmero de tarjeta se inicia con 5788, seguido del nmero de
documento de identidad). Luego al dar clic en el botn de comando Buscar hacemos la
bsqueda de la cuenta en el arreglo o estructura de datos. Si encuentra el nmero de
tarjeta procedemos a visualizar los apellidos y nombres del cliente y se habilitan a los
objetos JRadioButton de las cuentas que tiene el cliente. Si no se encuentra el nmero de
tarjeta procedemos a mostrar un mensaje de error. A continuacin se selecciona una
cuenta y el tipo de operacin (Retiro o Depsito) e ingresamos el monto de la operacin.
Al dar clic en el botn de comando Procesar grabaremos o insertamos los datos en el
objeto Table (objeto que se muestra en la segunda pestaa) y en la estructura de datos o
arreglo. Cabe sealar que el uso de los arreglos es para salvar los datos ya que al cerrar
la ventana los datos contenidos en el objeto JTable se pierden y cuando se vuelve a
mostrar nuevamente la ventana los datos contenidos en los arreglos se llenan en el objeto
JTable.
Tanto la ventana o formulario de Apertura de Cuentas como la ventana o formulario de
Operaciones Bancarias sern invocados o ejecutados desde las opciones de un men,
cuyo diseo es el siguiente:
183
TALLER DE PROGRAMACIN
Solucin:
1. Creamos un proyecto denominado Caso_banco. Luego estando en el entorno de
NetBeans, seleccionamos el paquete caso_banco y dando clic botn derecho del
mouse, se muestra un men flotante, donde seleccionamos Formulario JFrame.
Luego dar clic en el botn de comando Finish (en caso de que la versin de
Ing. Roberto J. Macetas Rodrguez
184
TALLER DE PROGRAMACIN
NetBeans es en castellano entonces dar clic en el botn de comando Terminar)
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.
185
TALLER DE PROGRAMACIN
5. Procedemos a agregar dos objetos del tipo JMenuItem. Estas opciones del men
indicarn: Apertura de Cuentas y Operaciones Bancarias. El panel de Inspector
debe quedar as:
186
TALLER DE PROGRAMACIN
Luego dar clic en el botn de comando Finish (en caso de que la versin de
NetBeans es en castellano entonces dar clic en el botn de comando Terminar)
187
TALLER DE PROGRAMACIN
11. Procedemos a colocar Absolute Layout en la opcin Set Layout cuando usemos
el botn derecho del mouse sobre el Tab1.
188
TALLER DE PROGRAMACIN
189
TALLER DE PROGRAMACIN
13. Continuamos con el diseo del formulario. Debemos crear un segundo objeto
JPanel dentro del Tab1 y establecer Absolute Layout en SetLayout.
190
TALLER DE PROGRAMACIN
191
TALLER DE PROGRAMACIN
16. El diseo del formulario para la segunda pestaa debe quedar as:
192
TALLER DE PROGRAMACIN
Luego dar clic en el botn de comando Finish (en caso de que la versin de
NetBeans es en castellano entonces dar clic en el botn de comando Terminar)
193
TALLER DE PROGRAMACIN
Creamos la primera pestaa con la expresin Operaciones Bancarias y
procedemos a colocar Absolute Layout en la opcin Set Layout cuando usemos
el botn derecho del mouse sobre el Tab1.
194
TALLER DE PROGRAMACIN
22. Continuamos con el diseo del formulario. Debemos crear un segundo objeto
JPanel dentro del Tab1 y establecer Absolute Layout en SetLayout.
195
TALLER DE PROGRAMACIN
24. Vamos a disear la segunda pestaa. Procedemos a colocar Absolute Layout en
la opcin Set Layout cuando usemos el botn derecho del mouse sobre el Tab2.
25. El diseo del formulario para la segunda pestaa debe quedar as:
196
TALLER DE PROGRAMACIN
26. Procedamos a programar en cada uno de los formularios.
CODIGO DEL FORMULARIO frmMenu
public class frmMenu extends javax.swing.JFrame {
//creacin de atributos de tipo arreglo y entero
public static String valores[][]=new String [100][5];
public static String movimientos[][]=new String [100][6];
public static int registros=-1;
public static int filas=-1;
//mtodo para asignar datos al arreglo valores
public void setValores(int f,String d1, String d2, String d3, String d4, String d5)
{
valores[f][0]=d1;
valores[f][1]=d2;
valores[f][2]=d3;
valores[f][3]=d4;
valores[f][4]=d5;
}
//mtodo para obtener un dato dado el valor de los ndices del elemento del arreglo
public String getValores(int f, int c)
{
return valores[f][c];
}
//mtodo que actualiza el saldo de la cuenta
public void setActualizaSaldo(int f, String s)
{
valores[f][4]=s;
}
//mtodo que actualiza el valor de filas que controla al arreglo valores
public void setFilas(int f)
{
filas=f;
}
//mtodo que perimte obtener el valor del atributo filas
public int getFilas()
{
return filas;
}
//mtodo para asignar datos al arreglo movimeintos
public void setMovimientos(int f,String d1, String d2, String d3, String d4, String d5, String d6)
{
movimientos[f][0]=d1;
movimientos[f][1]=d2;
movimientos[f][2]=d3;
movimientos[f][3]=d4;
movimientos[f][4]=d5;
movimientos[f][5]=d6;
}
//mtodo para obtener un dato dado el valor de los ndices de un elemento
public String getMovimientos(int f, int c)
{
return movimientos[f][c];
}
//mtodo que actualiza el valor de registros que controla el arreglo movimientos.
public void setRegistros(int f)
{
registros=f;
}
//mtodo para obtener el valor del atributo registros
public int getRegistros()
{
return registros;
197
TALLER DE PROGRAMACIN
}
//mtodo constructor
public frmMenu() {
initComponents();
this.setSize(800,700);
}
private void jMenuItemOperacionesActionPerformed(java.awt.event.ActionEvent evt) {
new frmOperaciones().setVisible(true);
}
private void jMenuItemAperturaCuentasActionPerformed(java.awt.event.ActionEvent evt) {
new frmApertura().setVisible(true);
}
198
TALLER DE PROGRAMACIN
public void usoObjetosTexto(boolean accion)
{
txtDir.setEnabled(accion);
txtDoc.setEnabled(accion);
}
public void usoObjetosRadio(boolean accion)
{
rbAhorroSoles.setEnabled(accion);
rbAhorroDolares.setEnabled(accion);
rbCTSsoles.setEnabled(accion);
rbCTSdolares.setEnabled(accion);
}
private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {
this.limpiarObjetos();
this.usoObjetosTexto(false);
this.usoObjetosRadio(false);
btnGrabar.setEnabled(false);
txtApe.requestFocus();
}
private void btnGrabarActionPerformed(java.awt.event.ActionEvent evt) {
String datos[]=new String[5];
int filas;
boolean verifica;
if (txtApe.getText().length()==0)
{
JOptionPane.showMessageDialog(null,"Ingresa el Apellido del Cliente");
return;
}
if (txtNom.getText().length()==0)
{
JOptionPane.showMessageDialog(null,"Ingresa el Nombre del Cliente");
return;
}
if (txtDoc.getText().length()==0)
{
JOptionPane.showMessageDialog(null,"Ingresa el Nmero del Documento de Identidad del Cliente");
return;
}
verifica=rbAhorroSoles.isSelected() || rbAhorroDolares.isSelected() || rbCTSsoles.isSelected() ||
rbCTSdolares.isSelected();
if (!verifica)
{
JOptionPane.showMessageDialog(null,"Selecciona un tipo de Cuenta");
return;
}
if (txtSaldoInicial.getText().length()==0)
{
JOptionPane.showMessageDialog(null,"Ingresa un Saldo Inicial");
return;
}
datos[0]="5788"+txtDoc.getText();
datos[1]=txtApe.getText();
datos[2]=txtNom.getText();
datos[4]=txtSaldoInicial.getText();
if (rbAhorroSoles.isSelected())
{
datos[3]="Ahorro en Soles";
}
if (rbAhorroDolares.isSelected())
{
datos[3]="Ahorro en Dlares";
}
if (rbCTSsoles.isSelected())
{
datos[3]="CTS en Soles";
}
if (rbCTSdolares.isSelected())
{
datos[3]="CTS en Dlares";
199
TALLER DE PROGRAMACIN
}
dtm.addRow(datos);
filas=dtm.getRowCount();
fmenu.setValores(filas-1,datos[0],datos[1],datos[2],datos[3],datos[4]);
fmenu.setFilas(filas-1);
this.limpiarObjetos();
this.usoObjetosTexto(false);
btnGrabar.setEnabled(false);
this.usoObjetosRadio(false);
}
if (!encuentra)
{
this.usoObjetosTexto(true);
txtDir.setText("");
txtDoc.setText("");
txtDir.requestFocus();
}
btnGrabar.setEnabled(true);
200
TALLER DE PROGRAMACIN
//mtodo constructor
public frmOperaciones() {
initComponents();
String titulos[]={"Tarjeta","Apellidos","Nombres","Tipo Cuenta","Tipo Operacin","Monto"};
dtm.setColumnIdentifiers(titulos);
TablaOperaciones.setModel(dtm);
btnProcesar.setEnabled(false);
this.llenarTabla();
this.setLocation(120,120);
}
//mtodo para llenar de filas a la TablaOperaciones
public void llenarTabla()
{
int f, i;
f=fmenu.getRegistros();
String datos[]=new String[6];
if (f>=0)
{
for (i=0;i<=f;i++)
{
datos[0]=fmenu.getMovimientos(i,0);
datos[1]=fmenu.getMovimientos(i,1);
datos[2]=fmenu.getMovimientos(i,2);
datos[3]=fmenu.getMovimientos(i,3);
datos[4]=fmenu.getMovimientos(i,4);
datos[5]=fmenu.getMovimientos(i,5);
dtm.addRow(datos);
}
}
201
TALLER DE PROGRAMACIN
if (!verifica)
{
JOptionPane.showMessageDialog(null,"Selecciona un tipo de Operacin");
return;
}
if (txtMonto.getText().length()==0)
{
JOptionPane.showMessageDialog(null,"Ingresa el Monto de la Operacin");
return;
}
datos[0]=txtNroTar.getText();
datos[1]=txtApe.getText();
datos[2]=txtNom.getText();
if (rbAhorroSoles.isSelected())
{
datos[3]="Ahorro en Soles";
}
if (rbAhorroDolares.isSelected())
{
datos[3]="Ahorro en Dlares";
}
if (rbCTSsoles.isSelected())
{
datos[3]="CTS en Soles";
}
if (rbCTSdolares.isSelected())
{
datos[3]="CTS en Dlares";
}
if (rbRetiro.isSelected())
{
datos[4]="Retiro";
}
if (rbDeposito.isSelected())
{
datos[4]="Depsito";
}
datos[5]=txtMonto.getText();
//Bsqueda del Saldo de la cuenta
filas=fmenu.getFilas();
for (i=0;i<=filas;i++)
{
if (fmenu.getValores(i,0).equals(datos[0]) && fmenu.getValores(i,3).equals(datos[3]))
{
saldo=Double.parseDouble(fmenu.getValores(i,4));
posicion=i;
}
}
//en caso de ser retiro verificar suficiente saldo de la cuenta
if (rbRetiro.isSelected())
{
if (Double.parseDouble(datos[5])>saldo)
{
JOptionPane.showMessageDialog(null,"El Monto de retiro supera al saldo Actual");
return;
}
saldo=saldo-Double.parseDouble(datos[5]);
}
//en caso de ser deposito sumar en saldo
if (rbDeposito.isSelected())
{
saldo=saldo+Double.parseDouble(datos[5]);
}
//actualizamos el saldo de la cuenta
fmenu.setActualizaSaldo(posicion,String.valueOf(saldo));
//agregamos una fila en la Tabla que se encuentra en la segunda pestaa
dtm.addRow(datos);
//obtenemos el nmero de filas encontradas en la Tabla y luego grabamos en el arreglo matriz
Movimientos
reg=dtm.getRowCount();
fmenu.setMovimientos(reg-1,datos[0],datos[1],datos[2],datos[3],datos[4],datos[5]);
//actualizamos el nmero de registros
fmenu.setRegistros(reg-1);
202
TALLER DE PROGRAMACIN
this.limpiarObjetos();
this.usoObjetosRadio(true);
btnProcesar.setEnabled(false);
txtNroTar.requestFocus();
}
else
{
JOptionPane.showMessageDialog(null,"No existe Tarjeta alguna para realizar una Operacin");
}
203
TALLER DE PROGRAMACIN
204
TALLER DE PROGRAMACIN
tipo de cuenta Ahorro en Soles. Por ejemplo si no ingresamos el saldo inicial y
damos clic en el botn de comando Grabar mostrar un mensaje de error.
Una vez ingresado el saldo inicial y al dar clic en el botn de comando Grabar se
graba en el objeto JTable denominado TablaCuentas. Se limpia los objetos de
control y se inhabilita el botn de comando Grabar.
205
TALLER DE PROGRAMACIN
206
TALLER DE PROGRAMACIN
Una vez seleccionado la cuenta de Ahorros en soles, elegimos el tipo de operacin
de Depsito. Ingresamos el monto de la operacin.
207
TALLER DE PROGRAMACIN
Apertura de Cuentas y nos dirigimos a la segunda pestaa y observamos que el
saldo actual ha aumentando en 300 soles quedando en 800 soles.
208
TALLER DE PROGRAMACIN
es un componente que sirve para presentar dilogos que son ventanas auxiliares
209
TALLER DE PROGRAMACIN
nuestra aplicacin. Si instanciamos un JDialog, no aparece nada.
Un JFrame debe ser la ventana principal de nuestra aplicacin y slo debe haber
una.
210
TALLER DE PROGRAMACIN
hasta que haya introducido el dato. Sin embargo, tiene un peligro.
Supongamos un JDialog que lo hacemos modal para pedir unos datos al usuario. Este
JDialog tiene un botn de "Aceptar" para que el usuario lo pulse cuando haya terminado
de introducir los datos. Supongamos que en el cdigo de ese botn "Aceptar"
comprobamos los datos que ha metido el usuario y vemos que son incorrectos. Le
sacamos un segundo JDialog modal para indicarle el error y no cerramos el primero.
Quin debe ser el padre de ese segundo JDialog modal?. Si hacemos que el padre sea
el JFrame tendremos dos JDialog modales hijos del JFrame, es decir, dos JDialog
modales hermanos. Esto nos dar problemas, como que ambas ventanas queden
deshabilitadas, que al cerrar una de ellas se nos oculten todas, que parte de la ventana
quede deshabilitada mientras que otra parte no, etc.
Entonces, cmo hacemos?. Para que java no haga cosas raras, el padre del segundo
JDialog modal debe ser el primer JDialog modal. De esta forma, el segundo tiene
"prioridad" sobre el primero. Todo queda deshabilitado excepto este segundo JDialog.
Cuando lo cerremos, ser el primero el que mande. Si queremos varias ventanas modales
simultneamente en pantalla, cada ventana que se muestre debe ser padre de la siguiente,
de forma que la cadena de ventanas modales sean padre, hijo, nieto, etc. Tener dos
ventanas modales simultneas que sean hermanas o primas o cualquier otra relacin que
no sea directa, nos dar problemas
Aplicacin 1
Vamos a proceder a crear un formulario donde se har uso del objeto JDialog para
mostrar un mensaje dentro de un objeto de control JtextArea.
Solucin:
1. Procedemos a crear un proyecto denominado SwingWindows.
211
TALLER DE PROGRAMACIN
Luego dar clic en el botn de comando Finish (en caso de que la versin de
NetBeans es en castellano entonces dar clic en el botn de comando Terminar)
212
TALLER DE PROGRAMACIN
4. Procedemos a programar
package swingwindows;
import javax.swing.*;
import java.awt.*;
public class frmUsoJDialog extends javax.swing.JFrame {
/** Creates new form frmUsoJDialog */
public frmUsoJDialog() {
initComponents();
// creamos una variable del tipo JDialog
JDialog dialog;
// creamos una variable de tipo JFrame
JFrame credi;
credi=new JFrame();
dialog = new JDialog(credi, "", true);
dialog.setTitle("Creditos");
JTextArea texto = new JTextArea("Este Programa fue Diseado por :\n" + "Martn Salcedo Quiones\n"
+ "Como Trabajo del curso de Programacin Visual\n" +"Contiene jFrame y JDialog\n");
Container contentPane = dialog.getContentPane();
contentPane.add(texto, BorderLayout.CENTER);
dialog.setSize(new Dimension(300, 150));
dialog.show();
}
Podemos notar la parte del String est vaca, esto se debe a que en el programa
vamos a cambiarle el ttulo al JDialog, a medida que necesitemos presentar uno
nuevo, esto con el fin de crear un solo JDialog para las diferentes ventanas.
Ing. Roberto J. Macetas Rodrguez
213
TALLER DE PROGRAMACIN
Tambin vemos que en boolean esta true esto es para especificar que es un
dilogo modal en caso que no lo pondramos false.
Por ltimo se dice el tamao del JDialog y la ltima lnea es para que sea
mostrado.
214
TALLER DE PROGRAMACIN
Objeto JFileChooser
En Java tenemos varias formas para leer y escribir ficheros de textos, binarios, de formato
xml, etc. La clase JFileChooser permite mostrar una ventana para que el usuario navegue
por los directorios y elija un archivo.
Para pedir un archivo para abrirlo y leerlo basta hacer dos lneas de programacin:
JFileChooser fileChooser = new JfileChooser();
int seleccion = fileChooser.showOpenDialog(areatexto);
Este cdigo abre una ventana para navegar en directorios y elegir un fichero.
215
TALLER DE PROGRAMACIN
Si seleccin vale JFileChooser.APPROVE_OPTION es que el usuario ha pulsado Abrir,
as que pedimos el fichero seleccionado con getSelectedFile().
JFileChooser abre una ventana que se mostrar junto a la ventana de nuestro editor. Nos
gustara que esta ventana de seleccin de fichero no se vaya detrs y quede oculta por la
ventana del editor. La ventana de elegir fichero debera estar siempre delante y visible
sobre el editor. La forma de conseguir esto es que JFileChooser sepa cual es esta
ventana delante de la cual debe estar siempre. Para saber cul es esa ventana, basta con
pasarle en el parmetro cualquier componente de dicha ventana. En nuestro ejemplo
hemos decidido pasarle el JTextArea de nuestro editor, pero podamos pasarle
perfectamente el JMenuBar o el JFrame principal.
Para elegir un fichero para salvar, el cdigo es exactamente igual, pero cambia el mtodo
para visualizar el dilogo.
JFileChooser fileChooser = new JFileChooser();
int seleccion = fileChooser.showSaveDialog(areatexto);
Aplicacin 2
Vamos a proceder a crear una aplicacin donde usaremos el JFrame,JDialog, JTextArea,
y JFileChooser para hacer lectura de un archivo texto seleccionado y abierto desde un
JFileChooser.
Solucin:
1. Procedemos a crear un proyecto denominado PruebaJFileChooser.
Luego dar clic en el botn de comando Finish (en caso de que la versin de
NetBeans es en castellano entonces dar clic en el botn de comando Terminar)
2. Todo proyecto creado crea por defecto un archivo main de extensin java. Haremos
uso de este archivo para lo cual colocaremos el siguiente cdigo.
package pruebajfilechooser;
import javax.swing.*;
import java.io.*;
import java.awt.*;
216
TALLER DE PROGRAMACIN
/**
*
* @author Usuario
*/
public class Main {
/** Creates a new instance of Main */
public Main() {
}
/**
* @param args the command line arguments
*/
public static void main(String[] args)throws IOException {
JTextArea area= new JTextArea();
JDialog dialog;
JFrame formulario = new JFrame();
dialog = new JDialog(formulario, "", true);
dialog.setTitle("Mostrar Archivo");
//se instancia la variable fileChooser del tipo JFileChooser
JFileChooser fileChooser = new JFileChooser();
//con el mtodo showOpenDialog() se muestra la ventana para seleccionar el archivo
int seleccion = fileChooser.showOpenDialog(area);
//si el usuario selecciona el botn de comando Abrir, el if se hace verdadero
if (seleccion==JFileChooser.APPROVE_OPTION)
{
//la variable fichero contiene el archivo texto seleccionado con el mtodo getSelectedFile()
File fichero = fileChooser.getSelectedFile();
//la variable reader permite leer linea por linea el archivo a travs del mtodo readLine()
BufferedReader reader = new BufferedReader(new FileReader(fichero));
String linea = reader.readLine();
//con while se lee lnea por lnea y se pasa a la variable area que es un JTextArea
while (linea != null)
{
area.append(linea);
area.append(System.getProperty("line.separator"));
linea = reader.readLine();
}
//se cierra el fichero
reader.close();
//se muestra visualmente el contenido de la variable area dentro de un JDialog
Container contentPane = dialog.getContentPane();
contentPane.add(area, BorderLayout.CENTER);
dialog.setSize(new Dimension(500, 600));
dialog.show();
}
}
}
217
TALLER DE PROGRAMACIN
4. Observamos la ventana generada por el objeto JFileChooser.
218
TALLER DE PROGRAMACIN
219
TALLER DE PROGRAMACIN
En ste formulario vamos a consultar por apellidos, que una vez ingresado los apellidos
del cliente y al dar clic en el botn de comando Buscar se mostrar los nombres del
cliente, el nmero de documento de documento de identidad, el nmero de tarjeta y se
habilitar los objetos JRadioButton de aquellas cuentas que el cliente posee. En caso no
existiera los apellidos del cliente se mostrar un mensaje de que el cliente no existe.
Podremos seleccionar una de las cuentas que tiene el cliente y al dar clic en el botn de
comando Saldo Actual se mostrar en el cuadro de texto el monto actual de la cuenta.
Crearemos una segunda pestaa para hacer lo mismo pero la bsqueda ser por el
nmero de tarjeta, siendo el diseo el siguiente:
220
TALLER DE PROGRAMACIN
Para el segundo formulario se har la consulta de los movimientos de una cuenta, para lo
cual se usar el siguiente diseo:
221
TALLER DE PROGRAMACIN
Solucin:
1. Seleccionamos el paquete caso_banco del proyecto Caso_Banco y dando clic
botn derecho del mouse, se muestra un men flotante, donde seleccionamos
Formulario JFrame.
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)
222
TALLER DE PROGRAMACIN
3. Se muestra el entorno de desarrollo de NetBeans y no olvidemos de dar clic en el
botn derecho del mouse sobre el formulario y establecemos Absolute Layout en
SetLayout.
223
TALLER DE PROGRAMACIN
//
224
TALLER DE PROGRAMACIN
225
TALLER DE PROGRAMACIN
9. Vamos a disear la segunda pestaa. Procedemos a colocar Absolute Layout en
la opcin Set Layout cuando usemos el botn derecho del mouse sobre el Tab2.
La expresin de la segunda pestaa es Consulta por Tarjeta.
226
TALLER DE PROGRAMACIN
11. Procedamos a colocar nombres a los objetos de control de la segunda pestaa.
227
TALLER DE PROGRAMACIN
Luego dar clic en el botn de comando Finish (en caso de que la versin de
NetBeans es en castellano entonces dar clic en el botn de comando Terminar)
15. Iniciamos el diseo del formulario colocando los objetos de control y usaremos un
objeto JPanel donde se colocarn los objetos JRadioButton para las cuentas del
Ing. Roberto J. Macetas Rodrguez
228
TALLER DE PROGRAMACIN
cliente. Al objeto JPanel debemos establecer Absolute Layout en SetLayout.
16. Continuamos el diseo del formulario agregando un objeto JTable para visualizar
en tiempo de ejecucin las operaciones bancarias. Agregamos tres objetos
JTextField para mostrar el total de depsitos, el total de retiros y el saldo actual de
la cuenta seleccionada dentro del objeto JPanel. Procedamos a colocar nombres a
los objetos de control.
229
TALLER DE PROGRAMACIN
17. Procedemos a programar en cada uno de los formularios.
CODIGO DEL FORMULARIO frmConsultaClientes
public class frmConsultaClientes extends javax.swing.JFrame {
frmMenu fmenu=new frmMenu();
/** Creates new form frmConsultaClientes */
public frmConsultaClientes() {
initComponents();
this.setLocation(120,120);
}
public void usoObjetosRadio(boolean accion)
{
rbAhorroSoles.setEnabled(accion);
rbAhorroDolares.setEnabled(accion);
rbCTSsoles.setEnabled(accion);
rbCTSdolares.setEnabled(accion);
}
public void usoObjRadio(boolean accion)
{
rbASoles.setEnabled(accion);
rbADolares.setEnabled(accion);
rbCTSs.setEnabled(accion);
rbCTSd.setEnabled(accion);
}
private void btnSaldoActualActionPerformed(java.awt.event.ActionEvent evt) {
String saldo="", cuenta="";
int fila,i;
fila=fmenu.getFilas();
//en la variable cuenta asignamos el tipo de cuenta seleccionada
if (rbASoles.isSelected())
{
cuenta="Ahorro en Soles";
}
if (rbADolares.isSelected())
{
cuenta="Ahorro en Dlares";
}
if (rbCTSs.isSelected())
{
cuenta="CTS en Soles";
}
if (rbCTSd.isSelected())
{
cuenta="CTS en Dlares";
}
//buscamos el saldo actual a travs del nmero de tarjeta y el tipo de cuenta
for (i=0;i<=fila;i++)
{
if(txtTar.getText().equals(fmenu.getValores(i,0)) &&
cuenta.equalsIgnoreCase(fmenu.getValores(i,3)))
{
saldo=fmenu.getValores(i,4);
}
}
txtSaldoActual.setText(saldo);
}
private void btnEncontrarActionPerformed(java.awt.event.ActionEvent evt) {
String cuenta, tar;
int fila, i;
tar=txtTar.getText();
fila=fmenu.getFilas();
this.usoObjRadio(false);
//buscamos los datos del cliente a travs del nmero de tarjeta
for (i=0;i<=fila;i++)
{
if (fmenu.getValores(i,0).equals(tar))
{
txtAp.setText(fmenu.getValores(i,1));
230
TALLER DE PROGRAMACIN
txtNo.setText(fmenu.getValores(i,2));
txtNroDoc.setText(fmenu.getValores(i,0).substring(4));
//habilitamos las cuentas que tiene el cliente
cuenta=fmenu.getValores(i,3);
if (cuenta.equalsIgnoreCase("Ahorro en Soles"))
rbASoles.setEnabled(true);
if (cuenta.equalsIgnoreCase("Ahorro en Dlares"))
rbADolares.setEnabled(true);
if (cuenta.equalsIgnoreCase("CTS en Soles"))
rbCTSs.setEnabled(true);
if (cuenta.equalsIgnoreCase("CTS en Dlares"))
rbCTSd.setEnabled(true);
231
TALLER DE PROGRAMACIN
}
232
TALLER DE PROGRAMACIN
233
TALLER DE PROGRAMACIN
19. Ingresamos los apellidos y nombres y damos clic en el botn de comando Buscar
y mostrar el nmero de documento de identidad, el nmero de tarjeta y se
habilitarn las cuentas que tiene el cliente. Seleccionamos una cuenta, damos clic
en el botn de comando Saldo Actual y se visualizar el saldo de la cuenta
elegida.
234
TALLER DE PROGRAMACIN
20. Lo mismo podemos hacerlo en la otra pestaa que se consulta por el nmero de
tarjeta. Cerramos la ventana de la consulta dando clic en el botn de comando
Cerrar y posteriormente seleccionamos la opcin Operaciones de la Cuenta.
Ingresamos el nmero de tarjeta y damos clic en el botn de comando Buscar y se
mostrar los apellidos y nombres del cliente y se habilitarn las cuentas que tiene
el cliente.
235
TALLER DE PROGRAMACIN
AUTOEVALUACION
a) Responde a las siguientes preguntas:
1. El objeto contenedor que puede estar compuesto por varios pestaas o panales, se
denomina
2. El mtodo que permite ocultar un formulario es
3. El mtodo que aade una nueva fila al modelo de un objeto JTable se denomina
REFERENCIAS BIBLIOGRAFICAS
236