Está en la página 1de 834

Programacion con

Java2 y Netbeens
Guia de Programacion con Java2

Este Tutorial pretende orientar al alumno a comprender como trabaja java con el
IDE de Netbeens de una manera visual.

Aclaracion: Esta obra no a sido preparada por Reynaldo Melgar solo a sido
ordenada en un solo documento PDF. En el archivo original se desconoce el autor
. Se recomienda no utilizar este documento con fines de lucro compartir de la
misma manera en que la hayas conseguido valoremos el esfuerzo de esta persona
que quizo compartir con nosotros sus grandes conocimientos.
Saludos Atte un aprendiz Reynaldo Melgar soliz estudiante de ingeniera de
sistemas UNIVERSIDAD AUTONOMA DEL BENI MARISCAL JOSE BALLIVIAN
2011
Reynaldo Melgar Soliz
By reycito2011
21/03/2011
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

1 Programacin de eventos | By reycito2011

EJERCICIO GUIADO. JAVA: CUADROS DE VERIFICACIN


1. Realiza un nuevo proyecto.

2. En la ventana principal debes aadir lo siguiente:

a. Un botn Aceptar llamado btnAceptar.
b. Una etiqueta con borde llamada etiResultado.

3. Aade tambin tres cuadros de verificacin. Estos cuadros son objetos
del tipo JCheckBox.













4. Aade tres JCheckBox y cambia el texto de ellos, de forma que
aparezca Perro, Gato y Ratn.

5. Debe cambiar el nombre de cada uno de ellos. Se llamarn: chkPerro,
chkGato, chkRaton.

6. La ventana tendr el siguiente aspecto cuando termine:



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

2 Programacin de eventos | By reycito2011




7. El programa debe funcionar de la siguiente forma:

Cuando el usuario pulse aceptar, en la etiqueta aparecer un mensaje
indicando qu animales han sido seleccionados. Para ello hay que
programar el evento actionPerformed del botn Aceptar. En ese evento
aada el siguiente cdigo:

String mensaje="Animales elegidos: ";
if (chkPerro.isSelected()) {
mensaje=mensaje+"Perro ";
}

if (chkGato.isSelected()) {
mensaje=mensaje+"Gato ";
}

if (chkRaton.isSelected()) {
mensaje=mensaje+"Raton ";
}

etiResultado.setText(mensaje);



8. Observa el cdigo. En l se hace lo siguiente:

a. Se crea una variable de cadena llamada mensaje.
b. En esa variable se introduce el texto Animales elegidos:
c. Luego, compruebo si est seleccionada la casilla de verificacin
chkPerro. Si es as concateno a la cadena mensaje la palabra
Perro.
d. Luego compruebo si est seleccionada la casilla de verificacin
chkGato y hago lo mismo.
e. Lo mismo con la casilla chkRaton.
f. Finalmente presento la cadena mensaje en la etiqueta
etiResultado.

9. Observa el mtodo isSelected() propio de las casillas de verificacin,
permiten saber si una casilla est activada o no.

10. Ejecute el programa. Seleccione por ejemplo las casillas Gato y Ratn.
Al pulsar Aceptar el resultado debe ser el siguiente:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

3 Programacin de eventos | By reycito2011




CONCLUSIN

Los cuadros de verificacin (JCheckBox) se usan cuando quieres
seleccionar varias opciones.


EJERCICIO GUIADO. JAVA: BOTONES DE OPCIN

1. Realiza un nuevo proyecto.

2. En la ventana principal debes aadir lo siguiente:

a. Un botn Aceptar llamado btnAceptar.
b. Una etiqueta con borde llamada etiResultado.

3. Aade un panel. Un panel es una zona rectangular que puede contener
elementos (botones, etiquetas, etc) La forma de poner un panel es a
travs del objeto JPanel.











21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

4 Programacin de eventos | By reycito2011



4. Una vez aadido el panel en el JFrame, le pondremos un borde para
poder localizarlo fcilmente. Debes hacer lo siguiente:

a. Selecciona el panel que has aadido.
b. Activa la propiedad Border (botn con tres puntos)
c. Busca el tipo de borde llamado TitledBorder (borde con ttulo) y
pon el ttulo colores.





5. Tu ventana debe quedar ms o menos as:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

5 Programacin de eventos | By reycito2011




6. Ahora debes aadir tres botones de opcin (botones de radio) dentro del
panel. Estos botones son objetos del tipo JRadioButton.














7. Aade tres JRadioButton y cambia el texto de ellos, de forma que
aparezca Rojo, Verde y Azul.

8. Debe cambiar el nombre de cada uno de ellos. Se llamarn: optRojo,
optVerde, optAzul.

9. La ventana tendr el siguiente aspecto cuando termine:


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

6 Programacin de eventos | By reycito2011




10. Si ejecuta el programa, observar que pueden seleccionarse varios
colores a la vez. Esto no es interesante, ya que los botones de opcin se
usan para activar solo una opcin entre varias.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

7 Programacin de eventos | By reycito2011

11. Hay que hacer que solo un botn de opcin pueda estar seleccionado a
la vez. Para ello, debe aadir un nuevo objeto. Realice los siguientes
pasos:

a. Aada un objeto del tipo ButtonGroup al formulario. Atencin!
Este objeto es invisible, y no se ver en el formulario, sin
embargo, lo podris ver en el Inspector, en la parte de Otros
Componentes:





b. Tienes que darle un nombre al ButtonGroup. El nombre ser
grupoColores.
c. Ahora, hay que conseguir que los tres botones pertenezcan al
mismo grupo. Es decir, que pertenezcan al grupo grupoColores.
d. Selecciona el botn de opcin optRojo y cambia su propiedad
buttonGroup, indicando que pertenece al grupo colores (observa
la imagen):

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

8 Programacin de eventos | By reycito2011




e. Haz lo mismo con los botones optVerde y optAzul.


12. Acabas de asociar los tres botones de opcin a un mismo grupo. Esto
produce que solo una de las tres opciones pueda estar activada.
Prubelo ejecutando el programa.


13. Ahora interesa que la opcin Rojo salga activada desde el principio.
Una forma de hacer esto es programando en el Constructor lo
siguiente:

optRojo.setSelected(true);

El mtodo setSelected hace que se pueda activar o desactivar un botn
de opcin.

Prueba el programa. Observa como la opcin Rojo est activada
inicialmente.


14. El programa no est terminado an. Interesa que cuando el usuario
pulse el botn Aceptar, en la etiqueta aparezca el color elegido. Para
ello, en el actionPerformed del botn Aceptar programe lo siguiente:

String mensaje="Color elegido: ";

if (optRojo.isSelected()) {
mensaje=mensaje+"Rojo";
} else if (optVerde.isSelected()) {
mensaje=mensaje+"Verde";
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

9 Programacin de eventos | By reycito2011

} else if (optAzul.isSelected()) {
mensaje=mensaje+"Azul";
}

etiResultado.setText(mensaje);



15. Observa el cdigo. En l se hace lo siguiente:

a. Se crea una variable de cadena llamada mensaje.
b. En esa variable se introduce el texto Color elegido:
c. Luego se comprueba que opcin est seleccionada, usando el
mtodo isSelected de los botones de opcin. Este mtodo te dice
si un botn est seleccionado o no.
d. Segn la opcin que est seleccionada, se aade un texto u otro
a la cadena mensaje.
e. Finalmente se muestra la cadena mensaje en la etiqueta
etiResultado.


16. Ejecute el programa. Seleccione por ejemplo la Verde. Al pulsar Aceptar
el resultado debe ser el siguiente:




CONCLUSIN

Los botones de opcin, tambin llamados botones de radio
(JRadioButton) se usan cuando quieres que el usuario pueda elegir una
opcin de entre varias.

Es interesante que los botones de radio aparezcan dentro de un panel
JPanel. Se recomienda colocar un borde al panel.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

10 Programacin de eventos | By reycito2011


Es totalmente necesario aadir un objeto del tipo ButtonGroup, y hacer
que los botones de radio pertenezcan a dicho grupo. En caso contrario,
ser posible activar varios botones de opcin a la vez.


EJERCICIO GUIADO. JAVA: CUADROS DE LISTA

1. Realiza un nuevo proyecto.

2. En la ventana principal debes aadir lo siguiente:

a. Un botn Aceptar llamado btnAceptar.
b. Una etiqueta con borde llamada etiResultado.

3. Aade un cuadro de lista. Los cuadros de listas son objetos JList.















4. Cmbiale el nombre al JList. Ten cuidado, ya que en los JList aparecen
siempre dentro de otro objeto llamado jScrollPane. Si miras en el
Inspector, vers que al pulsar en el botn + del jScrollPane aparecer tu
JList:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

11 Programacin de eventos | By reycito2011



5. Aprovecha para cambiarle el nombre al JList. El nuevo nombre ser
lstColores.

6. Si te fijas en el JList, consiste en un cuadro que contiene una serie de
Items. Estos elementos pueden ser cambiados a travs de la propiedad
Model del JList.

7. Busca la propiedad Model y haz clic en el botn de los tres puntos.
Aparecer un cuadro de dilogo parecido al siguiente. Solo tienes que
seleccionar los elementos que quieras y pulsar el botn Borrar
(Remove) para eliminarlos de la lista.

8. Puedes aadir elementos escribindolos en el cuadro Artculo y luego
pulsando el botn Aadir (Add).

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

12 Programacin de eventos | By reycito2011



9. Debes hacer que la lista sea la siguiente:

Rojo
Verde
Azul

10. Ahora programaremos el actionPerformed del botn Aceptar. Debes
introducir el siguiente cdigo:

String mensaje;

mensaje="El color seleccionado es:
"+lstColores.getSelectedValue().toString();
etiResultado.setText(mensaje);




11. Observa el cdigo:

a. Se crea una variable de cadena llamada mensaje.
b. Y dentro de esta variable se introduce una concatenacin de
cadenas.
c. Observa la parte: lstColores.getSelectedValue(), esta
parte devuelve el valor seleccionado de la lista.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

13 Programacin de eventos | By reycito2011

d. Hay que tener en cuenta que este valor no es una cadena, por
eso hay que convertirla a cadena aadiendo .toString().
e. De esta manera puedes extraer el elemento seleccionado de un
cuadro de lista.
f. Luego simplemente ponemos la cadena mensaje dentro de la
etiqueta.

12. Ejecuta el programa y observa su funcionamiento. Por ejemplo, si
seleccionas el color verde y pulsas aceptar el resultado ser el siguiente:




13. Vamos a mejorar el programa. Puede suceder que el usuario no
seleccione ningn valor del cuadro de lista, y sera interesante en este
caso que el programa avisara de ello. Cambie el cdigo del botn
Aceptar por este otro cdigo:

String mensaje;

if (lstColores.getSelectedIndex()==-1) {
mensaje="No hay un color seleccionado.";
} else {
mensaje="El color seleccionado es:
"+lstColores.getSelectedValue().toString();
}
etiResultado.setText(mensaje);


14. Observa el cdigo:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

14 Programacin de eventos | By reycito2011

a. El mtodo getSelectedIndex me dice el ndice del elemento que
est seleccionado.
b. Por ejemplo, si est seleccionado el primero el ndice es 0, si est
seleccionado el segundo el ndice es 1, etc.
c. Si este mtodo devuelve -1, entonces es seal de que no hay
ningn elemento seleccionado.
d. Aprovecho esto para mostrar un mensaje indicando lo sucedido.

15. Si ejecuta el programa y pulsa el botn Aceptar sin seleccionar nada el
resultado debera ser el siguiente:




16. Se podra haber prescindido del botn aceptar si el cdigo anterior se
hubiera puesto en el evento mouseClicked del cuadro de lista en vez de
en el actionPerformed del botn Aceptar. En este caso, cada vez que se
seleccionara un elemento de la lista, automticamente aparecera el
mensaje en la etiqueta.

Se anima a que realice esta modificacin.


CONCLUSIN

El objeto JList permite crear cuadros de lista. Estos objetos contienen
una serie de elementos que pueden ser seleccionados.

A travs del mtodo getSelectedValue se puede obtener el elemento que
est seleccionado. (Recuerda convertirlo a cadena con toString)

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

15 Programacin de eventos | By reycito2011

A travs del mtodo getSelectedIndex se puede saber la posicin del
elemento seleccionado. Si este ndice es -1, entonces sabremos que no
hay ningn elemento seleccionado.




EJERCICIO GUIADO. JAVA: CUADROS COMBINADOS

1. Realiza un nuevo proyecto.

2. En la ventana principal debes aadir lo siguiente:

a. Una etiqueta con borde llamada etiResultado.

3. Aade un cuadro combinado (combo). Los cuadros combinados son
objetos del tipo JComboBox. Bsicamente, un combo es una lista
desplegable.















4. Cmbiale el nombre al JComboBox. El nombre ser cboColores. Tu
programa debe tener ms o menos este aspecto.




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

16 Programacin de eventos | By reycito2011

5. Los elementos del cboColores pueden ser cambiados a travs de la
propiedad Model. Selecciona el combo y activa la propiedad Model (el
botoncito con los tres puntos) Aparecer lo siguiente:






6. Al igual que pasaba con los cuadros de lista, se pueden eliminar los
elementos que contiene el combo y aadir elementos propios. Use los
botones Aadir y Eliminar para aadir la siguiente lista de elementos:

Rojo
Verde
Azul

7. Ejecuta el programa y observa el funcionamiento del desplegable...

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

17 Programacin de eventos | By reycito2011




8. Vamos a hacer que cuando se elija un elemento del desplegable, en la
etiqueta aparezca un mensaje indicando el color elegido.

Para ello, debes programar el evento actionPerformed del combo y
aadir el siguiente cdigo:

String mensaje="El color elegido es ";

mensaje=mensaje+cboColores.getSelectedItem().toString(
);
etiResultado.setText(mensaje);

9. Este cdigo hace lo siguiente:

a. Crea una variable de cadena.
b. Concatena dentro de ella el mensaje El color elegido es con el
color seleccionado.
c. Observa el mtodo getSelectedItem, se usa para saber el
elemento seleccionado del combo. Es necesario convertirlo a
texto con toString.
d. Finalmente se coloca el mensaje en la etiqueta.

10. Ejecuta el programa y comprueba su funcionamiento. Por ejemplo, si
elegimos el color verde, el aspecto del programa ser el siguiente:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

18 Programacin de eventos | By reycito2011



11. Los cuadros combinados pueden funcionar tambin como cuadros de
texto. Es decir, pueden permitir que se escriba texto dentro de ellos.
Para hacer esto, basta con cambiar su propiedad editable y activarla.




12. Ejecuta el programa y observa como se puede escribir dentro del
combo. Al pulsar Enter, el programa funciona igualmente con el texto
escrito.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

19 Programacin de eventos | By reycito2011





CONCLUSIN

Los combos son listas desplegables donde se puede elegir una de las
opciones propuestas.

Los combos pueden funcionar tambin como cuadros de textos, si se
activa la opcin editable.

A travs del mtodo getSelectedItem se puede extraer la opcin
seleccionada o el texto escrito en el combo.




EJERCICIO GUIADO. JAVA: MODELOS DE CUADRO DE LISTA

1. Realiza un nuevo proyecto.

2. En la ventana principal debes
aadir lo siguiente:

a. Una etiqueta con borde
llamada
etiResultado.

3. Aade un cuadro de lista al
formulario (JList).







Se escribe aqu y
se pulsa enter
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

20 Programacin de eventos | By reycito2011









4. Borra todo el contenido de la lista (propiedad model) y cmbiale el
nombre a la lista. La lista se llamar lstNombres. Recuerda que las listas
aparecen dentro de un objeto del tipo JScrollPane.






5. Aade dos botones al formulario. Uno de ellos tendr el texto Curso 1 y
se llamar btnCurso1 y el otro tendr el texto Curso 2 y se llamar
btnCurso2.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

21 Programacin de eventos | By reycito2011




6. En el evento actionPerformed del botn Curso 1 programa lo siguiente:

DefaultListModel modelo = new DefaultListModel();
modelo.addElement("Juan");
modelo.addElement("Mara");
modelo.addElement("Luis");
lstNombres.setModel(modelo);


7. En el evento actionPerformed del botn Curso 2 programa lo siguiente:

DefaultListModel modelo = new DefaultListModel();
modelo.addElement("Ana");
modelo.addElement("Marta");
modelo.addElement("Jose");
lstNombres.setModel(modelo);


8. Explicacin de los cdigos anteriores:

a. Lo que hace cada botn es rellenar el cuadro de lista con una
serie de nombres. En el caso del botn Curso 1, la lista se
rellena con los nombres Juan, Mara y Luis, mientras que en el
caso del botn Curso 2, la lista se rellena con los nombres Ana,
Marta y Jose.

b. El contenido de un cuadro de lista es lo que se denomina un
modelo. El modelo es un objeto que contiene el listado de
elementos de la lista.

c. Los modelos de las listas son objetos del tipo DefaultListModel.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

22 Programacin de eventos | By reycito2011

d. Lo que hace el programa es crear un modelo. Luego rellena el
modelo con datos, y finalmente asocia el modelo al cuadro de
lista. Veamos como se hace todo esto.

e. Primero se crea el modelo, a travs de la siguiente instruccin
(ser necesario aadir el import correspondiente, atento a la
bombillita):

DefaultListModel modelo = new DefaultListModel();

f. El modelo tiene un mtodo llamado addElement que permite
introducir datos dentro de l. As pues usamos este mtodo para
aadir los datos al modelo.

modelo.addElement("Ana");
modelo.addElement("Marta");
modelo.addElement("Jose");

g. Finalmente asociamos el modelo creado al cuadro de lista de la
siguiente forma:

lstNombres.setModel(modelo);

h. As pues, aqu tienes una forma de cambiar el contenido de un
cuadro de lista desde el propio programa.


9. Prueba a ejecutar el programa. Observa como cuando pulsas cada
botn cambia el contenido de la lista:




Click y cambia el
listado.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

23 Programacin de eventos | By reycito2011

10. Ahora aade el siguiente cdigo al evento mouseClicked del cuadro de
lista:

etiResultado.setText(lstNombres.getSelectedValue().toString
());

Esta instruccin hace que al seleccionar un elemento del cuadro de lista
ste aparezca en la etiqueta etiResultado. Recuerda que el mtodo
getSelectedValue permite recoger el elemento seleccionado (hay que
convertirlo a cadena con toString)


11. Ejecuta el programa:




12. Una propuesta. Aada un botn Vaciar llamado btnVaciar. Este botn
vaciar el contenido de la lista. Para esto lo nico que tiene que hacer es
crear un modelo y, sin introducir ningn valor en l, asociarlo al cuadro
de lista.


CONCLUSIN

Un cuadro de lista es un objeto que contiene a su vez otro objeto
denominado modelo.

El objeto modelo es el que realmente contiene los datos de la lista.

Cuadro de lista Modelo Datos

Click y aparece
el elemento
seleccionado en
la etiqueta.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

24 Programacin de eventos | By reycito2011

Se puede crear un modelo y luego introducir datos en l. Luego se
puede asociar ese modelo a la lista. De esta manera se puede cambiar
el contenido de la lista en cualquier momento.




EJERCICIO GUIADO. JAVA: MODELOS DE CUADRO DE LISTA

1. Realiza un nuevo proyecto.

2. En la ventana principal debes aadir lo siguiente:

a. Un combo llamado cboNumeros.
b. Un botn Pares llamado btnPares.
c. Un botn Impares llamado btnImpares.
d. Una etiqueta con borde llamada etiResultado.

3. Elimina todos los elementos que contenga el combo. Recuerda, debes
usar la propiedad model del combo para cambiar sus elementos.

4. Despus de haber hecho todo esto, tu ventana debe quedar ms o
menos as:



5. En el evento actionPerformed del botn Pares, programa lo siguiente:

int i;

DefaultComboBoxModel modelo = new DefaultComboBoxModel();

for (i=0;i<10;i+=2) {
modelo.addElement("N "+i);
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

25 Programacin de eventos | By reycito2011

}

cboNumeros.setModel(modelo);


6. Observa lo que hace este cdigo:
a. Crea un objeto modelo para el combo.

Al igual que pasa con los cuadros de lista, los combos tienen un
objeto modelo que es el que realmente contiene los datos. En el
caso de los combos, para crear un objeto modelo se usar esta
instruccin:

DefaultComboBoxModel modelo = new DefaultComboBoxModel();
b. A continuacin, se usa el objeto modelo creado y se rellena de
datos. Concretamente, se rellena con los nmeros pares
comprendidos entre 0 y 10.

c. Observa el uso de la propiedad addElement para aadir un
elemento al modelo del combo.

d. Se ha usado un bucle for para hacer la introduccin de datos en
el modelo ms fcil.

e. Finalmente, se asocia el modelo al combo a travs de la siguiente
lnea, con lo que el combo aparece relleno con los elementos del
modelo:

cboNumeros.setModel(modelo);


7. Ejecuta el programa y observa el funcionamiento del botn Pares.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

26 Programacin de eventos | By reycito2011




8. El botn Impares es similar. Programa su actionPerformed como sigue:

int i;
DefaultComboBoxModel modelo = new DefaultComboBoxModel();

for (i=1;i<10;i+=2) {
modelo.addElement("N "+i);
}

cboNumeros.setModel(modelo);


9. La nica diferencia de este cdigo es el for, que est diseado para que
se introduzcan los nmeros impares comprendidos entre 0 y 10 dentro
del modelo.


10. Finalmente se programar el actionPerformed del combo para que al
seleccionar un elemento este aparezca en la etiqueta. Esto se hace con
una simple instruccin:

etiResultado.setText(cboNumeros.getSelectedItem().toString(
));


Recuerda el uso de getSelectedItem() para recoger el elemento
seleccionado, y el uso de toString() para convertirlo a texto.


Se pulsa y se rellena
automticamente
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

27 Programacin de eventos | By reycito2011

11. Prueba el programa. Prueba los botones Pares e Impares y prueba el
combo.




12. Sera interesante aadir un botn Vaciar llamado btnVaciar que vaciara
el contenido del combo. Esto se hara simplemente creando un modelo
vaco y asignarlo al combo. Se anima al alumno a que realice esta
mejora.


CONCLUSIN

Un combo, al igual que los cuadros de lista, es un objeto que contiene a
su vez otro objeto denominado modelo.

El objeto modelo es el que realmente contiene los datos del combo.

Combo Modelo Datos

Se puede crear un modelo y luego introducir datos en l. Luego se
puede asociar ese modelo al combo. De esta manera se puede cambiar
el contenido del combo en cualquier momento.




EJERCICIO GUIADO. JAVA: TOGGLEBUTTONS

1. Realiza un nuevo proyecto.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

28 Programacin de eventos | By reycito2011

2. Crears una ventana como la que sigue teniendo en cuenta lo siguiente:

a. Se aadir una etiqueta con el texto
Precio Base. No hace falta cambiarle su nombre.

b. Se aadir un cuadro de texto
llamado txtPrecioBase.

c. Se crear un botn Calcular,
llamado btnCalcular.

d. Se crear una etiqueta vaca y con
borde llamada etiTotal. Use la propiedad font de
esta etiqueta para hacer que el texto tenga un
mayor tamao.







e. Debes aadir tambin tres botones, con
el texto Instalacin, Formacin y
Alimentacin BD respectivamente.

Estos botones no son botones normales,
son botones del tipo JToggleButton. Usa
este tipo de objeto para crearlos.

Estos botones, se diferencian de los
botones normales en que se quedan
pulsados cuando se hace un clic sobre
ellos, y no vuelven a su estado normal
hasta que no se vuelve a hacer clic sobre ellos.

Los tres botones se llamarn respectivamente: tbtnInstalacion,
tbtnFormacion, tbtnAlimentacionBD.


f. Aade finalmente tres etiquetas conteniendo los nmeros 40, 200,
200. La primera se llamar etiPrecioInstalacion, la segunda
etiPrecioFormacion y la tercera etiPrecioAlimentacionBD.


3. Prueba el programa y comprueba el funcionamiento de los botones
JToggleButton:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

29 Programacin de eventos | By reycito2011





4. Se pretende que el programa funcione de la siguiente forma:

a. El usuario introducir un precio base para el servicio que se
vende.
b. A continuacin, si el cliente quiere la instalacin, activar el botn
Instalacin.
c. Si el cliente quiere la formacin, activar el botn Formacin.
d. Si el cliente quiere la Alimentacin de Base de Datos, activar el
botn Alimentacin BD.
e. Ten en cuenta que el cliente puede querer una o varias de las
opciones indicadas.
f. Finalmente se pulsar el botn calcular y se calcular el precio
total. Este precio se calcula de la siguiente forma:

Precio Total = Precio Base + Precio Extras.

El precio de los Extras depender de las opciones elegidas por el
usuario. Por ejemplo, si el usuario quiere Instalacin y Formacin,
los extras costarn 240 euros.


5. As pues, se programar el actionPerformed del botn Calcular de la
siguiente forma:
Observa como al pulsar los
JToggledButton estos se quedan
pulsados.

Si se vuelven a activar se despulsan.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

30 Programacin de eventos | By reycito2011

double precio_base;
double precio_instal; //precio instalacin
double precio_for; //precio formacion
double precio_ali; //precio alimentacion

//Recojo datos desde la ventana:

precio_base = Double.parseDouble(txtPrecioBase.getText());
precio_instal =
Double.parseDouble(etiPrecioInstalacion.getText());
precio_for =
Double.parseDouble(etiPrecioFormacion.getText());
precio_ali =
Double.parseDouble(etiPrecioAlimentacionBD.getText());

//Ahora que tengo los datos, puedo hacer clculos.

//Al precio base se le van aadiendo precio de extras
//segn estn o no activados los JToggleButtons

double precio_total;

precio_total = precio_base;

if (tbtnInstalacion.isSelected()) { //Si se seleccion
instalacin
precio_total = precio_total+precio_instal;
}

if (tbtnFormacion.isSelected()) { //Si se seleccion
formacin
precio_total = precio_total+precio_for;
}

if (tbtnAlimentacionBD.isSelected()) { //Si se seleccion
Alimentacin BD
precio_total = precio_total+precio_ali;
}


//Finalmente pongo el resultado en la etiqueta
etiTotal.setText(precio_total+" ");



6. Veamos una explicacin del cdigo:

a. Primero se crean variables doubles (ya que se admitirn
decimales) para poder hacer los clculos.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

31 Programacin de eventos | By reycito2011

b. Se extraern los datos de la ventana y se almacenarn en dichas
variables. Para ello, hay que convertir desde cadena a double:

precio_base = Double.parseDouble(txtPrecioBase.getText());
precio_instal =
Double.parseDouble(etiPrecioInstalacion.getText());
precio_for =
Double.parseDouble(etiPrecioFormacion.getText());
precio_ali =
Double.parseDouble(etiPrecioAlimentacionBD.getText());

c. Una vez obtenidos los datos en forma numrica, ya se pueden
hacer clculos con ellos. El programa declara una nueva variable
precio_total donde se introducir el resultado. En primer lugar se
introduce en esta variable el precio base.

double precio_total;

precio_total = precio_base;


d. A continuacin se le suma al precio_total los precios de los extras
si el botn correspondiente est seleccionado. Esto se hace a
travs de if. Por ejemplo, para sumar el extra por instalacin:

if (tbtnInstalacion.isSelected()) { //Si se seleccion
instalacin
precio_total = precio_total+precio_instal;
}

Esto significa: Si el botn instalacin est seleccionado, aade al
precio total el precio por instalacin

Observa el uso del mtodo isSelected para saber si el botn
tbtnInstalacion ha sido seleccionado.

e. Finalmente el resultado se muestra en la etiqueta de total.



7. Comprueba el funcionamiento del programa


Introduce una cantidad (usa el punto
para los decimales)

Selecciona los extras que desees.

Pulsa Calcular y obtendrs el resultado.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

32 Programacin de eventos | By reycito2011




8. Supongamos que normalmente (en el 90 por ciento de los casos) la
instalacin es solicitada por el usuario. Podra ser interesante que el
botn Instalacin ya saliera activado al ejecutarse el programa. Para
ello, aade en el Constructor la siguiente lnea.

tbtnInstalacion.setSelected(true);

Esta lnea usa el mtodo setSelected para activar al botn
tbtnInstalacin.

Comprueba esto ejecutando el programa.



CONCLUSIN

Los JToggleButton son botones que pueden quedarse pulsados.

A travs del mtodo isSelected podemos saber si un JToggleButton est
seleccionado.

Tambin puedes usar el mtodo setSelected para seleccionar o no un
botn de este tipo.

Realmente, estos botones no suelen ser muy usados, ya que pueden ser
sustituidos por Cuadros de Verificacin (JCheckBox) que son ms
conocidos.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

33 Programacin de eventos | By reycito2011



EJERCICIO GUIADO. JAVA: SLIDERS


Introduccin a los JSliders

La clase JSlider permite crear objetos como el siguiente:




Estos elementos tienen un pequeo recuadro que se puede arrastrar a derecha
o izquierda. Segn la posicin del recuadro, el JSlider tendr un valor concreto.

El JSlider se puede configurar para que muestre los distintos valores que
puede tomar:



Tambin se puede configurar de forma que los valores mnimo y mximo sean
distintos:



El valor que tiene un JSlider es el valor al que apunta el recuadro del JSlider.
En la imagen anterior, el JSlider tiene un valor de 85.

Se ver a continuacin las caractersticas ms interesantes de los JSlider y
como programarlos.


Ejercicio guiado

1. Crea un nuevo proyecto.

2. Aade en l un JSLider. Su nombre ser slDeslizador.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

34 Programacin de eventos | By reycito2011






3. Aade una etiqueta con borde. Su nombre ser etiValor.

4. La ventana tendr el siguiente aspecto:





5. Un JSlider tiene un valor mnimo y un valor mximo. El valor mnimo es
el valor que tiene cuando el recuadro est pegado a la parte izquierda,
mientras que el valor mximo es el valor que tiene cuando el recuadro
est pegado a la parte derecha.

El valor mnimo y mximo del JSlider se puede cambiar. Busca las
propiedades maximum y minimum del JSlider y asigna los siguientes
valores:

Mximo: 500
Mnimo: 100



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

35 Programacin de eventos | By reycito2011



6. Se puede asignar un valor inicial al JSlider a travs de su propiedad
value. Busque esta propiedad y asigne un valor de 400. Observe donde
se sita el recuadro del JSlider.





7. Se puede mejorar el JSlider definiendo unas divisiones (medidas) Por
ejemplo, haremos que cada 50 unidades aparezca una divisin. Para
ello use la propiedad majorTickSpacing y asigne un 50.



8. Esto, en realidad, no produce ningn cambio en el JSlider. Para que las
divisiones se vean, es necesario que active tambin la propiedad
paintTicks. Esta propiedad pintar divisiones en el JSlider:






9. An se puede mejorar la presentacin del JSlider, si hacemos que
aparezca el valor de cada divisin. Para ello debes activar la propiedad
paintLabel.

Medidas cada 50
unidades
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

36 Programacin de eventos | By reycito2011



10. Ejecuta el programa para ver el funcionamiento del Deslizador y su
aspecto. Debe ser parecido al siguiente:




11. Bien. Ahora se pretende que cuando el usuario arrastre el deslizador, en
la etiqueta aparezca el valor correspondiente. Para ello tendr que
programar el evento stateChanged del JSlider.

El evento stateChanged sucede cuando el usuario arrastra el recuadro
del deslizador.

En este evento programe lo siguiente:

etiValor.setText("El valor es:
"+slDeslizador.getValue());


12. Ejecute el programa y observe lo que sucede cuando arrastra el
deslizador.

13. La explicacin del cdigo es la siguiente:

a. El mtodo getValue del deslizador nos devuelve el valor que tiene
actualmente el deslizador.
b. Este valor es concatenado a la cadena El valor es: y es
mostrado en la etiqueta a travs del conocido setText.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

37 Programacin de eventos | By reycito2011




14. A continuacin se mencionan otras propiedades interesantes de los
JSlider que puedes probar por tu cuenta:

orientation
Permite cambiar la orientacin del JSlider. Podras por ejemplo hacer
que el JSlider estuviera en vertical.

minorTickSpacing
Permite asignar subdivisiones a las divisiones ya asignadas. Prueba por
ejemplo a asignar un 10 a esta propiedad y ejecuta el programa.
Observa las divisiones del JSlider.

snapToTicks
Cuando esta propiedad est activada, no podrs colocar el deslizador
entre dos divisiones. Es decir, el deslizador siempre estar situado sobre
una de las divisiones. Prueba a activarla.

paintTrack
Esta propiedad permite pintar o no la lnea sobre la que se desliza el
JSlider. Prueba a desactivarla.





CONCLUSIN

Los JSliders son objetos deslizadores. Permiten elegir un valor
arrastrando un pequeo recuadro de derecha a izquierda o viceversa.

El valor de un JSliders puede ser obtenido a travs de su mtodo
getValue.

Si quieres programar el cambio (el arrastre) en el deslizador, tienes que
programar el evento llamado stateChanged.
Movemos aqu.

Y aparece el valor
correspondiente aqu.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

38 Programacin de eventos | By reycito2011






EJERCICIO GUIADO. JAVA: SCROLLBARS


Introduccin a las JscrollBars (Barras de desplazamiento)

La clase JScrollBar permite crear barras de desplazamiento independientes,
como la que se muestra a continuacin:



La barra tiene un valor mnimo, que se consigue haciendo que el recuadro de la
barra de desplazamiento est pegado a la parte izquierda.






Cuando se pulsa algunos de los botones de la barra de desplazamiento, el
valor de la barra se incrementa / decrementa poco a poco. A este incremento /
decremento lo llamaremos incremento unitario.









Cuando se pulsa directamente sobre la barra, el valor de la barra se incrementa
/ decrementa en mayor cantidad. A este incremento / decremento lo
llamaremos incremento en bloque.






Valor mnimo
Decrementa el valor poco a
poco (incremento unitario)
Incrementa el valor poco a poco
(incremento unitario)
Al pulsar directamente sobre la barra
se decrementa en mayor cantidad
(incremento en bloque)
Al pulsar directamente sobre la
barra se incremente en mayor
cantidad (incremento en bloque)
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

39 Programacin de eventos | By reycito2011










Ejercicio guiado

1. Para comprender mejor el funcionamiento de las barras de
desplazamiento se crear un proyecto nuevo.

2. Aade en el proyecto una barra de desplazamiento (JScrollBar) y llmala
desValor.




3. La barra de desplazamiento aparecer en vertical. Use la propiedad de
la barra llamada Orientation para hacer que la barra aparezca en
posicin horizontal.




4. Aade tambin una etiqueta con borde y llmala etiValor.

5. La ventana debe quedar ms o menos as:



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

40 Programacin de eventos | By reycito2011

6. Interesa que cuando el usuario cambie de alguna manera la barra de
desplazamiento, en la etiqueta aparezca el valor de la barra.

Para ello, se debe programar el evento AdjustmentValueChanged de la
barra de desplazamiento.

En este evento programa lo siguiente:

etiValor.setText("El valor es: "+desValor.getValue());






7. Como ves, se coloca en la etiqueta el valor de la barra. El valor de la
barra se obtiene con el mtodo getValue. Ejecuta el programa para ver
su funcionamiento.





8. Sigamos estudiando el programa. Se pide que cambies las siguientes
propiedades de tu barra:

Minimum Permite asignar el valor mnimo de la barra. Escribe un
50
Maximum Permite asignar el valor mximo de la barra. Escribe un
150




UnitIncrement Permite cambiar el incremento unitario. Escribe un 2.

Pulsa aqu y observa
como el valor cambia
poco a poco
Pero si pulsas aqu el
valor cambia en mayor
cantidad
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

41 Programacin de eventos | By reycito2011



BlockIncrement Permite cambiar el incremento en bloque. Escribe
un 20.



VisibleAmount Permite cambiar el ancho del recuadro de la barra.
Escribe un 5.






5
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

42 Programacin de eventos | By reycito2011

9. Ejecuta ahora el programa y comprueba su funcionamiento:

















Si pulsas aqu, el valor
se incrementa de 2 en
2, ya que el
incremento unitario se
configur en 2.
Si pulsas aqu, el valor
se incrementa de 20
en 20, ya que el
incremento en bloque
es de 20.
Si llevas la barra de
desplazamiento al mnimo, su
valor ser de 50, ya que se
configur as con la propiedad
minimum
Observa lo que sucede cuando llevas
la barra de desplazamiento al mximo:
aparece un valor de 145, cuando el
valor mximo que asignamos fue de
150 por qu?
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

43 Programacin de eventos | By reycito2011



10. Tal como se ha indicado anteriormente, pasa algo raro con la barra de
desplazamiento cuando esta est al mximo. Se esperaba que
alcanzara el valor 150, y sin embargo, el valor mximo alcanzado fue de
145. La explicacin es la siguiente:









* Nuestra barra tiene un valor mximo de 150.

** Sin embargo, el valor de la barra viene indicado por el lado izquierdo
del recuadro interno.

*** Como el recuadro interno tiene un ancho definido a travs de la
propiedad VisibleAmount, el valor mximo que la barra puede alcanzar
es de:

Valor = ValorMximo Ancho del recuadro.

Es decir,

Valor alcanzable = 150 5 = 145



11. A travs del mtodo setValue de la barra de desplazamiento se puede
asignar un valor inicial a la barra. Programe en el constructor de su
programa lo necesario para que la barra de desplazamiento tenga un
valor de 70 al empezar el programa.



CONCLUSIN

Las JScrollBars son barras de desplazamiento independientes. Al igual
que los JSliders, las JScrollBars tienen un valor concreto, que puede ser
obtenido a travs del mtodo getValue.

Entre las caractersticas programables de una barra de desplazamiento,
tenemos las siguientes:
Valor mximo (150) *
Valor de la barra (145) **
5 ***
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

44 Programacin de eventos | By reycito2011


- Valor mnimo (propiedad Minimum)
- Valor mximo (propiedad Maximum)
- Incremento unitario (propiedad UnitIncrement)
- Incremento en bloque (propiedad BlockIncrement)
- Tamao del recuadro de la barra (propiedad VisibleAmount)

EJERCICIO GUIADO. JAVA: BARRA DE MENUS


Barras de Mens

La barra de mens nos permitir acceder a las opciones ms importantes del
programa. Todo programa de gran envergadura suele tener una barra de
mens.




Ejercicio guiado

1. Veamos como aadir una barra de mens a nuestras aplicaciones. En
primer lugar, crea un proyecto con el NetBeans.

2. Aade a tu ventana un objeto JMenuBar




3. En la parte superior de tu ventana aparecer esto:



4. En el inspector (parte inferior izquierda) observars como aparece un
objeto JMenuBar, y, dentro de l, un objeto del tipo JMenu. Los objetos
JMenu representan las opciones principales contenidas dentro de la
barra de mens.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

45 Programacin de eventos | By reycito2011



5. Aprovecha el Inspector para cambiar el nombre al objeto JMenuBar.
Llmalo barraMenus.

6. Cambia tambin el nombre al objeto JMenu. Asgnale el nombre
menuArchivo. El Inspector tendr el siguiente aspecto:




7. Ahora, la nica opcin de la barra de mens muestra el texto Menu.
Esto se puede cambiar seleccionndola y cambiando su propiedad text.
Asgnale el texto Archivo a la opcin del men:





8. Ahora el aspecto de la barra de mens ser el siguiente:




9. Puedes aadir ms opciones principales a la barra de mens haciendo
clic con el derecho sobre el objeto de la barra de mens y activando la
opcin Aadir JMenu.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

46 Programacin de eventos | By reycito2011




10. Aada dos opciones ms a la barra de mens. El inspector debe tener
ahora el siguiente aspecto:



11. Y la barra de mens presentar este otro aspecto:




12. Cambia los nombres de las dos nuevas opciones. Sus nombres sern:
menuEdicion y menuInsertar.



13. Cambia los textos de ambas opciones. Sus textos sern: Edicin e
Insertar.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

47 Programacin de eventos | By reycito2011


14. Ya tenemos creada la barra de mens (JMenuBar) con sus opciones
principales (JMenu). Ahora se tendrn que definir las opciones
contenidas en cada opcin principal. Por ejemplo, crearemos las
opciones contenidas en el men Archivo.

15. Haz clic con el botn derecho sobre el objeto menuArchivo y activa la
opcin Aadir JMenuItem.




Los JMenuItem son objetos que representan las opciones contenidas en los
mens desplegables de la barra de mens.
16. Aade un JMenuItem ms al menuArchivo y luego cambia el nombre a
ambos. Sus nombres sern menuItemAbrir y menuItemGuardar. El
aspecto del Inspector ser el siguiente:



17. Usa ahora la propiedad Text de ambos JMenuItem para asignarles un
texto. El primero tendr el texto Abrir y el segundo el texto Guardar.

18. Ya podemos ejecutar el programa para ver que es lo que se ha
conseguido. Use el men:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

48 Programacin de eventos | By reycito2011



Observa como la opcin Archivo se despliega mostrando dos submens:
Abrir y Guardar.


19. Seguiremos aadiendo elementos al men. Ahora haga clic con el
derecho sobre el elemento menuArchivo y aada un JSeparator.




Los JSeparator son objetos que definen una separacin entre las opciones de
un men. Cmbiele el nombre y llmelo separador1:

20. Aada un nuevo JMenuItem al men Archivo y ponle el nombre
menuSalir. El texto de esta opcin ser Salir (use su propiedad text) El
aspecto del Inspector ser el siguiente:



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

49 Programacin de eventos | By reycito2011

21. Ejecuta el programa y observa el contenido de la opcin Archivo del
men:



Observa el efecto que produce el separador.


22. Un JMenu representa las opciones principales de la barra de mens. A
su vez, un JMenu contiene JMenuItem, que son las opciones contenidas
en cada opcin principal, y que se ven cuando se despliega el men.

Sin embargo, un JMenu puede contener a otros JMenu, que a su vez
contendrn varios JMenuItem. Usando el botn derecho del ratn y la
opcin Aadir, aade un JMenu dentro de menuEdicion:





23. Llama al nuevo JMenu menuColores y asignale el texto Colores.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

50 Programacin de eventos | By reycito2011



24. Ahora aade dentro del menuColores tres JMenuItem llamados
respectivamente: menuItemRojo, menuItemVerde, menuItemAzul. Sus
textos sern Rojo, Verde y Azul.



25. Ejecuta el programa y observa como ha quedado el men Edicin:



La opcin Edicin (JMenu) contiene una opcin Colores (JMenu) que a
su vez contiene las opciones Rojo, Verde y Azul (JMenuItems)


26. De nada sirve crear un men si luego este no reacciona a las
pulsaciones del ratn. Cada objeto del men tiene un evento
ActionPerformed que permite programar lo que debe suceder cuando se
active dicha opcin del men.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

51 Programacin de eventos | By reycito2011

27. Marque en el inspector el objeto menuItemRojo y acceda a su evento
ActionPerformed. Dentro de l programe este sencillo cdigo:

this.getContentPane().setBackground(Color.RED);

Este cdigo cambia el color de fondo de la ventana a rojo.

28. Compruebe el funcionamiento de la opcin Rojo del men ejecutando
el programa.

29. Programa tu mismo las opciones Verde y Azul.




CONCLUSIN

Las barras de mens son un conjunto de objetos de distinto tipo que se
contienen unos a los otros:

La barra en s est representada por un objeto del tipo JMenuBar.

La barra contiene opciones principales, representadas por objetos JMenu.

Las opciones principales contienen opciones que aparecen al
desplegarse el men. Esta opciones son objetos del tipo JMenuItem.

Un JMenu tambin puede contener otros JMenu, que a su vez contendrn
JMenuItems.

Tambin puede aadir separadores (JSeparator) que permiten visualizar
mejor las opciones dentro de un men.

EJERCICIO GUIADO. JAVA: BARRA DE HERRAMIENTAS


Barras de herramientas

Una barra de herramientas es bsicamente un contenedor de botones y otros
elementos propios de la ventana.

A travs de estos botones se pueden activar de forma rpida las opciones del
programa, las cuales suelen estar tambin incluidas dentro de la barra de
mens.



Ejercicio guiado

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

52 Programacin de eventos | By reycito2011

1. Veamos como aadir una barra de herramientas a nuestras
aplicaciones. En primer lugar, crea un proyecto con el NetBeans.

2. Aade a tu ventana un objeto JmenuBar (una barra de mens)

3. En la parte superior de tu ventana aparecer esto:



4. Debajo de la barra de mens colocaremos una barra de herramientas,
as que aade un objeto del tipo JToolBar. Haz que la barra se coloque
debajo de la barra de mens y que alcance desde la parte izquierda de
la ventana a la parte derecha.

La ventana quedar as:




5. Las barras de herramientas son simples contenedoras de objetos.
Dentro de ellas se pueden colocar botones, combos, etiquetas, etc.

Normalmente, las barras de herramientas contienen botones. As que
aade cuatro botones (JButton) dentro de la barra. Solo tienes que
colocarlos dentro de ella.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

53 Programacin de eventos | By reycito2011




6. Puedes ver si los botones estn bien colocados observando el Inspector:
Observa como los botones colocados se encuentran dentro de la barra.




7. Aprovecharemos el inspector para cambiar el nombre a la barra y a cada
botn. A la barra la llamaremos barraHerramientas, y a los botones los
llamaremos btnUno, btnDos, btnTres y btnCuatro:



8. Cambia el texto de los botones. Estos contendrn el texto: Uno, Dos,
Tres y Cuatro.

9. Ejecuta el programa y observa el resultado.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

54 Programacin de eventos | By reycito2011





10. La forma de programar cada botn no vara, aunque estos se
encuentren dentro de la barra herramientas. Solo hay que seleccionar el
botn y acceder a su evento actionPerformed.


11. Solo como demostracin de esto ltimo, entra en el actionPerformed del
primer botn y programa esto:

JOptionPane.showMessageDialog(null,"Activaste el botn
uno");

Luego ejecuta el programa y comprueba el funcionamiento del botn.


12. Los botones de la barra de herramientas normalmente no contienen
texto, sino que contienen un icono que representa la funcin que realiza.
La forma de colocar un icono dentro de un botn es a travs de su
propiedad icon.

13. A travs de la propiedad icon de un botn podr seleccionar un fichero
de imagen que contenga la imagen a mostrar en el botn.

14. Activa la propiedad icon del primer botn. Luego elige la opcin Fichero
y pulsa el botn Seleccionar Fichero para buscar un fichero con imagen.

Nota: Busca un fichero de imagen que sea del tipo .gif o .jpg.

Nota: Procura que la imagen sea pequea.

Nota: Se recomienda buscar imgenes .gif en Internet para practicar.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

55 Programacin de eventos | By reycito2011




15. Una vez colocadas las imgenes a los botones, se puede quitar el texto
de estos. Un ejemplo de cmo podra quedar la barra de herramientas
es este:







CONCLUSIN

Las barras de herramientas son simplemente contenedores de objetos.
Normalmente botones.

Los elementos de la barra de herramientas se manejan de la misma forma
que si no estuvieran dentro de la barra.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

56 Programacin de eventos | By reycito2011

Lo normal es hacer que los botones de la barra no tengan texto y tengan
iconos asociados.

EJERCICIO GUIADO. JAVA: MENUS EMERGENTES


El evento mouseClicked

El evento mouseClicked es capaz de capturar un clic del ratn sobre un
determinado elemento de la ventana.

Este evento recibe como parmetro un objeto del tipo MouseEvent, y gracias a
l se puede conseguir informacin como la siguiente:

- Qu botn del ratn fue pulsado.
- Cuantas veces (clic, doble clic, etc)
- En qu coordenadas fue pulsado el botn.
- Etc.

Se puede usar esta informacin para saber por ejemplo si se puls el botn
derecho del ratn, y sacar en este caso un men contextual en pantalla.

En este ejercicio guiado se estudiarn las posibilidades del evento
mouseClicked y se aplicarn a la creacin y visualizacin de mens
contextuales (o emergentes)



Ejercicio guiado

12. Crea un nuevo proyecto.

13. No hace falta que aada nada a la ventana.

14. Programaremos la pulsacin del ratn sobre el formulario, as que haga
clic sobre el formulario y active el evento mouseClicked.

15. Observe el cdigo del evento:

private void formMouseClicked(java.awt.event.MouseEvent
evt) {
// TODO add your handling code here:

}

Este evento recibe como parmetro un objeto llamado evt del tipo
MouseEvent (en rojo en el cdigo) que nos permite saber en qu
condiciones se hizo clic.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

57 Programacin de eventos | By reycito2011

16. Dentro del evento programe lo siguiente:

if (evt.getButton()==1) {
JOptionPane.showMessageDialog(null,"Pulso
el izquierdo");
} else if (evt.getButton()==2) {
JOptionPane.showMessageDialog(null,"Pulso
el central");
} else if (evt.getButton()==3) {
JOptionPane.showMessageDialog(null,"Pulso
el derecho");
}




17. Ejecuta el programa y haz clic sobre el formulario con el botn derecho,
con el izquierdo y con el central. Observa el resultado.

18. Ahora quizs puedas comprender el cdigo anterior. En l, se usa el
mtodo getButton del objeto evt para saber qu botn se puls. El
mtodo getButton devuelve un entero que puede ser 1, 2 o 3 segn el
botn pulsado.


19. Se puede aprovechar el mtodo getButton para controlar la pulsacin del
botn derecho del ratn y as sacar un men contextual. Pero antes, es
necesario crear el men.

20. Agrega a tu formulario un objeto del tipo JPopupMenu. Estos objetos
definen mens emergentes.

21. Los objetos JPopupMenu no se muestran en el formulario, pero puedes
verlo en el Inspector dentro de la rama de Otros Componentes:





22. Aprovecharemos el inspector para cambiar el nombre al men. Llmalo
menuEmergente.

23. Los mens emergentes se crean igual que las opciones de mens
normales, aadiendo con el botn derecho del ratn objetos JMenuItem.

24. Aada al men emergente tres JMenuItem, y asgneles los siguientes
nombres a cada uno: menuRojo, menuVerde, menuAzul. El inspector
debera tener el siguiente aspecto:
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

58 Programacin de eventos | By reycito2011




25. Tienes que cambiar la propiedad text de cada opcin del men.
Recuerda que esta propiedad define lo que aparece en el men.
Asignars los siguientes textos: Rojo, Verde y Azul.

26. El men emergente ya est construido. Ahora tenemos que hacer que
aparezca cuando el usuario pulse el botn derecho del ratn sobre el
formulario. Para ello, entraremos de nuevo en el evento mouseClicked
del formulario y cambiaremos su cdigo por el siguiente:

menuEmergente.show(this,evt.getX(),evt.getY());





27. Este cdigo significa lo siguiente:

- El mtodo show le da la orden al menuEmergente para que se muestre.
- El mtodo show recibe tres elementos: por un lado la ventana donde
acta (this)
- Por otro lado la posicin x donde debe mostrarse el men. Esta posicin
es aquella donde se puls el ratn, y se puede conseguir gracias al
mtodo getX del objeto evt.
- Por ltimo se necesita la posicin y. Esta posicin se puede conseguir
gracias al mtodo getY del objeto evt.

Es decir, decidimos mostrar el men emergente justo en las
coordenadas donde se hizo clic.


28. Ejecuta el programa y observa el resultado.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

59 Programacin de eventos | By reycito2011




Al hacer clic con el derecho se mostrar el men contextual.

29. Para hacer que al pulsarse una opcin suceda algo, solo hay que activar
el mtodo actionPerformed del JMenuItem correspondiente. Por
ejemplo, active el actionPerformed del menuRojo y dentro programe lo
siguiente:

this.getContentPane().setBackground(Color.RED);


30. Ejecuta el programa y comprueba lo que sucede al pulsar la opcin Rojo
del men contextual.




CONCLUSIN

Los mens contextuales son objetos del tipo JPopupMenu. Estos objetos
contienen JMenuItem al igual que las opciones de men normales.

Cuando se asigna un JPopupMenu a un formulario, no aparece sobre la
ventana, pero s en el inspector.

Para hacer que aparezca el men emergente, es necesario programar el
evento mouseClicked del objeto sobre el que quiera que aparezca el me.

Tendr que usar el mtodo show del men emergente para mostrar dicho
men.
EJERCICIO GUIADO. JAVA: FILECHOOSER
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

60 Programacin de eventos | By reycito2011



Cuadros de dilogo Abrir y Guardar

Las opciones Abrir y Guardar son opciones muy comunes en las aplicaciones.
Estas opciones permiten buscar en el rbol de carpetas del sistema un fichero
en concreto y abrirlo, o bien guardar una informacin dentro de un fichero en
alguna carpeta.

Java proporciona una clase llamada JFileChooser (elegir fichero) que permite
mostrar la ventana tpica de Abrir o Guardar:

Ventana Abrir fichero:


(La ventana de guardar es la misma, solo que muestra en su barra de ttulo la
palabra Guardar)

El objeto JFileChooser nos facilita la labor de elegir el fichero, pero no realiza la
apertura o la accin de guardar la informacin en l. Esto tendr que ser
programado.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

61 Programacin de eventos | By reycito2011

Ejercicio guiado

31. Vamos a practicar con el JFileChooser. Para ello, crea un nuevo
proyecto.

32. Aade en el proyecto los siguientes elementos:

a. Una barra de mens. Llmala barraMenus.
b. Dentro de ella una opcin Archivo llamada menuArchivo.
c. Dentro de la opcin Archivo, introduce los siguientes elementos:
i. Una opcin Abrir, llamada menuAbrir.
ii. Un separador (llmalo como quieras)
iii. Una opcin Salir, llamada menuSalir.

33. Una vez hecho esto tu formulario tendr la siguiente forma:



34. Si ejecutas el programa el men se ver as:





35. Si observas el Inspector, tendr un aspecto parecido al siguiente:




36. Para que al pulsar la opcin Abrir de nuestro programa aparezca el
dilogo de apertura de ficheros, es necesario aadir a nuestro programa
un objeto del tipo JFileChooser.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

62 Programacin de eventos | By reycito2011


Los objetos JFileChooser se aadirn el la zona de Otros
Componentes del inspector.


37. Haz clic con el derecho sobre la zona de otros componentes y activa la
opcin Agregar desde Paleta Swing JFileChooser:







38. Aparecer entonces un objeto JFileChooser dentro de Otros
Componentes. Aprovecha para cambiarle el nombre a este objeto. Su
nombre ser elegirFichero.

El inspector quedar as:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

63 Programacin de eventos | By reycito2011

39. Una vez hecho esto, ya podemos programar la opcin Abrir del men.
Activa el evento actionPerformed de la opcin Abrir y programa dentro
de l lo siguiente:




int resp;

resp=elegirFichero.showOpenDialog(this);

if (resp==JFileChooser.APPROVE_OPTION) {

JOptionPane.showMessageDialog(null,elegirFichero.getSele
ctedFile().toString());

} else if (resp==JFileChooser.CANCEL_OPTION) {

JOptionPane.showMessageDialog(null,"Se puls la opcin
Cancelar");
}


40. Ejecuta el cdigo y prueba la opcin Abrir del men. Prueba a elegir
algn fichero y abrirlo. Prueba a cancelar la ventana de apertura. Etc

41. Analicemos el cdigo anterior:

int resp;

resp=elegirFichero.showOpenDialog(this);

- Estas dos lneas crean una variable entera resp (respuesta) y a
continuacin hacen que se muestre la ventana Abrir Fichero. Observa
que para conseguirlo hay que usar el mtodo showOpenDialog del
objeto elegirFichero. Este mtodo lleva como parmetro la ventana
actual (this)

- El mtodo showOpenDialog no solo muestra la ventana Abrir Fichero
sino que tambin devuelve un valor entero segn el botn pulsado por el
usuario en esta ventana. Esto es: botn Abrir o botn Calcelar.

- Se pueden usar dos if para controlar lo que sucede si el usuario puls el
botn Abrir o el botn Calcelar de la ventana Abrir Fichero:

if (resp==JFileChooser.APPROVE_OPTION) {

JOptionPane.showMessageDialog(null,elegirFichero.getSele
ctedFile().toString());

} else if (resp==JFileChooser.CANCEL_OPTION) {
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

64 Programacin de eventos | By reycito2011


JOptionPane.showMessageDialog(null,"Se puls la opcin
Cancelar");
}

- En el primer if se compara la variable resp con la constante
JFileChooser.APPROVE_OPTION, para saber si el usuario puls Abrir.

- En el segundo if se compara la variable resp con la constante
JFileChooser.CANCEL_OPTION, para saber si el usuario puls
Calcelar.

- En el caso de que el usuario pulsara Abrir, el programa usa el mtodo
getSelectedFile del objeto elegirFichero para recoger el camino del
fichero elegido. Este camino debe ser convertido a cadena con el
mtodo toString.

- El programa aprovecha esto para mostrar dicho camino en pantalla
gracias al tpico JOptionPane.

- En el caso del que el usuario pulsara el botn Cancelar el programa
muestra un mensaje indicndolo.

42. Hay que volver a dejar claro que el cuadro de dilogo Abrir realmente
no abre ningn fichero, sino que devuelve el camino del fichero elegido
usando el cdigo:

elegirFichero.getSelectedFile().toString()

Luego queda en manos del programador el trabajar con el fichero
correspondiente de la forma que desee.



CONCLUSIN

Los objetos JFileChooser permiten mostrar el cuadro de dilogo Abrir
Fichero o Guardar Fichero.

Estos objetos no abren ni guardan ficheros, solo permiten al usuario
elegir el fichero a abrir o guardar de forma sencilla.

El JFileChooser devuelve el camino del fichero elegido, y luego el
programador trabajar con dicho fichero como mejor le interese.

EJERCICIO GUIADO. JAVA: PANELES DE DESPLAZAMIENTO


Paneles de Desplazamiento

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

65 Programacin de eventos | By reycito2011

Llamaremos paneles de desplazamiento a paneles que contienen elementos
tan grandes que no pueden ser mostrados en su totalidad. Estos paneles
contienen entonces dos barras de desplazamiento que permiten visualizar el
interior del panel de desplazamiento correctamente.

Por ejemplo, un panel de desplazamiento podra contener una imagen tan
grande que no se viera entera:

Los paneles de desplazamiento son objetos del tipo JScrollPane.


Ejercicio guiado 1

43. Vamos a practicar con los JScrollPane. Para ello, crea un nuevo
proyecto.

44. Aade en el proyecto un JScrollPane.

45. Un JScrollPane, por s mismo, no contiene nada. Es necesario aadir
dentro de l el objeto que contendr. Para nuestro ejemplo aadiremos
dentro de l una etiqueta (JLabel)

46. El formulario debe tener ahora este aspecto:




47. Si observas el Inspector vers claramente la distribucin de los objetos:



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

66 Programacin de eventos | By reycito2011

Observa como tienes un JScrollPane que contiene una etiqueta.


48. Aprovechemos el Inspector para cambiar el nombre a cada objeto. Al
JScrollPane le llamaremos scpImagen y a la etiqueta etiImagen.




49. Elimina el texto contenido en la etiqueta etiImagen. Solo tienes que
borrar el contenido de la propiedad text.

50. Luego introduciremos una imagen dentro de la etiqueta, a travs de la
propiedad icon. La imagen la introduciremos desde fichero, y elegiremos
la siguiente imagen de tu disco duro:

Mis Documentos / Mis Imgenes / Imgenes de Muestra / Nenfares.jpg

51. Esta imagen es tan grande que no se podr ver entera dentro del panel
de desplazamiento. Ejecuta el programa y observars el uso de las
barras de desplazamiento dentro del panel.







52. Puedes mejorar el programa si agrandas el panel de desplazamiento de
forma que ocupe todo el formulario:
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

67 Programacin de eventos | By reycito2011




De esta forma, cuando ejecutes el programa, al agrandar la ventana, se
agrandar el panel de desplazamiento, vindose mejor la imagen
contenida.


53. Ejecuta el programa y comprubalo.



Ejercicio guiado 2

Los JScrollPane no solo estn diseados para contener imgenes. Pueden
contener cualquier otro elemento. Vamos a ver, con otro proyecto de ejemplo,
otro uso de los JScrollPane.


1. Crea un nuevo proyecto.

2. Aade a la ventana una etiqueta con el texto Ejemplo 2 de JScrollPane
y un JScrollPane de forma que est asociado a los lmites de la ventana.
Observa la imagen:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

68 Programacin de eventos | By reycito2011




3. Ahora aade dentro del JScrollPane un panel normal (JPanel). En la
ventana no notars ninguna diferencia, pero en el Inspector debera
aparecer esto:



4. Como ves, el JScrollPane contiene a un objeto JPanel.

5. Aprovechemos para cambiar el nombre a ambos objetos. Al JScrollPane
lo llamaremos scpDatos y al JPanel lo llamaremos panelDatos.




6. Los JPanel son objetos contenedores. Es decir, pueden contener otros
objetos como por ejemplo botones, etiquetas, cuadros de texto, etc.

Adems, los JPanel pueden ser diseados independientemente de la
ventana. Haz doble clic sobre el panelDatos en el Inspector y observa lo
que ocurre:


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

69 Programacin de eventos | By reycito2011

7. En la pantalla aparecer nicamente el JPanel, para que puede ser
diseado aparte de la ventana completa:



8. Para distinguirlo de lo que es en s la ventana, haremos las siguientes
cosas con el panel:

- Cambia el color de fondo y asgnale un color verde.
- Aade en l una etiqueta con el texto Panel de Datos.
- Aade varias etiquetas y cuadros de textos correspondientes a los das
de la semana.
- Agranda el panel.

El panel debera quedar as. Toma como referencia esta imagen:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

70 Programacin de eventos | By reycito2011



Es muy interesante que observes el Inspector. En l podrs observar la
distribucin de los objetos en la ventana. Podrs ver como el JFrame
contiene un JScrollPane (scpDatos) que a su vez contiene un JPanel
(panelDatos) que a su vez contiene una serie de etiquetas y cuadros de
textos a los que an no les hemos asignado un nombre:



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

71 Programacin de eventos | By reycito2011


9. Haz doble clic sobre el JFrame (en el Inspector) para poder ver
globalmente la ventana. En la pantalla debera aparecer esto:



Como ves, el JPanel contenido en el JScrollPane es ms grande que l,
por lo que no se podr visualizar completamente. Ser necesario usar
las barras de desplazamiento del JScrollPane.

10. Ejecuta el programa para entender esto ltimo.






CONCLUSIN

Los objetos JScrollPane son paneles de desplazamiento. Estos paneles
pueden contener objetos mayores que el propio panel de desplazamiento.
Cuando esto sucede, el panel muestra barras de desplazamiento para
poder visualizar todo el contenido del panel.

Los JScrollPane son ideales para mostrar imgenes, paneles y otros
elementos cuyo tamao pueda ser mayor que la propia ventana.

EJERCICIO GUIADO. JAVA: VARIABLES GLOBALES


Variables Globales / Propiedades de la Clase

Las propiedades de la clase en java es el equivalente a las variables globales
en lenguajes estructurados como el C.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

72 Programacin de eventos | By reycito2011


Una propiedad es una variable que puede ser accedida desde cualquier evento
programado. Esta variable se inicializa a un valor cuando se ejecuta el
programa y los distintos eventos pueden ir cambiando su valor segn se
necesite.

Veamos un ejemplo para entender el funcionamiento de las propiedades de la
clase / variables globales.


Ejercicio guiado 1

1. Crea un nuevo proyecto llamado ProyectoParking. Dentro de l aade
un paquete llamado paqueteParking. Y finalmente aade un JFrame
llamado Parking. El aspecto de tu proyecto ser el siguiente:




2. Tu clase principal es la clase Parking.

3. Se pretende hacer un pequeo programa que controle los coches que
van entrando y van saliendo de un parking. En todo momento el
programa debe decir cuantos coches hay dentro del parking. Para ello
debes crear una ventana como la que sigue:


4. Esta ventana contiene lo siguiente:

i. Un botn Entr un coche llamado btnEntro.
Clase Principal
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

73 Programacin de eventos | By reycito2011

ii. Un botn Sali un coche llamado btnSalio.
iii. Un botn Reiniciar llamado btnReiniciar.
iv. Una etiqueta con el texto Coches en el Parking.
v. Una etiqueta con borde llamada etiCoches que contenga
un 0.


5. Se pretende que el programa funcione de la siguiente forma:

a. Cuando el usuario pulse el botn Entr un coche, el nmero de
coches del parking aumenta en 1, mostrndose en la etiqueta
etiCoches.
b. Si el usuario pulsa el botn Sali un coche, el nmero de coches
del parking disminuye en 1, mostrndose en la etiqueta
etiCoches.
c. El botn Reiniciar coloca el nmero de coches del parking a 0.


6. Para poder controlar el nmero de coches en el Parking, es necesario
que nuestra clase principal Parking tenga una propiedad (variable global)
a la que llamaremos coches. Esta variable ser entera (int).

Esta variable contendr en todo momento los coches que hay
actualmente en el Parking. Esta variable podr ser usada desde
cualquier evento.

7. Para crear una variable global haz clic en el botn Origen para acceder
al cdigo:



8. Luego busca, al comienzo del cdigo una lnea que comenzar por

public class

Seguida del nombre de tu clase principal Parking.

Debajo de dicha lnea es donde se programarn las propiedades de la
clase (las variables globales)
Aqu se declaran las variables
globales, tambin llamadas
propiedades de la clase.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

74 Programacin de eventos | By reycito2011



9. En dicho lugar declarars la variable coches de tipo int:




10. Cuando el programa arranque, ser necesario que la variable global
coches tenga un valor inicial. O dicho de otra forma, ser necesario
inicializar la variable. Para inicializar la variable iremos al constructor.
Aade lo siguiente al cdigo:





Inicializamos a cero ya que se supone que cuando arranca el programa
no hay ningn coche dentro del parking.



Inicializacin de la propiedad
coches.
Declaracin de una variable
global int llamada coches.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

75 Programacin de eventos | By reycito2011

11. Ahora que ya tenemos declarada e inicializada la variable global coches,
esta puede ser usada sin problemas desde cualquier evento que
programemos.

Por ejemplo, empezaremos programando la pulsacin del botn Entr
un coche. Acceda a su evento actionPerformed y programe esto:

coches=coches+1;
etiCoches.setText(+coches);

Como ves, se le aade a la variable coches uno ms y luego se coloca
su valor actual en la etiqueta.

12. Ejecuta el programa y prueba este botn varias veces.



13. Ahora programaremos el botn Sali un coche de la siguiente forma:


if (coches>0) {
coches=coches-1;
etiCoches.setText(+coches);
}

Como ves, se accede igualmente a la propiedad coches pero esta vez
para restarle una unidad. Luego se muestra el valor actual de coches en
la etiqueta correspondiente.

Se usa un if para controlar que no pueda restarse un coche cuando el
parking est vaco. (Si hay cero coches en el parking no se puede restar
uno)

Pulsas, y aparece aqu el valor de
la propiedad coches.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

76 Programacin de eventos | By reycito2011


14. Ejecuta el programa y prueba los dos botones. Observa como la
cantidad de coches del parking aumenta o disminuye.





Lo realmente interesante de esto es que desde dos eventos distintos (desde
dos botones) se puede usar la variable coches. Esto es as gracias a que ha
sido creada como variable global, o dicho de otro modo, ha sido creada
como propiedad de la clase Parking.


15. Finalmente se programar el botn Reiniciar. Este botn, al ser pulsado,
debe colocar la propiedad coches a cero. Programa dentro de su
actionPerformed lo siguiente:

coches=0;
etiCoches.setText(0);

Simplemente introduzco el valor cero en la variable global y actualizo la
etiqueta.

16. Ejecuta el programa y comprueba el funcionamiento de este botn.



CONCLUSIN

Las variables globales, tambin llamadas propiedades de la clase, son
variables que pueden ser usadas desde cualquier evento del programa.
Estas variables mantienen su valor hasta que otro evento lo modifique.
Al pulsar aqu aumentas en uno la
propiedad coches.

Al pulsar aqu disminuyes en uno
la propiedad coches.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

77 Programacin de eventos | By reycito2011


Las variables globales se declaran justo despus de la lnea public class.

La inicializacin de estas variables se realiza en el constructor.

EJERCICIO GUIADO. JAVA: CENTRALIZAR CDIGO


El problema de la repeticin de cdigo

Es muy habitual en Java que varios eventos tengan que ejecutar el mismo
cdigo. En este caso se plantea la necesidad de copiar y pegar ese cdigo en
los distintos eventos a programar:











Esta es una mala forma de programacin, ya que se necesitara modificar el
cdigo, sera necesario realizar la modificacin en cada copia del cdigo. Es
muy fcil que haya olvidos y aparezcan errores en el programa que luego son
muy difciles de localizar.

Lo mejor es que el cdigo que tenga que ser ejecutado desde distintos eventos
aparezca solo una vez, y sea llamado desde cada evento:











Veamos algunos ejemplos en los que el cdigo se puede repetir y como evitar
esta repeticin.


Ejercicio guiado 1

54. Crea un nuevo proyecto en java que se llame ProyectoCalculos. Este
proyecto tendr un paquete llamado PaqueteCalculos. Y dentro de l
Evento 1
Evento 2
Evento 3
Cdigo A
Cdigo A
Cdigo A
Evento 1
Evento 2
Evento 3
Cdigo A
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

78 Programacin de eventos | By reycito2011

crear un JFrame llamado VentanaCalculos. El proyecto tendr el
siguiente aspecto:




55. La VentanaCalculos debe estar diseada de la siguiente forma:



Esta ventana contiene los siguientes elementos:

- Una barra de mens a la que puede llamar menuBarra.
- La barra de mens contiene un JMenu con el texto Calcular y que se
puede llamar menuCalcular
- El menuCalcular contendr tres JMenuItem, llamados respectivamente:
menuSumar, menuRestar, menuBorrar y con los textos Sumar,
Restar y Borrar.
- Una etiqueta con el texto Nmero 1. (no importa su nombre)
- Una etiqueta con el texto Nmero 2. (no importa su nombre)
- Un cuadro de texto con un 0 y con el nombre txtNumero1.
- Un cuadro de texto con un 0 y con el nombre txtNumero2.
- Una etiqueta con el nombre etiResultado.
- Un botn Sumar con el nombre btnSumar.
- Un botn Restar con el nombre btnRestar.
- Un botn Borrar con el nombre btnBorrar.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

79 Programacin de eventos | By reycito2011

56. Aqu puedes ver la ventana en ejecucin con el men Calcular
desplegado:



57. El objetivo de programa es el siguiente:

a. El usuario introducir dos nmeros en los cuadros de texto.
b. Si pulsa el botn Sumar, se calcular la suma.
c. Si pulsa el botn Restar, se calcular la resta.
d. Si pulsa el botn Borrar, se borrarn ambos cuadros de texto.
e. Si elige la opcin del men Calcular-Sumar entonces se calcular
la suma.
f. Si elige la opcin del men Calcular-Restar entonces se calcular
la resta.
g. Si elige la opcin del men Calcular-Borrar entonces se borrarn
ambos cuadros de texto.
h. Si se pulsa enter en alguno de los dos cuadros de texto se
debera calcular la suma.


58. Este es un ejemplo en el que al activarse uno de varios eventos distintos
se tiene que ejecutar el mismo cdigo. Observa el caso de la suma:











Pulsar Botn Sumar
Activar Calcular Sumar en el men
Pulsar enter en el primer cuadro de texto
Calcular la suma y
mostrarla en la etiqueta
de resultado
Pulsar enter en el segundo cuadro de texto
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

80 Programacin de eventos | By reycito2011




59. Para que el cdigo est centralizado, es decir, que aparezca solo una
vez, ser necesario construir en la clase un mtodo. Un mtodo en java
es el equivalente de una funcin o procedimiento en C. Veamos como
hacerlo:



60. Accede al cdigo de tu programa a travs del botn Origen.




61. Un buen sitio para programar tus procedimientos puede ser debajo del
constructor. Puedes distinguir fcilmente al constructor porque tiene el
mismo nombre que la clase que ests programando, o dicho de otro
modo, tiene el mismo nombre que la ventana que ests programando:
VentanaCalculos.








62. Se va a programar un procedimiento que se encargue de recoger los
valores de los cuadros de texto. Calcular la suma de dichos valores, y
luego mostrar la suma en la etiqueta de resultados.

Los procedimientos en java tienen prcticamente la misma estructura
que en C. Programe lo siguiente:


Este es el constructor

Este es un buen sitio para crear
tus propios procedimientos
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

81 Programacin de eventos | By reycito2011




63. Si observas el cdigo, es el tpico procedimiento de C, cuya cabecera
comienza con void y el nombre que le hayas asignado (en nuestro caso
Sumar)

void Sumar() {
....
}

Si estudias las lneas del cdigo, vers que lo que hace es recoger el
contenido de los dos cuadros de texto en dos variables de cadena
llamadas cad1 y cad2.

Luego convierte dichas cadenas en nmeros que almacena en dos
variables enteras llamadas a y b.

Finalmente calcula la suma en una variable s y presenta el resultado en
la etiqueta etiResultado.

64. Hay que destacar que este cdigo no pertenece ahora mismo a ningn
evento en concreto, por lo que no tiene efecto ninguno sobre el
programa. Ser necesario pues asociar los eventos correspondientes
con este procedimiento.

65. Interesa que al pulsar el botn Sumar se ejecute la suma, as pues
entre en el evento actionPerformed del botn Sumar y aada la
siguiente lnea:

Este es el procedimiento
que tienes que introducir en
el programa.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

82 Programacin de eventos | By reycito2011

Sumar();

66. Como tambin interesa que al pulsar la opcin del men Calcular-
Sumar se ejecute la suma, entre en el evento actionPerformed de la
opcin del men Sumar y aade de nuevo la siguiente lnea:

Sumar();
67. Tambin se quiere que al pulsar la tecla enter en el cuadro de texto del
nmero 1 se ejecute la suma. Por lo tanto, en el evento actionPerformed
del cuadro de texto txtNumero1 hay que aadir la siguiente lnea:

Sumar();

68. Y como tambin se quiere que al pulsar la tecla enter en el cuadro de
texto del nmero 2 se ejecute la suma, tambin habr que introducir en
su actionPerformed la siguiente lnea:

Sumar();

69. Antes de continuar, ejecute el programa, introduzca dos nmeros, y
compruebe como se calcula la suma al pulsar el botn Sumar, o al
activar la opcin del men CalcularSumar, o al pulsar Enter en el
primer cuadro de texto, o al pulsar Enter en el segundo cuadro de texto.

En cada uno de los eventos hay una llamada al procedimiento Sumar,
que es el que se encarga de realizar la suma.















70. En el caso de la resta sucede igual. Tenemos que varios eventos
distintos deben provocar que se realice una misma operacin. En este
caso tenemos lo siguiente:






actionPerformed btnSumar
actionPerformed menuSumar
actionPerformed txtNumero1
Procedimiento

Sumar()
actionPerformed txtNumero2

Pulsar Botn Restar
Activar Calcular Restar en el men
Calcular la resta y
mostrar el resultado.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

83 Programacin de eventos | By reycito2011




71. Para centralizar el cdigo, crearemos un mtodo Restar que se
encargar de hacer la resta de los nmeros introducidos en los cuadros
de texto. Este mtodo se puede colocar debajo del anterior mtodo
Sumar:






72. El cdigo de este procedimiento es prcticamente idntico al del
procedimiento Sumar, as que no se comentar.

73. Ahora, es necesario que cuando se activen los eventos indicados antes,
estos hagan una llamada al procedimiento Restar para que se efecte la
resta. As pues, entre en el evento actionPerformed del botn Restar y
aada esta lnea de cdigo:

Restar();

74. Igualmente, entre en el evento actionPerformed de la opcin del men
Calcular Restar y aada la misma llamada:

Restar();


Programa este
procedimiento.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

84 Programacin de eventos | By reycito2011

75. Ejecute el programa y compruebe como funciona el clculo de la resta,
da igual que lo haga pulsando el botn Restar o la opcin del men
Restar. Ambos eventos llaman al mismo mtodo:











76. Finalmente se programar el borrado de los cuadros de texto a travs
del botn Borrar y de la opcin del men Borrar. En primer lugar,
programa el siguiente mtodo (puedes hacerlo debajo del mtodo
Restar):







77. Ahora programa las llamadas al procedimiento borrar desde los distintos
eventos. En el evento actionPerformed del botn Borrar y en el evento
actionPerformed de la opcin del men Borrar programa la siguiente
llamada:

Borrar();



actionPerformed btnRestar
actionPerformed menuRestar
Procedimiento

Restar()
Programa el
procedimiento Borrar...
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

85 Programacin de eventos | By reycito2011

78. Ejecuta el programa y prueba su funcionamiento.



CONCLUSIN

En java se pueden programar procedimientos al igual que en C.
Normalmente, estos procedimientos se programarn debajo del
constructor, y tienen la misma estructura que en C.

Se puede llamar a un mismo procedimiento desde distintos eventos,
evitando as la repeticin de cdigo.




EJERCICIO GUIADO. JAVA: LAYOUTS


El problema de la distribucin de elementos en las ventanas

Uno de los problemas que ms quebraderos de cabeza da al programador es
el diseo de las ventanas y la situacin de los distintos componentes en ellas.

Para disear ms cmodamente las ventanas, Java proporciona una serie de
objetos denominados Layouts, que definen la forma que tendrn los elementos
de situarse en las ventanas.

As pues, un Layout define de qu forma se colocarn las etiquetas, botones,
cuadros de textos y dems componentes en la ventana que diseamos.


Ejercicio guiado

Diseo Libre

1. Crea un nuevo proyecto en java.

2. Aade una etiqueta y un botn. Muvelos a la posicin que se indica en
la imagen. Deben aparecer las lneas gua de color azul que se
muestran:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

86 Programacin de eventos | By reycito2011



3. Las lneas azules que aparecen indican con qu otro elemento est
relacionado un componente de la ventana. La situacin de un elemento
depender siempre de la situacin del otro.

Dicho de otra forma, las lneas azules indican las distancias que siempre
se respetarn. Observa la siguiente imagen:





4. Ejecuta el programa y prueba a ensanchar (o achicar) la ventana por el
lado derecho y por el lado inferior. Debes observar como la etiqueta y el
botn mantienen sus distancias relativas entre s y con los bordes
derecho e inferior de la ventana.

Tanto el botn como la
etiqueta estarn siempre
a esta distancia del borde
derecho de la ventana
El botn siempre estar a
esta distancia de la
etiqueta
El botn siempre estar a
esta distancia del borde
inferior de la ventana
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

87 Programacin de eventos | By reycito2011





5. Este comportamiento de los elementos en la ventana viene dado por una
opcin del NetBeans llamada Diseo Libre (Free Design)

El Diseo Libre permite que los elementos de una ventana mantengan
una distribucin relativa da igual el tamao que tenga la ventana. Dicho
de otra forma, los elementos se redistribuyen al cambiar el tamao de la
ventana.

El problema del Diseo Libre es el poco control que se tiene sobre los
elementos que se aaden a la ventana.

Se puede observar como a veces los elementos no se colocan en la
posicin que deseamos o como cambian de tamao de forma
inesperada. Todo esto es debido a la necesidad de dichos elementos de
mantener unas distancias relativas con otros elementos de la ventana.
Cuantos ms elementos tengamos en una ventana, ms difcil ser el
colocarlos usando el Diseo Libre.
AboluteLayout. Posiciones Absolutas


6. El Diseo Libre es la opcin que est activada por defecto cuando se
crea un proyecto en NetBeans. Sin embargo, esta opcin se puede
cambiar por distintos Layouts o Distribuciones.

7. En el Inspector de tu proyecto pulsa el botn derecho del ratn sobre el
objeto JFrame y activa la opcin Establecer Disposicin
AbsoluteLayout.

Siempre se mantienen las
distancias relativas
definidas en el diseo
aunque el tamao de la
ventana cambie.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

88 Programacin de eventos | By reycito2011




8. El Inspector tendr la siguiente forma ahora:



Como ves, aparece un objeto dentro del JFrame llamado
AbsoluteLayout. Este objeto define otra forma de situar los elementos en
la ventana. Concretamente, la distribucin AbsoluteLayout permite al
programador colocar cada elemento donde l quiera, sin restricciones,
sin tener en cuenta distancias relativas.


9. Sita la etiqueta y el botn donde quieras. Observa que no aparece
ninguna lnea gua que defina distancias relativas:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

89 Programacin de eventos | By reycito2011




10. La ventana de definir una distribucin AbsoluteLayout es la facilidad para
colocar cada elemento en la ventana (no tendrs los problemas del
Diseo Libre). Sin embargo, la desventaja es que los elementos no
mantienen una distribucin relativa respecto al tamao de la ventana.

11. Ejecuta el programa y reduce su ancho. Observa lo que ocurre:



Vers que los elementos de la ventana son inamovibles aunque la
ventana cambie de tamao. En cambio, en el Diseo Libre los elementos
intentaban siempre estar dentro de la ventana.



Distribucin en lnea. FlowLayout

12. Practiquemos ahora con otro tipo de distribucin. Accede al Inspector y
pulsa el botn derecho del ratn sobre el objeto JFrame. Activa la opcin
Establecer Disposicin FlowLayout.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

90 Programacin de eventos | By reycito2011




13. Observa como el layout AbsoluteLayout es sustituido por la distribucin
FlowLayout. Una elemento solo puede tener un tipo de distribucin a la
vez.



14. Observa la ventana. Los elementos se han colocado uno detrs de otro.
Se han colocado en lnea. Esto es lo que hace el FlowLayout. Fuerza
a los distintos elementos a que se coloquen en fila.



15. Si seleccionas el FlowLayout en el Inspector, podrs acceder a sus
propiedades (los layout son objetos como los dems) Una de las
propiedades del FlowLayout se llama alineacin y permite que los
elementos estn alineados a la izquierda, derecha o centro. El
FlowLayout tiene una alineacin centro por defecto.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

91 Programacin de eventos | By reycito2011



16. El FlowLayout no permite controlar la posicin de los elementos en la
ventana, pero s procura que los elementos estn siempre visibles
aunque la ventana se cambie de tamao. Ejecuta el programa y observa
el comportamiento del FlowLayout al agrandar o achicar la ventana:





Distribucin en rejilla. GridLayout


17. Otra distribucin que se puede usar es la distribucin GridLayout. Esta
distribucin coloca a los elementos en filas y columnas, como si
formaran parte de una tabla. Al aadir esta distribucin es necesario
indicar cuantas filas y columnas tendr la rejilla.

18. Cambia el layout del JFrame por un GridLayout:


En el FlowLayout, los elementos
intentan siempre estar dentro de
la ventana, aunque esta se
cambie de tamao
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

92 Programacin de eventos | By reycito2011





19. Marca el GridLayout y cambia sus propiedades Filas y Columnas.
Asigna a la propiedad Filas un 2 y a la propiedad Columnas un 3.




20. Al asignar 2 filas y 3 columnas al GridLayout, conseguiremos que los
elementos de la ventana se distribuyan en una tabla como la siguiente:








Los distintos elementos se adaptarn al espacio que tienen asignado, y
cambiarn de tamao.

21. Ya que solo tienes dos elementos en la ventana (una etiqueta y un
botn), aade otros cuatro elementos ms (cuatro botones) para
observar como se distribuyen en la cuadrcula.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

93 Programacin de eventos | By reycito2011

22. En un GridLayout, los elementos estarn situados siempre en una casilla
de la rejilla, ocupando todo su espacio. El programador no tiene mucho
control sobre la disposicin de los elementos.

23. Ejecuta el programa y agranda y achica la ventana. Observa como los
elementos siempre mantienen su disposicin en rejilla y siempre
aparecen dentro de la ventana aunque el tamao de esta vare.




BorderLayout


24. Otra de las distribuciones posibles es la llamada BorderLayout. Esta
distribucin coloca los elementos de la ventana en cinco zonas:

i. Zona norte (parte superior de la ventana)
ii. Zona sur (parte inferior de la ventana)
iii. Zona este (parte derecha de la ventana)
iv. Zona oeste (parte izquierda de la ventana)
v. Zona centro.


25. Haz clic con el derecho sobre el JFrame y asigna una distribucin
BorderLayout.

Con un GridLayout los
elementos aparecen en
filas y columnas.

Siempre aparecen dentro
de la ventana aunque el
tamao de esta cambie.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

94 Programacin de eventos | By reycito2011





26. Para poder entender el funcionamiento del BorderLayout, se recomienda
que el JFrame contenga nicamente 5 botones (elimine los elementos
que tiene ahora y aada cinco botones)

La ventana tendr un aspecto parecido al siguiente:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

95 Programacin de eventos | By reycito2011

27. Como se puede observar, cada botn se ha colocado en una zona, y su
tamao ha variado hasta ocupar la zona entera. Tenemos un botn en el
norte, otro al sur, uno al este, otro al oeste y uno en el centro.

El programador no tiene mucho control sobre la disposicin de los
elementos en la ventana al usar esta distribucin.


28. Ejecuta el programa y observa como los elementos siempre se
mantienen dentro de la ventana aunque esta cambie de tamao.






CONCLUSIN

El diseo de la ventana viene definido por los Layouts o distribuciones.

Diseo Libre Esta distribucin viene activada por defecto en el
NetBeans, y define una distribucin de componentes en la que se
respetan las distancias entre ellos cuando la ventana cambia de tamao.

AbsoluteLayout En esta distribucin el programador puede colocar
cada elemento en la posicin que desee de la ventana. Los distintos
elementos mantienen su posicin aunque la ventana cambie de tamao,
lo que puede hacer que si la ventana se reduce de tamao algunos
elementos no se vean.

FlowLayout En esta distribucin los elementos se colocan uno detrs
de otro. Los elementos intentarn estar dentro de la ventana aunque esta
se reduzca de tamao.

GridLayout Esta distribucin coloca a los elementos en filas y
columnas. Los elementos siempre estarn dentro de la ventana aunque
esta se reduzca de tamao.

Con un GridLayout los
elementos aparecen
zonas.

Siempre aparecen dentro
de la ventana aunque el
tamao de esta cambie.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

96 Programacin de eventos | By reycito2011

BorderLayout Esta distribucin coloca a los elementos en zonas. Los
elementos siempre estarn dentro de la ventana aunque esta se reduzca
de tamao.




EJERCICIO GUIADO. JAVA: LAYOUTS Y PANELES


Tcnicas de distribucin de elementos en las ventanas

A la hora de disear una ventana se tienen en cuenta dos cosas:

- La facilidad a la hora de colocar muchos componentes en la ventana.
- Que dichos componentes estn siempre visibles independientemente del
tamao de la ventana.

La distribucin AbsoluteLayout por ejemplo nos da mucha facilidad a la hora de
colocar los elementos en la ventana, pero sin embargo los componentes no se
adaptan a los cambios de tamao.

El Diseo Libre en cambio permite crear ventanas en las que sus componentes
se recolocan segn el tamao de estas pero a cambio crece la dificultad del
diseo.

Para aprovechar las ventajas de los distintos layouts y minimizar sus
inconvenientes, es habitual en java crear una estructura de paneles cada uno
de ellos con un layout distinto, segn nuestras necesidades.

Normalmente, al JFrame se le asigna un layout que lo divida en zonas, como
puede ser el BorderLayout o el GridLayout. Luego, dentro de cada una de estas
zonas se introduce un panel (objeto JPanel). Y a cada uno de estos paneles se
le asigna el layout que ms le convenga al programador (FlowLayout, Diseo
Libre, AbsoluteLayout, etc) Finalmente, dentro de cada panel se aaden los
componentes de la ventana.














JFrame
(BorderLayout o GridLayout)
JPanel 1
(Diseo Libre, AbsoluteLayout o
FlowLayout)
JPanel 2
(Diseo Libre, AbsoluteLayout o
FlowLayout)
Componentes Componentes
etc
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

97 Programacin de eventos | By reycito2011




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

98 Programacin de eventos | By reycito2011

Ejercicio guiado


79. Crea un nuevo proyecto en java.

Se pretende crear un proyecto con una ventana de diseo complejo.
Para ello sigue los siguiente pasos:

80. En primer lugar, asigna un BorderLayout al JFrame:



81. El BorderLayout divide la ventana principal en zonas. Ahora aade un
panel (JPanel) a la zona norte de la ventana.




82. Cambia el nombre a este panel y llmalo panelTitulo, ya que contendr
el nombre del programa.


Panel en la zona norte.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

99 Programacin de eventos | By reycito2011



83. Aade otro panel, esta vez a la parte central. El panel se llamar
panelDatos:






84. Aade un nuevo panel en la parte sur de la ventana. Su nombre ser
panelEstado.


NOTA. A veces resulta complicado agregar un panel en una zona de la
ventana cuando tenemos un BorderLayout. Puedes entonces hacer clic con
el derecho sobre JFrame en el Inspector y activar la opcin Agregar desde
paleta Swing JPanel.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

100 Programacin de eventos | By reycito2011




85. Si el panel no se coloca en el sitio deseado, se puede seleccionar en el
Inspector y activar su propiedad Direccin, e indicar la zona donde se
quiere colocar:



El panel debera estar situado finalmente en el sur de la ventana:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

101 Programacin de eventos | By reycito2011




86. El Inspector tendr la siguiente forma ahora:





87. Aade ahora tu solo un panel en la zona oeste llamado panelBotonera y
otro en la zona esta llamado panelVerificacion. El Inspector debera
tener la siguiente forma al finalizar:



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

102 Programacin de eventos | By reycito2011

88. Cada panel puede ser diseado de forma individual, simplemente
haciendo doble clic sobre l. As pues, empezaremos diseando el panel
panelBotonera. Haz doble clic sobre l.
89. En la parte izquierda del NetBeans aparecer nicamente el
panelBotonera. Agrndalo para que tenga la siguiente forma:



90. A cada panel se le puede asignar un Layout distinto. A este panel le
asignaremos un AbsoluteLayout para poder colocar cada elemento
donde quiera. Asigna un AbsoluteLayout al panel haciendo clic con el
derecho sobre l en el Inspector. El Inspector debera quedar as:




91. Ahora aade cuatro botones al panel. Observa como tienes libertad total
para colocar cada botn donde quieras. Procura que el panel quede as:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

103 Programacin de eventos | By reycito2011



(No nos vamos a preocupar en este ejercicio de los nombres de los
componentes)
92. Ahora disea el panel panelVerificacin haciendo doble clic sobre l.

93. Asgnale tambin un layout AbsoluteLayout.

94. Coloca en l cuatro casillas de verificacin. El aspecto del panel al
terminar debe ser parecido al siguiente:




Y el Inspector debe tener un estado similar a este:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

104 Programacin de eventos | By reycito2011




95. Ahora se disear el panelTitulo. Haz doble clic sobre l.

96. En este caso se le aadir un FlowLayout. Recuerda que este layout
hace que cada elemento se coloque uno detrs de otro.

97. Aade al panel dos etiquetas como las que siguen. Ponle un borde a
cada una:



El Inspector tendr este aspecto en lo que se refiere al panelTitulo...





98. El panelEstado lo disearemos sin asignar ningn layout, es decir,
usando el Diseo Libre. En l aadiremos tres etiquetas de forma que
estas mantengan una distancia relativa con respecto al lmite derecho
del panel. Dicho de otra forma, que siempre estn pegadas a la parte
derecha del panel:



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

105 Programacin de eventos | By reycito2011

Observa las lneas gua. Indican que las etiquetas dependen de la parte
derecha del panel. A su vez cada una depende de la otra. Es como si
estuvieran enganchadas, como los vagones de un tren.


99. El panelDatos lo vamos a complicar un poco. Haz doble clic sobre l
para disearlo y asgnale un GridLayout.




100. Marca el GridLayout y asgnale 2 filas y 2 columnas, para que
interiormente tenga forma de una rejilla como esta:





101. A cada una de las divisiones del GridLayout del panelDatos le
asignaremos un nuevo panel. Aade al panelDatos cuatro paneles. Esto
lo puedes hacer fcilmente haciendo clic con el botn derecho del ratn
sobre el panelDatos en el Inspector y eligiendo la opcin Aadir desde
paleta Swing JPanel.

El aspecto del inspector debera ser como el que sigue, en lo que se
refiere al panelDatos:



102. Asignaremos a cada uno de los cuatro paneles los siguientes
nombres: panelEtiqueta1, panelCuadro1, panelEtiqueta2, panelCuadro2.
El panel quedar as en el Inspector.




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

106 Programacin de eventos | By reycito2011

As pues, el panel panelDatos tiene forma de rejilla con cuatro celdas, y
en cada celda hay un panel. Puede imaginarse el panelDatos as:

panelDatos


PanelEtiqueta1 PanelCuadro1
PanelEtiqueta2 PanelCuadro2


103. Ahora aada al panelEtiqueta1 y al panelEtiqueta2 sendas
etiquetas. Y al panelCuadro1 y panelCuadro2 sendos cuadros de textos.
El panel panelDatos debe quedar as:





104. Finalmente ejecuta el programa y comprueba como se comportan
los elementos segn el panel donde se encuentre y el layout asignado a
cada uno.




CONCLUSIN

Para el diseo de ventanas muy complejas, ser suelen definir layouts que
dividan en zonas el JFrame, como por ejemplo el BorderLayout o el
GridLayout.

Dentro de cada una de dichas zonas se aade un JPanel, al que se le
asigna un AbsoluteLayout, un FlowLayout o se mantiene el Diseo Libre.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

107 Programacin de eventos | By reycito2011

Es posible asignar a un panel un layout de zonas, como el GridLayout, y,
a su vez, introducir en l nuevos paneles, y as sucesivamente.




EJERCICIO GUIADO. JAVA: DILOGOS


Cuadros de Dilogo

Un cuadro de dilogo es un cuadro con opciones que aparece normalmente
cuando se activa una opcin del men principal del programa.

Los cuadros de dilogo tienen forma de ventana aunque no poseen algunas
caractersticas de estas. Por ejemplo, no pueden ser minimizados ni
maximizados.

Los cuadros de dilogo, aparte de las opciones que muestran, suelen contener
dos botones tpicos: el botn Aceptar y el botn Cancelar. El primero de ellos
da por vlidas las opciones elegidas y cierra el cuadro de dilogo. El segundo
simplemente cierra el cuadro de dilogo sin hacer ninguna modificacin.

He aqu algunos ejemplos de cuadros de dilogo del programa Word:

















21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

108 Programacin de eventos | By reycito2011







Para crear cuadros de dilogo en Java, se usa un tipo de objetos llamado
JDialog. Estos objetos pueden ser diseados como si fueran ventanas, aunque
representan realmente cuadros de dilogo.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

109 Programacin de eventos | By reycito2011

Ejercicio guiado


105. Crea un nuevo proyecto en java.

106. Disea el JFrame de forma que la ventana tenga el siguiente
aspecto:



Los elementos de la ventana tendrn los siguientes nombres:

- Cuadro de texto de unidades: txtUnidades.
- Cuadro de texto de precio: txtPrecio.
- Etiqueta con borde del total: etiTotal.
- Botn Calcular: btnCalcular.
- Botn Configuracin: btnConfiguracion.


107. Se pretende que cuando se pulse el botn Calcular se calcule el
total de la venta (esto se har luego) Para hacer el clculo se tendrn en
cuenta el IVA y el Descuento a aplicar. Estos dos valores sern variables
globales, ya que se usarn en distintos lugares del programa.

108. As pues entra en el cdigo y declara una variable global iva y otra
descuento tal como se indica a continuacin (recuerda que las variables
globales se colocan justo despus de la lnea donde se define la clase
principal public class):

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

110 Programacin de eventos | By reycito2011







109. Cuando el programa arranque, interesar que el iva por defecto
sea 0, y que el descuento por defecto sea 0 tambin, as que en el
constructor, inicializaremos las variables globales iva y descuento a 0:




110. Estamos ya preparados para programar el botn btnCalcular.
Entra en su actionPerformed y all se programar la realizacin del
clculo de la siguiente forma:

double unidades;
double precio;
double total; //total
double cantiva; //cantidad iva
double cantdes; //cantidad descuento
double totalsiniva; //total sin iva

//Recojo los datos de los cuadros de textos
(convirtiendolos a nmeros)
unidades =
Double.parseDouble(txtUnidades.getText());
Variables
globales
Inicializacin de
variables
globales
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

111 Programacin de eventos | By reycito2011

precio = Double.parseDouble(txtPrecio.getText());

//Calculo el total sin iva, la cantidad de iva y la
cantidad de descuento
totalsiniva=precio*unidades;
cantiva=totalsiniva*iva/100;
cantdes=totalsiniva*descuento/100;

//Ahora calculo el precio total:
total = totalsiniva+cantiva-cantdes;

//Coloco el total en la etiqueta:
etiTotal.setText(""+total);


111. Puedes ya ejecutar el programa y comprobar que el botn
Calcular funciona, aunque el clculo que realiza lo hace con un iva 0 y
un descuento 0.

112. A continuacin se programar el botn Configuracin de forma
que nos permita decidir qu iva y qu descuento queremos aplicar. Este
botn mostrar un CUADRO DE DILOGO que permita al usuario
configurar estos datos.





113. Para aadir un cuadro de dilogo al proyecto, se tiene que aadir
un objeto del tipo JDialog sobre el JFrame.




114. Los JDialog son objetos ocultos, es decir, objetos que se colocan
en la parte del Inspector llamada Otros Componentes, al igual que
sucede con los mens contextuales o los JFileChooser. Observa tu
inspector, all vers el JDialog que has aadido:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

112 Programacin de eventos | By reycito2011



115. Cmbiale el nombre. Lo llamaremos dialogoConfiguracion.

116. Los dilogos normalmente traen por defecto el layout
BorderLayout. Para nuestro ejemplo cambiaremos el layout del JDialog
por el Diseo Libre:




117. Los JDialog se pueden disear independientemente, al igual que
los JPanel. Solo tienes que hacer doble clic sobre el
dialogoConfiguracion (en el inspector) y este aparecer en el centro de
la ventana.
118. As pues debes disear el dialogoConfiguracion para que quede
de la siguiente forma:



Los elementos del cuadro de dilogo tienen los siguientes nombres:
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

113 Programacin de eventos | By reycito2011


- El cuadro de texto del Iva: txtIva.
- El cuadro de texto del Descuento: txtDescuento.
- El botn Aceptar: btnAceptar.
- El botn Cancelar: btnCancelar.

Si observas el Inspector debe tener el siguiente aspecto:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

114 Programacin de eventos | By reycito2011

119. Se ha dicho que cuando se pulse el botn Configuracin en la
ventana principal, debe aparecer el cuadro de dilogo
dialogoConfiguracion, que acabas de disear:









120. Para conseguir esto, debes programar el actionPerformed del
botn btnConfiguracion de la siguiente forma:

dialogoConfiguracion.setSize(250,200);
dialogoConfiguracion.setLocation(100,100);
dialogoConfiguracion.setVisible(true);


121. El cdigo anterior hace lo siguiente:

i. A travs del mtodo setSize se asigna un tamao de 250
x 200 al cuadro de dilogo.
ii. A travs del mtodo setLocation se determina que el
cuadro de dilogo aparecer en la posicin (100, 100) de
la pantalla.
iii. A travs del mtodo setVisible hacemos que el cuadro de
dilogo se muestre.


Haces clic sobre Configuracin
y aparece el dilogo
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

115 Programacin de eventos | By reycito2011

122. Ejecuta el programa y observa lo que sucede cuando pulsas el
botn Configurar. Debera aparecer el cuadro de dilogo en la posicin
programada y con el tamao programado:








123. Los botones Aceptar y Cancelar del cuadro de dilogo an no
hacen nada. As que los programaremos. Empezaremos por el ms
sencillo, el botn Cancelar.

124. El botn Cancelar de un cuadro de dilogo simplemente cierra
dicho cuadro de dilogo. Para ello, debes aadir el siguiente cdigo en
el actionPerformed del botn Cancelar del dilogo:

dialogoConfiguracion.dispose();

El mtodo dispose se usa para cerrar un cuadro de dilogo. Tambin se
puede usar con un JFrame para cerrarlo.

125. Ejecuta el programa de nuevo y comprueba el funcionamiento del
botn Cancelar del cuadro de dilogo.

126. Ahora se programar el botn Aceptar. Cuando el usuario pulse
este botn, se confirmar el valor del iva y del descuento que haya
introducido. Es decir, se traspasarn los valores introducidos en los
cuadros de texto txtIva y txtDescuento a las variables globales iva y
descuento.

Una vez que se haya hecho esto, el cuadro de dilogo se debe cerrar.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

116 Programacin de eventos | By reycito2011


127. Este es el cdigo que hace lo anterior. Debe programarlo en el
actionPerformed del botn Aceptar:

iva = Double.parseDouble(txtIva.getText());

descuento=Double.parseDouble(txtDescuento.getText());
dialogoConfiguracion.dispose();

128. Observe el cdigo. Primero se traspasa los valores de los cuadros
de texto a las variables globales y luego se cierra el cuadro de dilogo.
129. Compruebe el funcionamiento del programa de la siguiente forma:

a. Ejecute el programa.
b. Introduzca 5 unidades y 20 de precio.
c. Si pulsa calcular, el total ser 100. (No hay ni iva ni descuento al
empezar el programa)
d. Ahora pulse el botn Configuracin, e introduzca un iva del 16. El
descuento djelo a 0. Acepte.
e. Ahora vuelva a calcular. Observe como ahora el total es 116, ya
que se tiene en cuenta el iva configurado.
f. Pruebe a configurar un descuento y vuelva a calcular.


130. Se pretende ahora mejorar un poco el cuadro de dilogo,
aadindole un ttulo. Seleccione el cuadro de dilogo en el Inspector y
luego busque su propiedad title. En ella escriba Configuracin de iva y
descuento.

131. Vuelva a ejecutar el programa. Observe la barra de ttulo del
cuadro de dilogo:




132. Ahora se estudiar el concepto de cuadro de dilogo modal y
cuadro de dilogo no modal.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

117 Programacin de eventos | By reycito2011

Un cuadro de dilogo no modal. Es aquel que permite activar la ventana
desde la que apareci. Los cuadros de dilogo aadidos a un proyecto
son por defecto no modales.

133. Ejecuta el programa y prueba a hacer lo siguiente:

a. Pulsa el botn Configurar. Aparecer el cuadro de dilogo.
b. Pulsa sobre la ventana.



c. Observars que la ventana se activa, colocndose sobre el
cuadro de dilogo.




d. Esto es posible gracias a que el cuadro de dilogo es no modal.
Pulsa sobre la
ventana.
La ventana se activa
colocndose por encima
del cuadro de dilogo.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

118 Programacin de eventos | By reycito2011


e. A veces, puede ser interesante que se active la ventana pero que
el cuadro de dilogo siga delante de ella. Para conseguir esto, es
necesario activar la propiedad del cuadro de dilogo llamada
alwaysOnTop. Activa esta propiedad:



f. Ahora ejecuta el programa de nuevo y haz que se visualice el
cuadro de dilogo de configuracin. Podrs comprobar que se
puede activar la ventana e incluso escribir en sus cuadros de
textos, y que el cuadro de dilogo sigue visible:




g. Es muy comn, cuando tenemos un cuadro de dilogo no modal,
usar la propiedad alwaysOnTop, para que siempre aparezca
delante de la ventana.




134. Ahora se estudiar el concepto de cuadro de dilogo modal.

Un cuadro de dilogo modal es aquel que no permite que se active otra
ventana hasta que este no se haya cerrado.

Se puede activar la
ventana trasera, e
incluso escribir en ella.
Esto es gracias a que el
cuadro de dilogo es no
modal.

Por otro lado, el cuadro
de dilogo sigue
mostrndose delante de
la ventana. Esto es
gracias a la propiedad
alwaysOnTop

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

119 Programacin de eventos | By reycito2011

135. Para convertir nuestro cuadro de dilogo en modal, ser
necesario que lo selecciones en el inspector y busques la propiedad
modal. Debes activar esta propiedad.





136. Ahora ejecuta el programa comprueba lo siguiente:

a. Haz que se visualice el cuadro de dilogo de configuracin.

b. A continuacin intenta activar la ventana haciendo clic sobre ella.
Vers como no es posible activarla. Es ms, intenta escribir en
sus cuadros de texto. No ser posible hacerlo. (Incluso
observars un parpadeo en el cuadro de dilogo avisndote de
ello). Esto es debido a que ahora nuestro cuadro de dilogo es
modal.





c. Solo cuando pulses, Aceptar, o Cancelar, o cierres el cuadro de
dilogo, podrs seguir trabajando con tu ventana.






CONCLUSIN
Aunque intentes activar la
ventana o escribir en ella, no
podrs, ya que el cuadro de
dilogo es modal.

Incluso vers un parpadeo en
el cuadro de dilogo cuando
intentas activar la otra
ventana.

Se podra decir que un cuadro
de dilogo modal es un
acaparador, y que no te deja
usar otro elemento hasta que
no acabes con l.

Solo cuando cierres el cuadro
de dilogo podrs seguir
trabajando con la ventana.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

120 Programacin de eventos | By reycito2011


Los Cuadros de Dilogo son ventanas simplificadas que muestran
distintas opciones al usuario.

Los objetos JDialog son los que permiten la creacin y uso de cuadros de
dilogo en un proyecto java.

Para visualizar un JDialog ser necesario llamar a su mtodo setVisible.
Tambin son interesantes los mtodos setSize para asignarles un tamao
y setLocation para situar el cuadro de dilogo en la pantalla.

Para cerrar un JDialog ser necesario invocar a su mtodo dispose.

Existen dos tipos de cuadros de dilogo: los modales y no modales.

Los cuadros de dilogo modales no permiten que se active otra ventana
hasta que el cuadro de dilogo no se haya cerrado.

Los cuadros de dilogo no modales permiten trabajar con otra ventana a
pesar de que el propio cuadro de dilogo no haya sido cerrado.


EJERCICIO GUIADO. JAVA: DISEO DE FORMULARIOS DESDE CDIGO


La Ventana de Diseo

La ventana de diseo es una gran herramienta que nos permite disear
formularios de forma relativamente sencilla. Simplemente tenemos que aadir
los componentes del formulario: botones, etiquetas, cuadros de textos, etc, y
cambiar sus propiedades segn nos interese.

Todo esto tiene un cdigo asociado que se genera de forma automtica, y del
que no nos hemos preocupado hasta el momento.

Por ejemplo, cada vez que aades un botn o una etiqueta, se generan
automticamente las instrucciones de cdigo que permiten crear dicho botn o
dicha etiqueta. Tambin se genera el cdigo que permite cambiar el texto del
botn, o cambiar el texto de la etiqueta.

Un buen ejercicio para comprobar esto puede ser el siguiente:

Ejercicio guiado 1.

1. Crea un proyecto y aade en su ventana un botn (JButton), una
etiqueta (JLabel) y un cuadro de texto (JTextField).

2. El nombre del botn ser btnBoton, el de la etiqueta etiEtiqueta y el
del cuadro de texto txtCuadroTexto.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

121 Programacin de eventos | By reycito2011

3. A continuacin asigna un texto a cada elemento. La ventana final podra
tener un aspecto como el que sigue:



4. Todas estas operaciones que has realizado tienen asociado unas
instrucciones de cdigo que se han generado automticamente. Para
estudiar estas instrucciones, activa el botn Origen en la parte superior
de la pantalla:








5. En el cdigo, observars una lnea llamada Cdigo Generado. Esta lnea
est sealada en color azul (al igual que todas las instrucciones
generadas automticamente) Observars que tiene un + en la parte
izquierda. Si haces clic sobre el signo + aparecer el cdigo generado
automticamente:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

122 Programacin de eventos | By reycito2011




6. El cdigo generado (sealado en azul) no puede ser modificado, sin
embargo es interesante estudiarlo para entenderlo. En l puedes
encontrar como se crean los componentes, como se asigna el texto a
stos etc.






















Haz clic en el + para
ver el cdigo generado.
Aqu se crea el botn,
la etiqueta y el cuadro
de texto
Aqu se asigna el texto
a cada elemento
ETC
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

123 Programacin de eventos | By reycito2011

En esta explicacin guiada, se disear el formulario entero directamente
desde cdigo, sin usar la ventana de diseo. De esta forma, se podr entender
mejor la generacin de cdigo del NetBeans y se tendr ms control sobre los
componentes.


Ejercicio guiado 2

A. CREACIN DEL PROYECTO

1. Crear un nuevo proyecto con las siguientes caractersticas:
a. El nombre del proyecto ser OPERACIONES.
b. El nombre del paquete ser VENTANAS.
c. El nombre del formulario ser VENTANAPRINCIPAL.

El aspecto que tendr la ventana de proyectos debe ser el siguiente:




2. Una vez creado el proyecto, iremos directamente a la ventana de cdigo,
pulsando el botn Origen. No usaremos la ventana de diseo en este
proyecto.



B. ESTRUCTURA DEL CDIGO (estructura de una clase)


3. Analizaremos el cdigo del programa ahora. Empezaremos por arriba:


Nombre del proyecto.

Nombre del paquete.

Nombre del formulario.
En la parte superior del cdigo vers un
comentario.

En este comentario aparece el nombre del fichero
que contiene el cdigo, que como puedes observar
tiene el mismo que el del JFrame.

Tambin aparece la fecha de creacin del fichero.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

124 Programacin de eventos | By reycito2011









4. Un proyecto en java est formado por mdulos denominados CLASES.
El proyecto que acabamos de crear tiene un solo mdulo: el JFrame que
define la ventana principal, llamado precisamente ventanaprincipal. Por
tanto, se puede decir que nuestro proyecto tiene una clase llamada
ventanaprincipal.




5. Para programar una clase se sigue la siguiente sintaxis:

public class nombredelaclase {

programacin de la clase
}


6. Esto lo puedes observar claramente en el cdigo de tu proyecto:

Observars tambin una instruccin que indica que
este fichero (ventanaprincipal.java) pertenece al
paquete ventanas.

Tambin vers otro comentario donde aparece el
nombre del autor. Este comentario se puede
cambiar para que aparezca tu nombre.

El proyecto operaciones tiene una clase llamada
ventanaprincipal, que pertenece al paquete
ventanas.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

125 Programacin de eventos | By reycito2011




7. Dentro de la clase, tenemos una serie de funciones y procedimientos
llamados MTODOS. Es en los mtodos donde se programan los
eventos que pueden suceder sobre el formulario.

8. Hay un mtodo especial muy importante denominado CONSTRUCTOR.
Dentro de este mtodo se programa el diseo de la ventana y las
caractersticas iniciales de la ventana.

El constructor se puede distinguir fcilmente porque tiene el mismo
nombre que la clase. En nuestro ejemplo, ventanaprincipal.



Observars que el constructor contiene una llamada a un mtodo
llamado initComponents. El mtodo initComponents define
caractersticas iniciales de la ventana, y es cdigo generado
automticamente. Si quieres verlo, solo tienes que desplegar la parte de
Cdigo Generado:
Programacin
de la clase
ventanaprincipal

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

126 Programacin de eventos | By reycito2011












El contenido del mtodo initComponents no resulta interesante para el
ejercicio que estamos realizando, as que puedes ocultar de nuevo el
Cdigo Generado, haciendo clic en el smbolo menos -


9. Otro mtodo importante que hay que mencionar es el mtodo main. Este
mtodo es el que se ejecuta cuando arranca el programa. Se puede
decir que el programa parte de aqu.

La tarea que desempea este mtodo es la de generar la ventana
principal y mostrarla en pantalla.

El mtodo main, es similar a la funcin main del lenguaje C. En el caso
del java, el NetBeans genera automticamente el mtodo main, de forma
que no tendremos que hacer cambios en l.


C. DISEO DE LA VENTANA DESDE CDIGO


Vamos ahora a disear la ventana de nuestro programa (sin usar la ventana de
diseo, solo a partir de cdigo). Al final de esta explicacin, la ventana del
proyecto tendr el siguiente aspecto:


El mtodo initComponents al que hace referencia el constructor es un
mtodo generado automticamente, y no puede ser modificado.

Puedes verlo dentro de la seccin de Cdigo Generado.

Este mtodo define algunas caractersticas iniciales de la ventana.

Clic aqu
para
ocultar el
cdigo
generado

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

127 Programacin de eventos | By reycito2011

Para conseguir esto, sigue los siguientes pasos:


10. Para realizar el diseo de la ventana, crearemos un mtodo propio al
que llamaremos por ejemplo CreacionVentana. Un buen sitio para
colocar este mtodo puede ser debajo del constructor:




11. Lo primero que se va a hacer es definir caractersticas propias de la
ventana, como por ejemplo su ttulo, tamao, etc. Recuerda que la forma
de hacer referencia a la propia ventana es a travs de la palabra
reservada this.

As pues, programa lo siguiente dentro del mtodo CreacionVentana:



Este cdigo hace lo siguiente:

- Usa el mtodo setTitle de la ventana para definir el texto de la barra
de ttulo.
- Usa el mtodo setSize de la ventana para definir un tamao de
500x300.
- Usa el mtodo setLocation de la ventana para definir la posicin de la
ventana en la posicin (100,100) de la pantalla.

El mtodo donde
disearemos nuestra
ventana

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

128 Programacin de eventos | By reycito2011





12. Para que esto tenga efecto, es necesario que el mtodo CrearVentana
sea llamado desde el constructor, al igual que sucede con el mtodo
initComponents:




13. Ya puedes ejecutar el programa. En el momento en que se ejecuta el
programa, el constructor llama al mtodo CreacionVentana y se definen
las caractersticas programadas.

Con setTitle cambias
la barra de ttulo

Con setLocation
decides la posicin de
la ventana

Con setSize defines el
ancho y alto de la
ventana

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

129 Programacin de eventos | By reycito2011




14. Ahora vamos a empezar a aadir componentes a la ventana.
Concretamente, empezaremos creando la etiqueta que contiene el texto
Nmero 1: y luego definiremos algunas caractersticas propias para
finalmente situarla en la ventana.

Al comienzo de la clase, despus del public class, donde se suelen
definir las variables globales, aade el siguiente cdigo:



Este cdigo declara una variable de tipo JLabel (etiqueta) y le da el
nombre etiNum1.

15. Al escribir este cdigo, aparecer un error en la lnea, ya que ser
necesario importar la librera donde se encuentra el tipo de objeto
JLabel. Podrs usar la bombilla del NetBeans para agregar el import
correspondiente automticamente.

16. Los imports aparecern en la parte superior del cdigo. Puedes
observarlo:




17. Ahora agrega este cdigo a tu mtodo CreacionVentana:



Importacin de la librera para el
objeto JLabel, que define las
etiquetas.

(Agregada automticamente al pulsar
la bombilla del NetBeans)

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

130 Programacin de eventos | By reycito2011

18. La explicacin del cdigo es la siguiente:

- La primera lnea construye la etiqueta llamada etiNum1 que fue
delarada antes.

etiNum1 = new JLabel();

- Generalizando: para crear un objeto llamado xxx del tipo tipoobjeto,
se tendr que hacer lo siguiente:

o En la zona de las variables globales se declarar la variable
del objeto de la siguiente forma:

tipoobjeto xxx;

o Luego, dentro de la clase, se construye el objeto siguiendo la
siguiente sintaxis:

xxx = new tipoobjeto();

- En el ejemplo, la etiqueta creada, cuyo nombre es etiNum1, tiene que
contener el texto Nmero 1:. Esto lo hacemos con el tpico mtodo
setText:

etiNum1.setText(Nmero 1: );

- Hay que definir la posicin que tendr el objeto y el tamao. Para
ello, se usar el mtodo setBounds. Este mtodo recibe la posicin
(x, y) del objeto y el ancho y el alto. En el ejemplo, la etiqueta est
situada en la posicin (10,10) de la ventana y tiene un ancho de 100
y un alto de 20:

etiNum1.setBounds(10,10,100,20);

- Finalmente, hay que colocar la etiqueta en el panel de contenidos de
la ventana. Para ello, se usa el mtodo add del panel de contenidos.
Recuerda que para obtener este panel se usa el mtodo
getContentPane:

this.getContentPane().add(etiNum1);


19. Es buena idea que ejecutes el programa para ver el aspecto de la
ventana ahora.


20. Hemos aadido una etiqueta. Ahora aadiremos la siguiente. Para ello,
primero tienes que declarar la etiqueta en la zona de las variables
globales:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

131 Programacin de eventos | By reycito2011



21. Luego, en el mtodo ConstruirVentana, aadiremos el siguiente cdigo:




22. Este cdigo es prcticamente igual al anterior. En l se constuye la
etiqueta declarada antes con el nombre etiNum2. Luego se le asigna el
texto Nmero 2:, luego se usa el mtodo setBounds para situarla en la
posicin (10, 60) y asignarle un ancho de 100 y un alto de 20.
Finalmente se aade la etiqueta al panel de contenidos de la ventana.

23. Ejecuta el programa y observa el aspecto de la ventana ahora:



24. Sigamos aadiendo elementos. Ahora aadiremos un cuadro de texto
llamado txtNum1. Primero declara la variable del cuadro de dilogo en la
zona de variables globales:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

132 Programacin de eventos | By reycito2011



Tendrs que agregar el import correspondiente para el tipo de objeto
JTextField.

25. Luego aade el siguiente cdigo en el mtodo CreacionVentana:




26. Este cdigo realiza lo siguiente:

- La primera lnea construye el cuadro de texto llamado txtNum1. Los
JTextField son objetos del tipo cuadro de texto.

- Esta lnea se subrayar en rojo ya que ser necesario aadir el
import para la librera de los JTextField.

- La siguiente lnea introduce la cadena 0 dentro del cuadro de texto.

- La siguiente lnea asigna la posicin y el tamao a travs del mtodo
setBounds.

- Y finalmente, la ltima lnea aade el cuadro de texto al panel de
contenidos de la ventana.

27. Ejecuta el programa y comprueba el funcionamiento de este cdigo.

28. Ahora se aadir un nuevo cuadro de texto llamado txtNum2. El cdigo
es similar. Declara la variable global:





29. Y ahora aade el cdigo que construye el objeto en el mtodo
ConstruirVentana. Este cdigo es similar al del cuadro de texto anterior.
Solo cambia el nombre del objeto y la posicin donde se colocar:
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

133 Programacin de eventos | By reycito2011





30. Ejecuta el programa y comprueba como va el diseo de la ventana:



31. Ahora le toca el turno a los botones. Primero declararemos una variable
del tipo JButton en la zona de variables globales (ser necesario aadir
el import correspondiente a la clase JButton a travs de la bombilla). El
botn se llamar btnSumar:



32. Y a continuacin construiremos y le daremos forma al botn, aadiendo
el siguiente cdigo en el mtodo ConstruirVentana:


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

134 Programacin de eventos | By reycito2011



33. La explicacin del cdigo anterior es similar a los anteriores:

- La primera lnea construye el botn btnSumar.
- A continuacin se asigna el texto Sumar al botn.
- Luego se asigna la posicin y el tamao del botn con el mtodo
setBounds.
- Finalmente se aade el botn al panel de contenido de la ventana.


34. Ejecuta el programa y observa el aspecto de la ventana.

35. Ahora se aadir otro botn llamado btnRestar. Declara la variable
JButton:



36. Tienes que escribir el siguiente cdigo:



37. El cdigo es prcticamente igual que el del primer botn. Solo cambia el
nombre del botn, el texto y la posicin y tamao del botn.

38. Ejecuta el programa para ver como queda la ventana.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

135 Programacin de eventos | By reycito2011





21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

136 Programacin de eventos | By reycito2011

CONCLUSIN

La ventana de diseo de NetBeans es una herramienta que nos permite
disear las ventanas sin tener que programar cdigo.

Es posible prescindir de la ventana de diseo y realizar todo el diseo de
la ventana programando.

El diseo de la ventana se tiene que hacer en el constructor de la clase.

Los componentes de una ventana son variables globales cuyo tipo se
corresponde a distintas clases de objetos: JLabel, JTextField, JButton,
etc...

Para construir un objeto hay que declararlo como una variable global:

TipoObjeto NombreObjeto;

Y luego, dentro de la clase, construirlo, usando la siguiente sintaxis:

NombreObjeto = new TipoObjeto();

Luego se pueden usar distintos mtodos del objeto para trabajar con l.


EJERCICIO GUIADO. JAVA: EVENTOS DESDE CDIGO


Eventos desde cdigo

La ventana de diseo de NetBeans nos permite crear cada componente,
colocarlo en la ventana y acceder a los eventos que necesitemos fcilmente
para programar en ellos las acciones que se tengan que realizar.

Sin embargo, si el diseo de la ventana se ha realizado directamente desde
cdigo, ser necesario crear tambin desde cdigo los distintos eventos a usar,
y asociarlos al componente correspondiente.

Para programar eventos hay que tener en cuenta lo siguiente:

- Un evento pertenece a un objeto Oyente (Listener) o a un objeto
Adaptador (Adapter)

- El objeto oyente/adaptador hay que asociarlo al elemento sobre el que
sucede el evento.


Por ejemplo: Programar la pulsacin de un botn btnSumar.

La pulsacin de un botn es un evento actionPerformed como ya se sabe.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

137 Programacin de eventos | By reycito2011

El evento actionPerformed pertenece a un objeto llamado ActionListener. El
objeto ActionListener es lo que se denomina un oyente.
El objeto ActionListener se asociar al botn btnSumar



Programacin de eventos

La programacin de eventos es compleja, ya que cada evento pertenece a un
oyente/adaptador, y a su vez, hay que asociar cada oyente/adaptador al
componente que responde al evento.

Por otro lado, la sintaxis de programacin para los eventos es distinta a lo que
se ha visto hasta ahora, por lo que puede resultar bastante oscura, aunque por
otro lado, siempre sigue el mismo patrn.

Para simplificar el estudio de la programacin de eventos, nos limitaremos a los
eventos ms usados, los cuales pueden clasificarse en los siguientes grupos:

- Eventos de Accin:

o actionPerformed
Activar un componente (pulsacin de botn, enter en un
cuadro de texto)

- Eventos de Teclado:

o keyPressed
Se puls una tecla, pero no se solt.
o keyReleased
Se solt una tecla.
o keyTyped
Se puls y solt una tecla.

- Eventos de Ratn:
o mousePressed
Se puls un botn del ratn.
o mouseReleased
Se solt un botn del ratn.
o mousePressed
Se puls y solt un botn del ratn.
o mouseEntered
El ratn entr en la superficie del control.
o mouseExited
El ratn sali de la superficie del control.

- Eventos de Ventana:

o windowOpened
Se abri la ventana
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

138 Programacin de eventos | By reycito2011

o windowClosing
Se cerr la ventana
o windowActivated
Se activ la ventana
o windowDeactivated
Se desactiv la ventana


En esta explicacin guiada nos limitaremos a estudiar los eventos de accin.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

139 Programacin de eventos | By reycito2011

PROGRAMACIN DE EVENTOS DE ACCIN

Un evento de accin hace referencia a la activacin de un objeto (un botn, un
cuadro de texto, un combo, etc...)

Solo existe un tipo de evento de accin, llamado actionPerformed.

El evento actionPerformed pertenece a un objeto oyente llamado
ActionListener.

Eventos de Accin

Eventos Oyente/Adaptador

actionPerformed


Se programan dentro
de...


ActionListener

La forma de programar el evento actionPerformed de un componente xxx es la
siguiente:

xxx.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
xxxActionPerformed(evt);
}
});

Para entender la sintaxis de la programacin de un evento de accin,
supongamos el siguiente ejemplo:


Se quiere programar el evento de un botn llamado btnSumar desde cdigo.
He aqu el cdigo para crear el evento:


btnSumar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
btnSumarActionPerformed(evt);
}
});


Una explicacin del cdigo:







El mtodo addActionListener
permite asignar el oyente al
botn.
El evento actionPerformed
pertenece a un objeto oyente
llamado ActionListener.
El componente cuyo evento
se quiere programar. En
este ejemplo, el botn
btnSumar
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

140 Programacin de eventos | By reycito2011

btnSumar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
btnSumarActionPerformed(evt);
}
});


El cdigo anterior permite crear y asignar el evento actionPerformed al botn
btnSumar, pero no programa el evento. Para programar el evento es necesario
crear el procedimiento cuya llamada se incluye dentro del evento
actionPerformed:

public void btnSumarActionPerformed(ActionEvent evt) {
aqu se programa el evento actionPerformed del botn
btnSumar
}



A pesar de lo complicado que resulta, hay que tener en cuenta que siempre se
programa de la misma forma. Solo hay que cambiar el componente que se
quiere programar y asignar un nombre a la funcin donde se programar el
evento.

Hay que tener en cuenta que en el cdigo expuesto antes participan nuevas
clases como son ActionEvent y ActionListener, y se tendrn que agregar los
import correspondientes.


EJERCICIO GUIADO

1. Abra el proyecto Operaciones que se hizo en el ejercicio guiado de la
hoja anterior.

2. En el ejercicio guiado anterior se dise desde cdigo la ventana de
dicho proyecto. Esta ventana tiene el siguiente aspecto (Se indica
tambin el nombre de los distintos componentes):



El evento actionPerformed, es en
realidad un procedimiento, que tiene
como parmetro un objeto del tipo
ActionEvent al que llamaremos evt por
convencin.
Dentro del procedimiento actionPerformed se
hace una llamada a otro procedimiento. El
nombre de este otro procedimiento puede ser
cualquiera, pero usaremos el nombre del
componente seguido de ActionPerformed
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

141 Programacin de eventos | By reycito2011



3. El objetivo del ejercicio es programar la pulsacin del botn btnSumar
para que aparezca un JOptionPane con la suma calculada. Luego
haremos lo mismo con el botn btnRestar. Todo esto se har desde
cdigo.



4. Para recordar, he aqu el cdigo programado hasta ahora. Tenemos una
llamada desde el constructor a un mtodo CreacionVentana donde
diseamos cada uno de los elementos de la ventana:

/** Creates new form ventanaprincipal */
public ventanaprincipal() {
initComponents();
CreacionVentana();
}

public void CreacionVentana() {

this.setTitle("Programa Operaciones");
this.setSize(500,300);
this.setLocation(100,100);

etiNum1 = new JLabel();
etiNum1.setText("Nmero 1:");
etiNum1.setBounds(10,10,100,20);
this.getContentPane().add(etiNum1);

etiNum2 = new JLabel();
etiNum2.setText("Nmero 2:");
etiNum2.setBounds(10,60,100,20);
this.getContentPane().add(etiNum2);

txtNum1 y txtNum2
son los cuadros de
texto.
btnSumar es el
botn Sumar
btnRestar es el
botn Restar
En el constructor hacemos una
llamada a nuestro mtodo
CreacionVentana
Programamos algunos detalles
de la ventana principal
Creamos la etiqueta Nmero 1
Creamos la etiqueta Nmero 2
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

142 Programacin de eventos | By reycito2011

txtNum1 = new JTextField();
txtNum1.setText("0");
txtNum1.setBounds(110,10,100,20);
this.getContentPane().add(txtNum1);

txtNum2 = new JTextField();
txtNum2.setText("0");
txtNum2.setBounds(110,60,100,20);
this.getContentPane().add(txtNum2);

btnSumar = new JButton();
btnSumar.setText("Sumar");
btnSumar.setBounds(10,120,100,20);
this.getContentPane().add(btnSumar);

btnRestar = new JButton();
btnRestar.setText("Restar");
btnRestar.setBounds(150,120,100,20);
this.getContentPane().add(btnRestar);

}


5. Ahora asignaremos un evento actionPerformed al botn btnSumar. Esto
lo haremos al final del mtodo CreacionVentana, El cdigo que debe
aadir para el evento actionPerformed del botn btnSumar es el
siguiente:


btnSumar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
btnSumarActionPerformed(evt);
}
});

(Recuerda que el cdigo es siempre igual, solo hay que indicar el
nombre del botn y el nombre del procedimiento al que se llama)


6. Ser necesario aadir un import para el objeto oyente ActionListener y
para la clase ActionEvent.

7. Ahora que se ha definido un evento actionPerformed para el botn
btnSumar, ser necesario programarlo. Esto se hace creando el
procedimiento al que llama el cdigo del actionPerformed. A este
procedimiento le hemos dado de nombre btnSumarActionPerformed.

As pues, aade el siguiente procedimiento a la clase. (No te vayas a
equivocar, el siguiente cdigo est fuera del mtodo CreacionVentana)


Creamos el primer cuadro de texto
Creamos el segundo
Creamos el botn Sumar
Creamos el botn Restar
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

143 Programacin de eventos | By reycito2011









8. Es precisamente en este nuevo procedimiento que hemos creado donde
se programa el evento actionPerformed del botn btnSumar. Lo que se
pretende que haga el programa es que aparezca un JOptionPane con la
suma de los nmeros introducidos. Para ello, aade el siguiente cdigo:




9. Bien, hemos programado la pulsacin del botn Sumar. Hemos seguido
dos pasos:

a. Primero hemos creado el evento actionPerformed y se lo hemos
asignado al botn. Esto lo hemos hecho dentro del mtodo
Este es el final del
mtodo
CreacionVentana

Hay que
programar el
mtodo al que
llama el evento
Este es el cdigo
que tienes que
aadir
Programa el
cdigo de lo que
tiene que hacer el
evento.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

144 Programacin de eventos | By reycito2011

CreacionVentana. Este evento hace una llamada al procedimiento
donde se programar la respuesta al evento.

b. Luego hemos creado ese procedimiento y hemos programado en
l el cdigo correspondiente a la pulsacin del botn.

Ejecuta el programa y comprueba el funcionamiento del botn Sumar.




10. Ahora programaremos el botn btnRestar. Primero se tendr que definir
el evento actionPerformed y asignrselo al botn. Esto se hace
aadiendo el cdigo de creacin del evento al final del mtodo
CreacionVentana.

btnRestar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
btnRestarActionPerformed(evt);
}
});


(Observa que es idntico al cdigo de asignacin del evento del botn
btnSumar, solo cambia el nombre del botn y el nombre del
procedimiento al que se llama)


11. Y ahora, hay que programar el procedimiento al que llama el evento
actionPerformed. Es aqu donde se programa la respuesta al evento. En
nuestro ejemplo, queremos que al pulsar el botn Restar se resten los
nmeros introducidos.


public void btnRestarActionPerformed(ActionEvent evt)
{
double a,b,r;

a=Double.parseDouble(txtNum1.getText());
b=Double.parseDouble(txtNum2.getText());
r=a-b;
JOptionPane.showMessageDialog(null,"La resta
es "+r);
}



12. Ejecuta el programa y comprueba el funcionamiento del botn Restar.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

145 Programacin de eventos | By reycito2011

13. Resumiendo una vez ms. Para programar un evento sobre un
componente, primero hay que enlazar el oyente del evento con el
componente, y luego programar el mtodo al que llama el evento.
Observa el cdigo que hemos programado:





Asignacin de un actionPerformed
al botn btnSumar.

(Se hace una llamada al mtodo
btnSumarActionPerformed)
Asignacin de un actionPerformed
al botn btnRestar.

(Se hace una llamada al mtodo
btnRestarActionPerformed)
Programacin del mtodo
btnSumarActionPerformed

(respuesta a la pulsacin del
botn btnSumar)
Programacin del mtodo
btnRestarActionPerformed

(respuesta a la pulsacin del
botn btnRestar)
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

146 Programacin de eventos | By reycito2011

CONCLUSIN

Cada evento pertenece a un objeto oyente, y es el oyente el que se asigna
al componente de la ventana que se quiere programar.

El evento actionPerformed pertenece al oyente ActionListener.

Para enlazar el oyente ActionListener a un componente XXX hay que usar
el siguiente cdigo:

XXX.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
XXXActionPerformed(evt);
}
});

El enlace de un evento a un componente se hace en el constructor. Esta
asignacin hace una llamada a un procedimiento XXXActionPerformed,
(donde XXX representa el nombre del componente que se programa) Es
en este procedimiento donde realmente se programa el evento.

EJERCICIO GUIADO. JAVA: EVENTOS DESDE CDIGO. EVENTOS DE
RATN


Eventos desde cdigo

Se estudi en la hoja de teora anterior la forma de programar eventos desde
cdigo. Concretamente se estudi como programar eventos de accin. En esta
hoja se estudiar como programar eventos de ratn.

Los eventos de ratn son los siguientes:

- mouseEntered
o Indica que el ratn entr en la superficie del elemento (etiqueta,
botn, etc)
- mouseExited
o Indica que el ratn sali de la superficie del elemento (etiqueta,
botn, etc)
- mousePressed
o Indica que un botn del ratn ha sido presionado sobre el
elemento.
- mouseReleased
o Indica que un botn del ratn ha sido soltado sobre el elemento.
- mouseClicked
o Indica que se ha pulsado/soltado un botn del ratn.

Como se dijo en la hoja anterior, todos los eventos pertenecen a un objeto
oyente o adaptador. En este caso concreto, todos los eventos del ratn
pertenecen a un objeto adaptador llamado MouseAdapter.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

147 Programacin de eventos | By reycito2011


Cada uno de los eventos se programar dentro del adaptador MouseAdapter.
Cada evento es en realidad un procedimiento que recibe un parmetro con
informacin sobre el evento. Este parmetro, en el caso de los eventos del
ratn, es del tipo MouseEvent.

Cada evento a su vez hace una llamada a un procedimiento, y es en este
procedimiento donde realmente se programa la respuesta al evento.

Todo esto resulta complicado al principio, pero vers que en realidad siempre
es igual. Solo hay que conocer el nombre de cada evento, el adaptador u
oyente al que pertenece y el tipo de parmetro que recibe cada evento.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

148 Como enlazar eventos de ratn con un componente | By reycito2011

Como enlazar eventos de ratn con un componente

Supongamos que tenemos un componente (botn, etiqueta, etc...) llamado
XXX.

Si queremos asociarle eventos de ratn, tendremos que aadir el siguiente
cdigo dentro del constructor:

XXX.addMouseListener(new MouseAdapter() {

public void mouseEntered(MouseEvent evt) {
XXXMouseEntered(evt);
}

public void mouseExited(MouseEvent evt) {
XXXMouseExited(evt);
}
public void mousePressed(MouseEvent evt) {
XXXMousePressed(evt);
}

public void mouseReleased(MouseEvent evt) {
XXXMouseReleased(evt);
}

public void mouseClicked(MouseEvent evt) {
XXXMouseClicked(evt);
}

});

Veamos este mismo cdigo comentado:




XXX.addMouseListener(new MouseAdapter() {

public void mouseEntered(MouseEvent evt) {
XXXMouseEntered(evt);
}

public void mouseExited(MouseEvent evt) {
XXXMouseExited(evt);
}
public void mousePressed(MouseEvent evt) {
XXXMousePressed(evt);
}

public void mouseReleased(MouseEvent evt) {
XXXMouseReleased(evt);
Los eventos de ratn
pertenecen al adaptador
llamado MouseAdapter
Para asignar el adaptador al elemento
XXX se usa el mtodo addMouseListener
Estos son los eventos de
ratn que pertenecen al
adaptador MouseAdapter.

En realidad no hay que
ponerlos todos, solo hay
que aadir los que
necesites.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

149 Como enlazar eventos de ratn con un componente | By reycito2011

}

public void mouseClicked(MouseEvent evt) {
XXXMouseClicked(evt);
}

});


Cada evento recibe como parmetro un
objeto del tipo MouseEvent al que por
convencin se le suele llamar evt.

Este objeto suele contener informacin
sobre la pulsacin del ratn (qu botn se
ha pulsado, cuantas veces, etc...)
Cada evento hace una llamada a
un procedimiento, cuyo nombre
puede ser cualquiera, aunque suele
construirse uniendo el nombre del
componente XXX junto con el
nombre del evento.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

150 Como enlazar eventos de ratn con un componente | By reycito2011

EJERCICIO GUIADO

14. Crea un nuevo proyecto.

15. Accede al cdigo del proyecto.



16. Inserta una llamada dentro del constructor a un procedimiento
CreacionVentana de la siguiente forma:




17. La ventana va a contener dos etiquetas, que tendremos que declarar en
la zona de variables globales:



18. Ahora vamos a disear la ventana. Introduce el siguiente cdigo dentro
del procedimiento CreacionVentana:

La llamada...
Y el procedimiento.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

151 Como enlazar eventos de ratn con un componente | By reycito2011



19. Ejecuta ya el programa para observar el resultado de nuestro diseo. El
aspecto debe ser el siguiente:




20. El objetivo del programa es simple. Queremos que al entrar el ratn
dentro de la superficie de la etiqueta roja, aparezca un mensaje en la
otra etiqueta indicndolo. Tambin queremos que aparezca un mensaje
al salir el ratn de la etiqueta. Y tambin al pulsar un botn del ratn
sobre la etiqueta.
Detalles de la ventana
Se disea la primera
etiqueta
Se disea la segunda
etiqueta
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

152 Como enlazar eventos de ratn con un componente | By reycito2011


21. Para hacer esto, necesitamos crear un MouseAdapter que contenga los
siguientes eventos: mouseEntered, mouseExited y mousePressed.
Observa que no es necesario que contenga el mouseReleased ni el
mouseClicked.

Luego, el MouseAdapter se asignar a la etiqueta roja etiZona.

22. Primero programaremos el enlace del adaptador MouseAdapter con la
etiqueta etiZona. Programa al final del mtodo CreacionVentana lo
siguiente:




23. Observa el cdigo:

a. Se aade un MouseAdapter al objeto etiZona.

b. El MouseAdapter que se aade solo contiene los tres eventos que
necesitamos: mouseEntered, mouseExited y mousePressed.

c. Ser necesario aadir imports para las clases MouseAdapter y
MouseEvent.

d. Es normal que las llamadas a los procedimientos de cada evento
den error ya que todava no han sido programadas.

24. Ahora se programar cada procedimiento que es llamado desde cada
evento. Recuerda que esto debe hacerse fuera del mtodo
CreacinVentana. Aqu tienes lo que debes programar:

(Llave del mtodo
CreacionVentana)
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

153 Como enlazar eventos de ratn con un componente | By reycito2011




25. Ahora ya puedes ejecutar el programa y comprobar lo que sucede
cuando interactas con el ratn sobre la etiqueta de color rojo.


26. Vamos a aadir una pequea mejora que nos servir para estudiar ese
objeto llamado evt del tipo MouseEvent que llevan todos los eventos de
ratn como parmetro.

Se dijo antes que este parmetro contiene informacin sobre la accin
del ratn. Por ejemplo, nos puede servir para saber cuantas veces se
puls el ratn, con qu botn, etc. Aprovecharemos este parmetro para
indicar qu botn del ratn es el que se ha pulsado sobre la etiqueta.

Cambia el procedimiento etiZonaMousePressed y djalo de la siguiente
forma:



27. En el cdigo anterior aprovechamos los mtodos que tiene el objeto
MouseEvent para averiguar que botn se ha pulsado. Usamos el mtodo
getButton que nos dice el botn pulsado. Aprovechamos las constantes
de la clase MouseEvent para saber si se puls el botn izquierdo, central
o derecho.

28. Ejecuta el programa y comprueba el funcionamiento.


Debes
programar
este cdigo
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

154 Como enlazar eventos de ratn con un componente | By reycito2011

CONCLUSIN

Hay grupos de eventos que pertenecen a un mismo oyente o adaptador.
Por ejemplo, los eventos de ratn pertenecen al adaptador llamado
MouseAdapter.

Si se quiere asignar eventos de ratn a un componente XXX, hay que usar
el siguiente cdigo:

XXX.addMouseListener(new MouseAdapter() {

public void mouseEntered(MouseEvent evt) {
XXXMouseEvent(evt);
}

... otros eventos de ratn...
});

Ten en cuenta que solo aades al adaptador aquellos eventos que
necesites.

Cada evento de ratn lleva como parmetro un objeto evt del tipo
MouseEvent que contiene informacin sobre el evento: qu botn del
ratn se puls, cuantas veces, etc.


EJERCICIO GUIADO. JAVA: EVENTOS DESDE CDIGO. IDEAS
GENERALES


Eventos desde cdigo. Consideraciones Generales

Se finalizar el estudio de los eventos desde cdigo, planteando de forma
general el cdigo necesario para programarlos.

A la hora de programar eventos sobre un componente concreto, ser necesario
tener en cuenta lo siguiente:

- Primero hay que enlazar el componente con el oyente o adaptador
correspondiente al evento.

- El oyente o adaptador contendr aquellos eventos que interesen
programar.

- Cada evento tiene un parmetro asociado con informacin sobre el
evento.

- Cada evento realiza una llamada a un procedimiento y es en este
procedimiento donde se programa la respuesta al evento.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

155 Como enlazar eventos de ratn con un componente | By reycito2011


La sintaxis general de programacin de eventos es la siguiente:


Componente.MetodoParaAadirOyente(new TipoOyente() {

public void evento1(TipoEvento evt) {
LlamadaAProcedimiento1(evt);
}

public void evento2(TipoEvento evt) {
LlamadaAProcedimiento2(evt);
}

...otros eventos...
});


Para poder programar un evento es necesario conocer lo siguiente:

- El componente sobre el que se programar.
- El tipo oyente o adaptador al que pertenece el evento.
- El mtodo usado para asignar el oyente al componente.
- El nombre del evento.
- El tipo de evento para el parmetro.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

156 Ejemplo 1. Eventos del Ratn | By reycito2011

Ejemplo 1. Eventos del Ratn

Los eventos de ratn son: mouseEntered, mouseExited, mousePressed,
mouseReleased, mouseClicked.

Pertenecen al adaptador MouseAdapter.

El adaptador se asigna al componente con el mtodo addMouseListener.

Los mtodos llevan como parmetro un objeto del tipo MouseEvent.

Conociendo esto, si queremos programar los eventos del ratn de una etiqueta
llamada etiTexto, solo tenemos que hacer lo siguiente:


etiTexto.addMouseListener(new MouseAdapter() {

public void mouseEntered(MouseEvent evt) {
etiTextoMouseEntered(evt);
}

public void mouseExited(MouseEvent evt) {
etiTextoMouseExited(evt);
}

public void mousePressed(MouseEvent evt) {
etiTextoMousePressed(evt);
}

public void mouseReleased(MouseEvent evt) {
etiTextoMouseReleased(evt);
}

public void mouseClicked(MouseEvent evt) {
etiTextoMouseClicked(evt);
}

});


Ejemplo 2. Eventos del teclado

Los eventos de teclado controlan las pulsaciones de tecla. Entre ellos,
podemos mencionar a los siguientes:

- keyPressed, que define la pulsacin de una tecla.
- keyReleased, que define el momento en que se suelta una tecla.
- keyTyped, que define el pulsar-soltar una tecla.

Los eventos de teclado pertenecen al adaptador KeyAdapter.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

157 Ejemplo 2. Eventos del teclado | By reycito2011

El adaptador anterior se asigna a un componente a travs del mtodo
addKeyListener.

Los eventos de teclado llevan como parmetro un objeto del tipo KeyEvent.

Sabiendo lo anterior, si se quisieran programar los eventos de teclado de un
cuadro de texto llamado txtDato el cdigo necesario sera el siguiente:

txtDato.addKeyListener(new KeyAdapter() {

public void keyPressed(KeyEvent evt) {
txtDatoKeyPressed(evt);
}

public void keyReleased(KeyEvent evt) {
txtDatoKeyReleased(evt);
}

public void keyTyped(KeyEvent evt) {
txtDatoKeyTyped(evt);
}

});


Como puedes observar, la programacin de eventos siempre se hace de la misma forma,
solo tienes que conocer el adaptador/oyente, el mtodo para asignar dicho
adaptador/oyente, el nombre de los eventos, y el tipo de objeto que llevan como
parmetro.

Sabiendo estos datos, la programacin siempre se hace igual.

El problema que se plantea en cambio es el siguiente:

Si surge un nuevo evento X el cual quiero usar desde cdigo, cmo puedo
saber cual es su adaptador/oyente, el mtodo para asignar dicho
adaptador/oyente al componente, y el tipo de datos del parmetro?

Para este caso, se aconseja crear un proyecto de prueba desde la ventana de
diseo y asignar el evento X que se quiere estudiar a un componente. Luego
simplemente hay que analizar el cdigo generado por el NetBeans.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

158 Ejemplo 2. Eventos del teclado | By reycito2011


--- NO HAY EJERCICIO GUIADO EN ESTA HOJA ---




CONCLUSIN

Para programar desde cdigo un evento es necesario conocer lo
siguiente:

* El nombre del evento / eventos del mismo grupo.
* El oyente/adaptador al que pertenece el evento / eventos.
* El mtodo para asignar el oyente/adaptador al componente sobre el que
acta el evento.
* El tipo de datos de objeto recibido como parmetro por el evento.

Conociendo estos datos, la programacin siempre se hace igual:

Componente.MetodoParaAadirOyente(new NombreOyenteAdaptador() {

public void nombreEvento1(TipoDatoParametro evt) {
LlamadaAProcedimientoEvento1(evt);
}

public void nombreEvento2(TipoDatoParametro evt) {
LlamadaAProcedimientoEvento2(evt);
}
});


Se puede aprender mucho sobre los eventos asocindolos desde diseo
y luego mirando en el cdigo generado.


EJERCICIO GUIADO. JAVA: VECTORES


Vectores en Java

El manejo de vectores en Java es similar al manejo de vectores en C. Solo hay
que tener en cuenta que un vector en Java se tiene primero que declarar, y
luego se tiene que construir, ya que los vectores son, al igual que todo en Java,
objetos.

Declaracin de un vector

Para declarar un vector se seguir la siguiente sintaxis:

tipodatos nombrevector[];
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

159 Ejemplo 2. Eventos del teclado | By reycito2011


- tipodatos es el tipo de datos de los elementos del vector (int, double,
String, etc.)
- nombrevector es el nombre que tu quieras darle a tu vector.

Por ejemplo, supongamos que queremos crear un vector de enteros llamado v.
La declaracin ser la siguiente:

int v[];


Como puedes ver, en la declaracin de un vector no se indica la dimensin, de
ste, es decir, el nmero de elementos que tiene. Esto se hace en la
construccin del vector.


Construccin de un vector

Para construir un vector que ya haya sido declarado se sigue la siguiente
sintaxis:

nombrevector = new tipodatos[dim];

- nombrevector es el nombre del vector a construir.
- tipodatos es el tipo de datos del vector.
- dim es la dimensin del vector (el nmero de elementos)

Por ejemplo, si queremos que el vector v declarado antes tenga 10 elementos,
tendremos que hacer lo siguiente:

v = int[10];

En el momento de la construccin del vector, podemos usar una variable entera
para asignar el nmero de elementos que se quiera.

Por ejemplo, en el siguiente caso el nmero de elementos del vector v viene
dado por la variable num:

v = int[num];







Acceso a los elementos de un vector

Una vez declarado el vector y construido, este se puede usar de la misma
manera que en C. Se puede acceder a un elemento del vector escribiendo el
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

160 Ejemplo 2. Eventos del teclado | By reycito2011

nombre del vector y entre corchetes el ndice del elemento que quieres usar.
Recuerda que los ndices comienzan a numerarse en 0.

Ejemplo 1:

etiResultado.setText(El resultado es: +v[3]);

Aqu se coloca en una etiqueta el valor contenido en el elemento de la posicin
cuarta del vector v.

Ejemplo 2:

for (i=0;i<10;i++) {
v[i]=0;
}

Este cdigo recorre un vector de 10 elementos y almacena en dichos 10
elementos un 0.





Longitud de un vector

Una forma rpida de saber la longitud que tiene un vector es usar lo siguiente:

nombrevector.length

Por ejemplo, si el vector se llama v, su longitud (el nmero de elementos que
tiene) sera:

v.length


El siguiente cdigo rellena el vector v con ceros, da igual el nmero de
elementos que tenga:

for (i=0;i<v.length;i++) {
v[i]=0;
}



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

161 Ejemplo 2. Eventos del teclado | By reycito2011

Creacin de un vector e inicializacin con datos al mismo tiempo

Es posible crear un vector e introducir datos directamente en l al mismo
tiempo. La forma general de hacerlo sera la siguiente:

tipodatos nombrevector[] = {elemento1, elemento2,
elemento3, , elemento n};


Por ejemplo:

int v[] = {5, 2, 7, 6};

Este cdigo crea un vector con cuatro nmeros enteros: 5, 2, 7, 6.

Ejemplo 2:

String dias[] = {Lunes, Martes, Mircoles, Jueves,
Viernes, Sbado, Domingo};

Este cdigo crea un vector que contiene 7 cadenas, correspondientes a los
das de la semana.





VECTORES DE COMPONENTES

En Java, se pueden crear vectores de etiquetas, botones, cuadros de textos,
etc.

Esto es tremendamente til cuando se tienen que definir muchos componentes
con una funcin parecida, y que tengan que ser tratados en conjunto.

Por otro lado, nos ahorra mucho tiempo ya que no se tienen que disear estos
elementos en la misma ventana de diseo.

Los vectores de componentes se usan igual que se ha indicado antes. Observa
el siguiente ejemplo:

JLabel veti[]; //aqu se crea un vector de etiquetas
llamado veti

veti=new JLabel[3]; //aqu se construye el vector,
asignando 3 etiquetas

//ahora trabajamos con las etiquetas del vector
//usando el tpico for

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

162 Ejemplo 2. Eventos del teclado | By reycito2011

for (i=0;i<veti.length;i++) {
veti[i]= new JLabel(); //se construye cada etiqueta
veti[i].setBounds(10,10+i*30,100,20); //se asigna
posicin y tamao
veti[i].setText(Etiqueta +i); //se asigna un texto
this.getContentPane().add(veti[i]); //se coloca en la
ventana
}


Realiza el siguiente ejercicio guiado para entender el ejemplo:
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

163 Ejemplo 2. Eventos del teclado | By reycito2011

Ejercicio guiado


137. Crea un nuevo proyecto en java.

138. Empecemos definiendo desde cdigo las caractersticas de la
ventana. Crearemos el mtodo CreacionVentana, y lo llamaremos desde
el constructor del proyecto:







139. Vamos a situar en la ventana 10 cuadros de verificacin
(JCheckBox). Para ello, usaremos un vector de 10 JCheckBox. Este
vector se declarar en la zona de variables globales (ser necesario
aadir el tpico import):






140. La construccin de los vectores de componentes, se realiza en el
mismo constructor (en nuestro caso en el mtodo CreacinVentana, que
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

164 Ejemplo 2. Eventos del teclado | By reycito2011

es llamado desde el constructor). Construiremos el vector de forma que
contenga 10 JCheckBox:





141. Se acaba de construir un vector con 10 cuadros de verificacin.
Ahora, es necesario construir cada uno de los cuadros del vector y
asignarle ciertas propiedades. Esto se hace con un for que recorre los
elementos del vector. (Aade el siguiente cdigo dentro de
CreacionVentana):






142. Analiza este cdigo que se acaba de aadir:

a. Observa como cada elemento del vector debe ser construido:

vcuadros[i] = new JCheckBox();

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

165 Ejemplo 2. Eventos del teclado | By reycito2011

b. El texto que tendr cada elemento ser: Opcin 0, Opcin
1, etc

vcuadros[i].setText(Opcin +i);

c. Los cuadros de verificacin se colocan uno debajo de otro.
Estudia la lnea siguiente y observa como vara la posicin vertical
de cada cuadro:

vcuadros[i].setBounds(10, 10+30*i, 100, 20);


143. Ejecuta el programa y observa el resultado:





21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

166 Ejemplo 2. Eventos del teclado | By reycito2011





21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

167 Ejemplo 2. Eventos del teclado | By reycito2011

144. Mejoremos la presentacin de los cuadros cambiando los rtulos
de cada uno. Para ello, ser necesario usar otro vector auxiliar que
contenga los textos de cada uno de los cuadros. Modifica el cdigo
anterior de forma que quede as:




145. En este cdigo puedes observar como se usa un vector de String
que se crea conteniendo 10 colores. Luego, ese vector se usa para
asignar cada color al texto de cada cuadro. Si ahora ejecutas el
programa, vers que cada cuadro tiene su texto correspondiente a un
color.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

168 Ejemplo 2. Eventos del teclado | By reycito2011




146. Ahora aade un botn con su evento actionPerformed. Aade en
la zona de variables globales lo siguiente:

JButton btnAceptar;


Y luego, dentro de CreacionVentana, aade el siguiente cdigo:





21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

169 Ejemplo 2. Eventos del teclado | By reycito2011



147. Ahora programaremos la respuesta al evento actionPerformed de
forma que el programa diga cuantos cuadros hay seleccionados. Para
ello, se tendr que programar el procedimiento
btnAceptarActionPerformed, cuya llamada se encuentra en el cdigo
anterior (la lnea que da error):

As pues, fuera de CreacionVentana, programa el siguiente
procedimiento:





148. En este cdigo se puede observar como se usa un for para
recorrer fcilmente el vector de cuadros y averiguar cuales de ellos est
activado. Aumentamos un contador y lo dems es sencillo.

Si este programa se hubiera hecho desde diseo, el cdigo para contar
el nmero de cuadros activados sera mucho ms engorroso. Pinsalo.

149. Ejecuta el programa. Selecciona varios cuadros y pulsa el botn
Aceptar. Observa el resultado:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

170 Ejemplo 2. Eventos del teclado | By reycito2011





CONCLUSIN

En Java, los vectores debe declararse y luego construirse. Es en la
construccin del vector cuando a este se le asigna un nmero de
elementos.

Los vectores en Java pueden ser usados de la misma forma que en C.

En Java se pueden crear vectores de componentes: etiquetas, botones,
etc, facilitando luego el trabajo con todos estos elementos en conjunto y
facilitando las labores de diseo.
EJERCICIO GUIADO. JAVA: VECTORES Y EVENTOS


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

171 Ejemplo 2. Eventos del teclado | By reycito2011

Asignacin de eventos a los elementos de un vector de componentes

En Java se pueden crear vectores de componentes, como ya se vio en la hoja
guiada anterior. Estos vectores pueden contener un grupo de etiquetas, o
botones, cuadros de textos, etc.

Gracias a los vectores de componentes se pueden crear rpidamente por
cdigo estos componentes y trabajar sobre ellos sin tener que usar muchas
lneas de cdigo.

En esta hoja se ver como se pueden asignar eventos a los componentes de
un vector.


Ejercicio guiado


1. Crea un nuevo proyecto en java.

2. Empecemos definiendo desde cdigo las caractersticas de la ventana.
Crearemos el mtodo CreacionVentana, y lo llamaremos desde el
constructor del proyecto:







3. Vamos a situar en la ventana 5 botones, y para ello usaremos un vector
de botones, que tendremos que declarar en la zona de variables
globales:



4. Dentro del procedimiento CreacionVentana construiremos el vector y
construiremos cada uno de los botones que contiene, asignando las
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

172 Ejemplo 2. Eventos del teclado | By reycito2011

distintas caractersticas de cada uno. Debes aadir el siguiente cdigo a
CreacionVentana:





5. En el cdigo anterior se crea un vector de cadenas (String) con el texto
de cada botn.

Luego se construye el vector de botones, asignndole 5 botones.

A continuacin, usando un for, construimos cada botn del vector, le
asignamos el texto correspondiente, le asignamos su posicin y su
tamao, y lo colocamos en el panel de contenido de la ventana.


6. Ejecuta el programa para observar su aspecto hasta ahora:




7. Ahora, interesara asignar un evento actionPerformed a cada botn. Esto
se har aprovechando el que todos los botones pertenezcan a un vector,
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

173 Ejemplo 2. Eventos del teclado | By reycito2011

usando un bucle for. Aade el siguiente cdigo al final de
CreacionVentana:







Este cdigo asigna a cada botn un evento actionPerformed que hace
una llamada a un procedimiento al que se le ha llamado
botonesActionPerformed. (Esta llamada da error porque an no ha sido
programado el procedimiento. Esto se har a continuacin.)

Hay que tener en cuenta que cuando se pulse cualquiera de los botones,
se ejecutar el procedimiento botonesActionPerformed. Programa este
procedimiento (fuera de CreacionVentana, por supuesto) de la siguiente
forma:





8. Ejecuta el programa y observa el resultado. Cuando pulsas cualquiera
de los botones, se ejecuta la respuesta al evento y esta lo que hace es
mostrar un mensaje a travs de un JOptionPane donde aparece el texto
Has pulsado uno de los botones.

El procedimiento botonesActionPerformed sirve como respuesta para
todos los botones. El problema que plantea esto es, cmo saber qu
botn se ha pulsado? Es aqu donde entra en funcionamiento el
parmetro evt que suelen llevar todos los eventos.

9. Modifica el procedimiento botonesActionPerformed de forma que quede
as:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

174 Ejemplo 2. Eventos del teclado | By reycito2011

Este cdigo resulta muy interesante. El parmetro evt tiene siempre un
mtodo llamado getSource que devuelve el componente de la ventana
sobre el que ha sucedido el evento. De esta manera obtenemos el botn
que ha sido pulsado. (Observa que es necesario hacer un cast)
Aprovechamos esto para introducir el botn en una variable auxiliar que
hemos llamado botonPulsado.

Luego solo hay que usar la variable botonPulsado como un botn normal
y corriente. Por ejemplo, la usamos en el JOptionPane mostrando el
texto que contiene el botn pulsado con el mtodo getText.

10. Ejecuta el programa y observa el resultado.





CONCLUSIN

Se pueden asignar eventos a los elementos de un vector a travs de un
for que recorra los distintos elementos del vector y le asigne el evento o
eventos necesarios.

Cuando se asigna un mismo procedimiento de respuesta a eventos a
varios componentes, es necesario usar el parmetro evt junto con el
mtodo getSource para averiguar el componente sobre el que ha
sucedido el evento.

La forma general de acceder al elemento sobre el que sucedi el evento
es la siguiente:

TipoComponente variable = (TipoComponente) evt.getSource();

La variable variable contendr el componente activado.
EJERCICIO GUIADO. JAVA: INTRODUCCIN A LA POO


Introduccin a la Programacin Orientada a Objetos

La programacin orientada a objetos es una nueva forma de entender la
creacin de programas. Esta filosofa de programacin se basa en el concepto
de objeto.

Objeto

Un objeto se define como un elemento que tiene unas propiedades y
mtodos.

Un objeto posee unas caractersticas (ancho, alto, color, etc) A las
caractersticas de un objeto se les llama propiedades.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

175 Ejemplo 2. Eventos del teclado | By reycito2011


Un objeto es un elemento inteligente. A un objeto se le puede dar rdenes y l
obedecer. A estas rdenes se les llama mtodos. Con los mtodos podemos
cambiar las caractersticas del objeto, pedirle informacin, o hacer que el objeto
reaccione de alguna forma.

En Java todo son objetos. Veamos algunos ejemplos de uso de objetos en
Java:


Ejemplo 1

Supongamos que tenemos una etiqueta llamada etiTexto. Esta etiqueta es un
objeto.

Como objeto que es, la etiqueta etiTexto tiene una serie de caractersticas,
como por ejemplo: el color de fondo, el tamao, la posicin que ocupa en la
ventana, el ser opaca o no, el ser invisible o no, etc Son las propiedades de
la etiqueta.

A una etiqueta le podemos dar rdenes, a travs de mtodos.

A travs de los mtodos podemos por ejemplo cambiar las caractersticas del
objeto. Por ejemplo, se puede cambiar el tamao y posicin de la etiqueta
usando el mtodo setBounds:

etiTexto.setBounds(10,20,100,20);

Normalmente, los mtodos que permiten cambiar las caractersticas del objeto
son mtodos cuyo nombre empieza por set.

Los mtodos tambin permiten pedirle al objeto que me de informacin. Por
ejemplo, podramos usar el conocido mtodo getText para recoger el texto que
contenga la etiqueta y almacenarlo en una variable:

String texto;
texto = etiTexto.getText();


Los mtodos que le piden informacin al objeto suelen tener un nombre que
empieza por get.

Los mtodos tambin sirven para ordenarle al objeto que haga cosas. Por
ejemplo, podemos ordenar a la etiqueta etiTexto que se vuelva a pintar en la
ventana usando el mtodo repaint:

etiTexto.repaint();



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

176 Ejemplo 2. Eventos del teclado | By reycito2011


Ejemplo 2

Supongamos que tenemos un cuadro de texto llamado txtCuadro. Como todo
en Java, un cuadro de texto es un objeto.

Un objeto tiene propiedades, es decir, caractersticas. Nuestro cuadro de texto
txtCuadro tiene caractersticas propias: un color de fondo, un ancho, un alto,
una posicin en la ventana, el estar activado o no, el estar visible o no, etc

A un objeto se le puede dar rdenes, llamadas mtodos. Estas rdenes nos
permiten cambiar las caractersticas del objeto, pedirle informacin, o
simplemente pedirle al objeto que haga algo.

Por ejemplo, podemos cambiar el color de fondo del cuadro de texto txtCuadro
usando el mtodo llamado setBackground:

txtCuadro.setBackground(Color.RED);

Otros mtodos que permiten cambiar las propiedades del objeto txtCuadro son:

setVisible - permite poner visible / invisible el cuadro de texto
setEnabled - permite activar / desactivar el cuadro de texto
setEditable - permite hacer que se pueda escribir o no en el cuadro de texto
setText - permite introducir un texto en el cuadro de texto
setBounds - permite cambiar el tamao y posicin del objeto
setToolTipText - permite asociar un texto de ayuda al cuadro de texto
etc

Un objeto nos da informacin sobre l. Para pedirle informacin a un objeto
usaremos mtodos del tipo get. Por ejemplo, para pedirle al cuadro de texto el
texto que contiene, usaremos el mtodo getText:

String cadena = txtCuadro.getText();

Otros mtodos que le piden informacin al cuadro de texto son:

getWidth - te dice la anchura que tiene el cuadro de texto
getHeight - te dice el alto que tiene el cuadro de texto
getSelectedText - te devuelve el texto que est seleccionado dentro del
cuadro de texto
getToolTipText - te dice el texto de ayuda que tiene asociado el
cuadro de texto
etc

Tambin se le puede dar al objeto simplemente rdenes para que haga algo.
Por ejemplo, podemos ordenar al cuadro de texto txtCuadro que seleccione
todo el texto que contiene en su interior a travs del mtodo selectAll:

txtCuadro.selectAll();
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

177 Ejemplo 2. Eventos del teclado | By reycito2011


Otros mtodos que ordenan al cuadro de texto son:

repaint - le ordena al cuadro de texto que se vuelva a pintar
copy - le ordena al cuadro de texto que copie el texto que tenga
seleccionado
cut - le ordena al cuadro de texto que corte el texto que tenga
seleccionado
paste - le ordena al cuadro que pegue el texto que se hubiera
copiado o cortado
etc





Clase

Todo objeto es de una clase determinada, o dicho de otra forma, tiene un tipo
de datos determinado.

Por ejemplo, las etiquetas que se usan en las ventanas son objetos que
pertenecen a la clase JLabel. Los cuadros de texto en cambio son objetos de la
clase JTextField.

Para poder usar un objeto hay que declararlo y construirlo.

Declarar un Objeto

La declaracin de un objeto es algo similar a la declaracin de una variable. Es
en este momento cuando se le da un nombre al objeto. Para declarar un objeto
se sigue la siguiente sintaxis:

Clase nombreobjeto;


Por ejemplo, para declarar la etiqueta del ejemplo 1, se usara el siguiente
cdigo:

JLabel etiTexto;

Para declarar, en cambio, el cuadro de texto del ejemplo 2, se usara el
siguiente cdigo:

JTextField txtCuadro;


Construir un Objeto

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

178 Ejemplo 2. Eventos del teclado | By reycito2011

En el momento de la construccin de un objeto, se le asignan a este una serie
de propiedades iniciales. Es decir, unas caractersticas por defecto. Se puede
decir que es el momento en que nace el objeto, y este nace ya con una forma
predeterminada, que luego el programador podr cambiar usando los mtodos
del objeto.

Es necesario construir el objeto para poder usarlo. La construccin del objeto
se hace a travs del siguiente cdigo general:

nombreobjeto = new Clase();

Por ejemplo, para construir la etiqueta del ejemplo 1, se hara lo siguiente:

etiTexto = new JLabel();

Para construir el cuadro de texto del ejemplo 2, se hara lo siguiente:

txtCuadro = new JTextField();


NOTA. En algunos casos, la sintaxis de la declaracin y la construccin se une
en una sola lnea. Por ejemplo, supongamos que queremos declarar la etiqueta
etiTexto y construirla todo en una lnea, entonces se puede hacer lo siguiente:

JLabel etiTexto = new JLabel();

En general, para declarar y construir un objeto en una sola lnea se sigue la
siguiente sintaxis:

Clase nombreobjeto = new Clase();



La Clase como generadora de objetos

Conociendo la Clase, se pueden crear tantos objetos de dicha Clase como se
quiera. Es decir, la Clase de un objeto funciona como si fuera una plantilla a
partir de la cual fabricamos objetos iguales. Todos los objetos creados a partir
de una clase son iguales en un primer momento (cuando se construyen)
aunque luego el programador puede dar forma a cada objeto cambiando sus
propiedades.

Por ejemplo, la Clase JLabel define etiquetas. Esto quiere decir que podemos
crear muchas etiquetas usando esta clase:

JLabel etiTexto = new JLabel();
JLabel etiResultado = new JLabel();
JLabel etiDato = new JLabel();

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

179 Ejemplo 2. Eventos del teclado | By reycito2011

En el ejemplo se han declarado y construido tres etiquetas llamadas etiTexto,
etiResultado y etiDato. Las tres etiquetas en este momento son iguales, pero a
travs de los distintos mtodos podemos dar forma a cada una:

etiTexto.setBackground(Color.RED);
etiTexto.setText(Hola);
etiResultado.setBackground(Color.GREEN);
etiResultado.setText(Error);
etiDato.setBackground(Color.BLUE);
etiDato.setText(Cadena);


En el ejemplo se le ha dado, usando el mtodo setBackground, un color a cada
etiqueta. Y se ha cambiado el texto de cada una. Se le da forma a cada
etiqueta.



EJERCICIO

Hasta ahora ha usado objetos aunque no tenga mucha conciencia de ello. Por
ejemplo ha usado botones. Como ejercicio se propone lo siguiente:

- Cul es el nombre de la clase de los botones normales que usa en sus
ventanas?
- Cmo declarara un botn llamado btnAceptar, y otro llamado
btnCancelar?
- Cmo construira dichos botones?
- Indique algunos mtodos para cambiar propiedades de dichos botones
(mtodos set)
- Indique algunos mtodos para pedirle informacin a dichos botones
(mtodos get)
- Indique algn mtodo para dar rdenes a dichos botones (algn mtodo
que no sea ni set ni get)






21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

180 Ejemplo 2. Eventos del teclado | By reycito2011


CONCLUSIN

Un Objeto es un elemento que tiene una serie de caractersticas llamadas
PROPIEDADES.

Por otro lado, al objeto se le pueden dar rdenes que cumplir de
inmediato. A dichas rdenes se les denomina MTODOS.

Los mtodos se pueden dividir bsicamente en tres tipos:

Para cambiar las propiedades del objeto (Mtodos set)
Para pedir informacin al objeto (Mtodos get)
Para dar rdenes al objeto.

Todo objeto pertenece a una CLASE.

La CLASE nos permite declarar objetos y construirlos:

Declaracin:

CLASE nombreobjeto;

Construccin:

nombreobjeto = new CLASE();

Declaracin y Construccin en una misma lnea

CLASE nombreobjeto = new CLASE(),

En la construccin de un objeto se asignan unas propiedades
(caractersticas) por defecto al objeto que se construye, aunque luego,
estas caractersticas pueden ser cambiadas por el programador.

EJERCICIO GUIADO. JAVA: POO. CLASES PROPIAS


Objetos propios del lenguaje

Hasta el momento, todos los objetos que ha usado a la hora de programar en
Java, han sido objetos incluidos en el propio lenguaje, que se encuentran
disponibles para que el programador los use en sus programas.

Estos objetos son: las etiquetas (JLabel), botones (JButton), los
cuadros de texto (JTextField), cuadros de verificacin
(JCheckBox), botones de opcin (JRadioButton), colores (Color),
imgenes de icono (ImageIcon), modelos de lista
(DefaultListModel), etc, etc.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

181 Ejemplo 2. Eventos del teclado | By reycito2011

Todos estos objetos, por supuesto, pertenecen cada uno de ellos a una Clase:

Las etiquetas son objetos de la clase JLabel, los botones son
objetos de la clase JButton, etc.

Todos estos objetos tienen propiedades que pueden ser cambiadas en la
ventana de diseo:

Ancho, alto, color, alineacin, etc.

Aunque tambin poseen mtodos que nos permiten cambiar estas propiedades
durante la ejecucin del programa:

setText cambia el texto del objeto, setBackground cambia el color
de fondo del objeto, setVisible hace visible o invisible al objeto,
setBounds cambia el tamao y la posicin del objeto, etc.

En cualquier momento le podemos pedir a un objeto que nos de informacin
sobre s mismo usando los mtodos get:

getText obtenemos el texto que tenga el objeto, getWidth
obtenemos la anchura del objeto, getHeight obtenemos la altura
del objeto, etc.

Los objetos son como pequeos robots a los que se les puede dar rdenes,
usando los mtodos que tienen disponible.

Por ejemplo, le podemos decir a un objeto que se pinte de nuevo
usando el mtodo repaint, podemos ordenarle a un cuadro de
texto que coja el cursor, con el mtodo requestFocus, etc.

Todos estos objetos, con sus propiedades y mtodos, nos facilitan la creacin
de nuestros programas. Pero a medida que nos vamos introduciendo en el
mundo de la programacin y nos especializamos en un tipo de programa en
concreto, puede ser necesaria la creacin de objetos propios, programados por
nosotros mismos, de forma que puedan ser usados en nuestros futuros
programas.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

182 Ejemplo 2. Eventos del teclado | By reycito2011

Objetos propios

A la hora de disear un objeto de creacin propia, tendremos que pensar qu
propiedades debe tener dicho objeto, y mtodos sern necesarios para poder
trabajar con l. Dicho de otra forma, debemos pensar en qu caractersticas
debe tener el objeto y qu rdenes le podr dar.

Para crear objetos propios hay que programar la Clase del objeto. Una vez
programada la Clase, ya podremos generar objetos de dicha clase,
declarndolos y construyndolos como si de cualquier otro objeto se tratara.

A continuacin se propondr un caso prctico de creacin de objetos propios,
con el que trabajaremos en las prximas hojas.

Lo que viene a continuacin es un planteamiento terico de diseo de una
Clase de Objetos.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

183 Ejemplo 2. Eventos del teclado | By reycito2011

CASO PRCTICO: MULTICINES AVENIDA


Planteamiento

Los Multicines Avenida nos encargan un programa para facilitar las distintas
gestiones que se realizan en dichos multicines.

El multicine cuenta con varias salas, y cada una de ellas genera una serie de
informacin. Para facilitar el control de la informacin de cada sala
programaremos una Clase de objeto a la que llamaremos SalaCine.


La Clase SalaCine

La Clase SalaCine definir caractersticas de una sala de cine, y permitir crear
objetos que representen salas de cine. Cuando la Clase SalaCine est
programada, se podrn hacer cosas como las que sigue:


Los Multicines Avenida tienen una sala central donde se proyectan
normalmente los estrenos. Se podra crear un objeto llamado central de la
clase SalaCine de la siguiente forma:

SalaCine central;

Por supuesto, este objeto puede ser construido como cualquier otro:

central = new SalaCine();

El objeto central representar a la sala de cine central de los Multicines
Avenida.



Otro ejemplo. Los Multicines Avenida tienen una sala donde proyectan
versiones originales. Se podra crear un objeto llamado salaVO de la clase
SalaCine de la siguiente forma:

SalaCine salaVO; //declaracin

salaVO = new SalaCine(); //construccin



Propiedades de los objetos de la clase SalaCine

A la hora de decidir las propiedades de un objeto de creacin propia, tenemos
que preguntarnos, qu informacin me interesa almacenar del objeto?
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

184 Ejemplo 2. Eventos del teclado | By reycito2011

Trasladando esta idea a nuestro caso prctico, qu informacin me
interesara tener de cada sala de cine?

Para este ejemplo supondremos que de cada sala de cine nos interesa tener
conocimiento de las siguientes caractersticas (propiedades):

- Aforo: define el nmero de butacas de la sala (un nmero entero).
- Ocupadas: define el nmero de butacas ocupadas (un nmero entero).
- Pelcula: define la pelcula que se est proyectando en el momento en la
sala (una cadena de texto)
- Entrada: define el precio de la entrada (un nmero double)




Valores por defecto de los objetos SalaCine

Cuando se construye un objeto, se asignan unos valores por defecto a sus
propiedades. Por ejemplo, cuando se construye una etiqueta (Clase JLabel),
esta tiene un tamao inicial definido, un color, etc.

Lo mismo se tiene que hacer con los objetos propios que definimos. Es
necesario decidir qu valores tendr las propiedades del objeto al construirse.

En nuestro caso, las caractersticas de un objeto SalaCine en el momento de
construirse sern las siguientes:

Aforo: 100
Ocupadas: 0
Pelcula: (la cadena vaca)
Entrada: 5,00

Observa este cdigo, en l construimos el objeto correspondiente a la sala
central del multicine:

SalaCine central;

central = new SalaCine();

En este momento (en el que el objeto central est recin construido) este
objeto tiene asignado un aforo de 100, el nmero de butacas ocupadas es 0, la
pelcula que se proyecta en la sala central es y la entrada para esta sala es
de 5 euros.

Los valores por defecto que se asignan a los objetos de una clase son valores
arbitrarios que el programador decidir segn su conveniencia.


Mtodos de los objetos SalaCine

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

185 Ejemplo 2. Eventos del teclado | By reycito2011

Para comunicarnos con los objetos de la Clase SalaCine que construyamos,
tendremos que disponer de un conjunto de mtodos que nos permitan asignar
valores a las propiedades de los objetos, recoger informacin de dichos objetos
y que le den rdenes al objeto.

Ser el programador el que decida qu mtodos le interesar que posea los
objetos de la Clase que est programando.

Para nuestro caso particular, supondremos que los objetos de la Clase
SalaCine debern tener los siguientes mtodos:


Mtodos de cambio de propiedades (Mtodos set)

setAforo - asignar un aforo a la sala de cine
setOcupadas - asignar una cantidad de butacas ocupadas a la sala de
cine
setLibres - asignar una cantidad de butacas libres a la sala de cine
setPelicula - asignar un ttulo de pelcula a la sala de cine
setEntrada - fijar el precio de las entradas a la sala de cine

Gracias a estos mtodos podemos dar forma a un objeto SalaCine recin
creado.

Por ejemplo, supongamos que queremos crear el objeto que representa la sala
de versiones originales. Resulta que esta sala tiene de aforo 50 localidades,
que se est proyectando la pelcula Metrpolis y que la entrada para ver la
pelcula es de 3 euros. La sala est vaca de momento.




Para crear el objeto, se usara el siguiente cdigo:

//Se construye el objeto
SalaCine salaVO;
salaVO = new SalaCine();

//Se le asignan caractersticas
salaVO.setAforo(50); //aforo 50
salaVO.setPelicula(Metrpolis); //la pelcula que se
proyecta
salaVO.setEntrada(3); //entrada a 3 euros


Al construir el objeto salaVO tiene por defecto los valores siguientes en sus
propiedades:

Aforo: 100
Ocupadas: 0
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

186 Ejemplo 2. Eventos del teclado | By reycito2011

Pelcula:
Entrada: 5,00

Gracias a los mtodos disponibles hemos asignados estos nuevos valores:

Aforo: 50
Ocupadas: 0
Pelcula: Metrpolis
Entrada: 3,00


Mtodos para pedirle informacin al objeto (Mtodos get)

Se programarn los siguientes mtodos get en la clase SalaCine:

getAforo - devuelve el aforo que tiene el objeto
getOcupadas - devuelve el nmero de butacas ocupadas que tiene el
objeto
getLibres - devuelve el nmero de butacas que tiene libres el objeto
getPorcentaje - devolver el porcentaje de ocupacin de la sala
getIngresos - devolver los ingresos producidos por la sala (entradas vendidas
por precio)
getPelicula - devolver el ttulo de la pelcula que se est proyectando
getEntrada - devolver el precio de la entrada asignado al objeto

Estos mtodos nos permitirn obtener informacin de un objeto del tipo
SalaCine. Por ejemplo, supongamos que tenemos el objeto llamado central
(correspondiente a la sala principal del multicine), para obtener la pelcula que
se est proyectando en dicha sala solo habra que usar este cdigo:

String peli; //una variable de cadena
peli = central.getPelicula();

O, por ejemplo, para saber los ingresos producidos por la sala central

double ingresos;
ingresos = central.getIngresos();



Mtodos para dar rdenes al objeto

Se programarn los siguientes mtodos para dar rdenes a los objetos de la
clase SalaCine.

vaciar

- Este mtodo pondr el nmero de plazas ocupadas a cero y le asignar
a la pelcula la cadena vaca.
entraUno
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

187 Ejemplo 2. Eventos del teclado | By reycito2011


- Este mtodo le dice al objeto que ha entrado una nueva persona en la
sala. (Esto debe producir que el nmero de plazas ocupadas aumente
en uno)




RESUMEN SALACINE

He aqu un resumen de la Clase de objetos SalaCine, la cual se programar en
la prxima hoja:

Clase de objetos: SalaCine

Propiedades de los objetos SalaCine:

Aforo - nmero entero (int)
Ocupadas - nmero entero (int)
Pelcula - cadena (String)
Entrada - nmero decimal (double)

Valores por defecto de los objetos del tipo SalaCine:

Aforo: 100
Ocupadas: 0
Pelcula: (cadena vaca)
Entrada: 5

Mtodos de los objetos del tipo SalaCine:

Mtodos de asignacin de propiedades (set)

setAforo - modifica la propiedad Aforo
setOcupadas - modifica la propiedad Ocupadas
setLibres - modifica la propiedad Ocupadas tambin
setPelicula - modifica la propiedad Pelcula
setEntrada - modifica la propiedad Entrada

Mtodos de peticin de informacin (get)

getAforo - devuelve el valor de la propiedad Aforo
getOcupadas - devuelve el valor de la propiedad Ocupadas
getLibres - devuelve el nmero de butacas libres
getPorcentaje - devuelve el porcentaje de ocupacin de la sala
getIngresos - devuelve los ingresos obtenidos por la venta de entradas
getPelicula - devuelve el valor de la propiedad Pelcula
getEntrada - devuelve el valor de la propiedad Entrada

Mtodos de orden
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

188 Ejemplo 2. Eventos del teclado | By reycito2011


Vaciar - vaca la ocupacin de la sala y borra la pelcula
entraUno - le indica al objeto que ha entrado una persona ms en la
sala



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

189 Ejemplo 2. Eventos del teclado | By reycito2011

EJERCICIO PRCTICO


Supongamos que programamos una Clase de objetos llamada Rectangulo, la
cual permitir construir objetos que representen a rectngulos.

1. Cmo declarara y construira un objeto llamado suelo del tipo
Rectangulo?


2. Supongamos que las propiedades de los objetos de la clase Rectangulo
sean las siguientes:

a. Base (double)
b. Altura (double)

Qu mtodos de tipo set programara para cambiar las propiedades de
los objetos del tipo Rectangulo?


3. Como ejemplo de los mtodos anteriores, suponga que quiere asignar al
objeto suelo una base de 30 y una altura de 50. Qu cdigo usara?


4. Teniendo en cuenta que nos puede interesar conocer el rea de un
objeto Rectangulo y su permetro, y teniendo en cuenta que los objetos
Rectangulo tienen dos propiedades (Base y Altura), qu cuatro
mtodos get seran interesantes de programar para los objetos del tipo
Rectangulo?


5. Teniendo en cuenta los mtodos del punto 4. Supongamos que quiero
almacenar en una variable double llamada area el rea del objeto suelo.
Qu cdigo usara? Y si quiero almacenar el permetro del objeto suelo
en una variable llamada peri?




CONCLUSIN

Para crear un objeto propio, necesita tener claro lo siguiente:

Nombre de la Clase del objeto.

Propiedades que tendrn los objetos de dicha clase.

Valores iniciales que tendrn las propiedades cuando se construya
cada objeto.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

190 Ejemplo 2. Eventos del teclado | By reycito2011

Mtodos que sern interesantes de programar:

Mtodos de ajuste de propiedades (set)
Mtodos de peticin de informacin (get)
Mtodos de orden

Una vez que se tenga claro lo anterior, se podr empezar la programacin
de la Clase de objetos.
EJERCICIO GUIADO. JAVA: POO. PROGRAMACIN DE UNA CLASE


Programacin de una Clase

En este ejercicio guiado, crearemos la Clase SalaCine, que hemos descrito en
la hoja anterior. Luego, a partir de esta clase, fabricaremos objetos
representando salas de cine, y los usaremos en un proyecto Java.

Recuerda las caractersticas que hemos decidido para la Clase SalaCine en la
hoja anterior:


CLASE SALACINE

Nombre de la Clase: SalaCine

Propiedades de los objetos SalaCine:

Aforo - nmero entero (int)
Ocupadas - nmero entero (int)
Pelcula - cadena (String)
Entrada - nmero decimal (double)

Valores por defecto de los objetos del tipo SalaCine:

Aforo: 100
Ocupadas: 0
Pelcula: (cadena vaca)
Entrada: 5

Mtodos de los objetos del tipo SalaCine:

Mtodos de asignacin de propiedades (set)

setAforo - modifica la propiedad Aforo
setOcupadas - modifica la propiedad Ocupadas
setLibres - modifica la propiedad Ocupadas tambin
setPelicula - modifica la propiedad Pelcula
setEntrada - modifica la propiedad Entrada

Mtodos de peticin de informacin (get)
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

191 Ejemplo 2. Eventos del teclado | By reycito2011


getAforo - devuelve el valor de la propiedad Aforo
getOcupadas - devuelve el valor de la propiedad Ocupadas
getLibres - devuelve el nmero de butacas libres
getPorcentaje - devuelve el porcentaje de ocupacin de la sala
getIngresos - devuelve los ingresos obtenidos por la venta de entradas
getPelicula - devuelve el valor de la propiedad Pelcula
getEntrada - devuelve el valor de la propiedad Entrada

Mtodos de orden

Vaciar - vaca la ocupacin de la sala y borra la pelcula
entraUno - le indica al objeto que ha entrado una persona ms en la
sala

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

192 Ejemplo 2. Eventos del teclado | By reycito2011

PROGRAMACIN DE UNA CLASE


Fichero de la Clase

La programacin de una clase de objetos se realiza en un fichero aparte, cuyo
nombre es exactamente el mismo que el de la propia clase, y cuya extensin
es .java.

Por ejemplo, si queremos programar la clase SalaCine, esto se debe hacer en
un fichero llamado:

SalaCine.java

Cuando programemos esta clase dentro de NetBeans, veremos las facilidades
que nos proporciona este para la creacin de la clase. De momento, solo
veremos de forma terica como hay que programar la clase. (No tiene que
introducir lo que viene a continuacin en ningn sitio)


Estructura bsica de la Clase

Dentro del fichero de la clase, comenzar la programacin de esta de la
siguiente forma:

public class SalaCine {



}

La programacin de una clase comienza siempre con una lnea de cdigo
como la que sigue:

public class NombreDeLaClase {


}

Toda la programacin de la clase se introducir dentro de las dos llaves.


Propiedades de la Clase

Lo primero que se debe introducir en la clase que se est programando son las
propiedades. Las propiedades de una clase son bsicamente variables
globales de sta. Si introducimos las propiedades de la clase SalaCine, esta
nos quedara as:

public class SalaCine {
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

193 Ejemplo 2. Eventos del teclado | By reycito2011


int Aforo;
int Ocupadas;
String Pelcula;
double Entrada;

}


Constructor de la Clase

Cuando se plante la clase SalaCine, se tuvo que decidir qu valores iniciales
deberan tener las propiedades de la clase. Para asignar estos valores iniciales,
es necesario programar lo que se denomina el Constructor.

El Constructor de una clase es un mtodo (un procedimiento para entendernos)
un poco especial, ya que debe tener el mismo nombre de la clase y no
devuelve nada, pero no lleva la palabra void. Dentro del constructor se
inicializan las propiedades de la clase.

En general, la programacin del constructor sigue la siguiente sintaxis:

public NombreDeLaClase() {
propiedad1 = valor;
propiedad2 = valor;
etc
}

La clase SalaCine, aadiendo el Constructor, tendr el siguiente aspecto:

public class SalaCine {

int Aforo;
int Ocupadas;
String Pelcula;
double Entrada;

//Constructor
public SalaCine() {
Aforo = 100;
Ocupadas = 0;
Pelicula = ;
Entrada = 5.0;
}

}

Observa como usamos el constructor de la clase SalaCine para asignar a cada
propiedad los valores por defecto decididos en el diseo de la clase que se hizo
en la hoja anterior.

Constructor
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

194 Ejemplo 2. Eventos del teclado | By reycito2011


Mtodos del tipo set

Todas las clases suelen contener mtodos del tipo set. Recuerda que estos
mtodos permiten asignar valores a las propiedades de la clase.

Debes tener en cuenta tambin que cuando se habla de mtodo de una clase,
en realidad se est hablando de un procedimiento o funcin, que puede recibir
como parmetro determinadas variables y que puede devolver valores.

Los mtodos del tipo set son bsicamente procedimientos que reciben valores
como parmetros que introducimos en las propiedades. Estos mtodos no
devuelven nada, as que son void.

Se recomienda, que el parmetro del procedimiento se llame de forma distinta
a la propiedad que se asigna.

Veamos la programacin del mtodo setAforo, de la clase SalaCine:

public void setAforo(int afo) {

Aforo = afo;

}

Observa este mtodo:

- Es void, es decir, no devuelve nada (el significado de la palabra public
se ver ms adelante)
- El mtodo recibe como parmetro una variable del mismo tipo que la
propiedad que queremos modificar (en este caso int) y un nombre que
se recomienda que no sea igual al de la propiedad (en nuestro caso, afo,
de aforo)

- Puedes observar que lo que se hace simplemente en el mtodo es
asignar la variable pasada como parmetro a la propiedad.


La mayora de los procedimientos set usados para introducir valores en las
propiedades tienen la misma forma. Aqu tienes la programacin de los dems
procedimientos set de la clase SalaCine.

//Mtodo setOcupadas
public void setOcupadas(int ocu) {
Ocupadas = ocu;
}

//Mtodo setPelicula
public void setPelicula(String peli) {
Pelicula = peli;
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

195 Ejemplo 2. Eventos del teclado | By reycito2011

}

//Mtodo setEntrada
public void setEntrada(double entra) {
Entrada = entra;
}

Hay un mtodo set de la clase SalaCine llamado setLibres cuya misin es
asignar el nmero de localidades libres del cine. Sin embargo la clase SalaCine
no tiene una propiedad Libres. En realidad, este mtodo debe modificar el
nmero de localidades ocupadas. Observa su programacin:

//Mtodo setLibres
public void setLibres(int lib) {
int ocu;

ocu = Aforo lib;
Ocupadas = ocu;
}


Al asignar un nmero de localidades ocupadas, estamos asignando
indirectamente el nmero de localidades libres. Como puedes observar en el
mtodo, lo que se hace es calcular el nmero de localidades ocupadas a partir
de las libres, y asignar este valor a la propiedad Ocupadas.

No se pens en crear una propiedad de la clase llamada Libres ya que en todo
momento se puede saber cuantas localidades libres hay restando el Aforo
menos las localidades Ocupadas.

La clase SalaCine, aadiendo los mtodos set, quedara de la siguiente forma:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

196 Ejemplo 2. Eventos del teclado | By reycito2011

public class SalaCine {

int Aforo;
int Ocupadas;
String Pelcula;
double Entrada;

//Constructor
public SalaCine() {
Aforo = 100;
Ocupadas = 0;
Pelicula = ;
Entrada = 5.0;
}

//Mtodos set

//Mtodo setAforo
public void setAforo(int afo) {
Aforo = afo;
}

//Mtodo setOcupadas
public void setOcupadas(int ocu) {
Ocupadas = ocu;
}

//Mtodo setPelicula
public void setPelicula(String peli) {
Pelicula = peli;
}

//Mtodo setEntrada
public void setEntrada(double entra) {
Entrada = entra;
}

//Mtodo setLibres
public void setLibres(int lib) {
int ocu;

ocu = Aforo lib;
Ocupadas = ocu;
}


}



Mtodos del tipo get
Mtodos Set
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

197 Ejemplo 2. Eventos del teclado | By reycito2011


Al igual que los mtodos set, los mtodos get son muy fciles de programar ya
que suelen tener siempre la misma forma.

Estos mtodos no suelen llevar parmetros y devuelven el valor de la
propiedad correspondiente usando la tpica instruccin return usada tanto en
las funciones. Por tanto, un mtodo get nunca es void. Siempre ser del mismo
tipo de datos que la propiedad que devuelve.

Veamos la programacin del mtodo getAforo:

//Mtodo getAforo
public int getAforo() {
return Aforo;
}

Como puedes ver el mtodo simplemente devuelve el valor de la propiedad
Aforo. Como esta propiedad es int, el mtodo es int.

Los mtodos que devuelven el resto de las propiedades son igual de sencillos
de programar:

//Mtodo getOcupadas
public int getOcupadas() {
return Ocupadas;
}

//Mtodo getPelicula
public String getPelicula() {
return Pelcula;
}

//Mtodo getEntrada
public double getEntrada() {
return Entrada;
}

Todos estos mtodos son iguales. Solo tienes que fijarte en el tipo de datos de
la propiedad que devuelven.

Existen otros mtodos get que devuelven clculos realizados con las
propiedades. Estos mtodos realizan algn clculo y luego devuelven el
resultado. Observa el siguiente mtodo get:

//Mtodo getLibres
public int getLibres() {
int lib;
lib = Aforo Ocupadas;
return lib;
}

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

198 Ejemplo 2. Eventos del teclado | By reycito2011

No existe una propiedad Libres, por lo que este valor debe ser calculado a
partir del Aforo y el nmero de localidades Ocupadas. Para ello restamos y
almacenamos el valor en una variable a la que hemos llamado lib. Luego
devolvemos dicha variable.

Los dos mtodos get que quedan por programar de la clase SalaCine son
parecidos:

//Mtodo getPorcentaje
public double getPorcentaje() {
double por;
por = (double) Ocupadas / (double) Aforo * 100.0;
return por;
}

Este mtodo calcula el porcentaje de ocupacin de la sala (es un valor double)

//Mtodo getIngresos
public double getIngresos() {
double ingre;
ingre = Ocupadas * Entrada;
return ingre;
}

Los ingresos se calculan multiplicando el nmero de entradas por lo que vale
una entrada.

La clase SalaCine una vez introducidos los mtodos get quedara de la
siguiente forma:

public class SalaCine {

int Aforo;
int Ocupadas;
String Pelcula;
double Entrada;

//Constructor
public SalaCine() {
Aforo = 100;
Ocupadas = 0;
Pelicula = ;
Entrada = 5.0;
}

//Mtodos set

//Mtodo setAforo
public void setAforo(int afo) {
Aforo = afo;
}
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

199 Ejemplo 2. Eventos del teclado | By reycito2011


//Mtodo setOcupadas
public void setOcupadas(int ocu) {
Ocupadas = ocu;
}

//Mtodo setPelicula
public void setPelicula(String peli) {
Pelicula = peli;
}

//Mtodo setEntrada
public void setEntrada(double entra) {
Entrada = entra;
}

//Mtodo setLibres
public void setLibres(int lib) {
int ocu;

ocu = Aforo lib;
Ocupadas = ocu;
}


//Mtodos get

//Mtodo getAforo
public int getAforo() {
return Aforo;
}

//Mtodo getOcupadas
public int getOcupadas() {
return Ocupadas;
}



//Mtodo getPelicula
public String getPelicula() {
return Pelcula;
}

//Mtodo getEntrada
public double getEntrada() {
return Entrada;
}

//Mtodo getLibres
public int getLibres() {
Mtodos Get
Mtodos Get
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

200 Ejemplo 2. Eventos del teclado | By reycito2011

int lib;
lib = Aforo Ocupadas;
return lib;
}


//Mtodo getPorcentaje
public double getPorcentaje() {
double por;
por = (double) Ocupadas / (double) Aforo * 100.0;
return por;
}


//Mtodo getIngresos
public double getIngresos() {
double ingre;
ingre = Ocupadas * Entrada;
return ingre;
}



}


Mtodos de orden

Para finalizar la programacin de la clase SalaCine, se programarn los dos
mtodos de orden que hemos indicado en el planteamiento de la clase. Estos
mtodos suelen realizar alguna tarea que involucra a las propiedades de la
clase, modificndola internamente. No suelen devolver ningn valor, aunque
pueden recibir parmetros.

Veamos la programacin del mtodo Vaciar, cuyo objetivo es vaciar la sala y
quitar la pelcula en proyeccin:

//Mtodo Vaciar
public void Vaciar() {
Ocupadas = 0;
Pelcula = ;
}

Como se puede observar, es un mtodo muy sencillo, ya que simplemente
cambia algunas propiedades de la clase.

El mtodo entraUno es tambin muy sencillo de programar. Este mtodo le
indica al objeto que ha entrado un nuevo espectador. Sabiendo esto, el objeto
debe aumentar en uno el nmero de localidades ocupadas:

//Mtodo entraUno
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

201 Ejemplo 2. Eventos del teclado | By reycito2011

public void entraUno() {
Ocupadas++;
}

Aadiendo estos dos ltimos mtodos, la programacin de la clase SalaCine
quedara finalmente como sigue:
public class SalaCine {

int Aforo;
int Ocupadas;
String Pelcula;
double Entrada;

//Constructor
public SalaCine() {
Aforo = 100;
Ocupadas = 0;
Pelicula = ;
Entrada = 5.0;
}

//Mtodos set

//Mtodo setAforo
public void setAforo(int afo) {
Aforo = afo;
}

//Mtodo setOcupadas
public void setOcupadas(int ocu) {
Ocupadas = ocu;
}

//Mtodo setPelicula
public void setPelicula(String peli) {
Pelicula = peli;
}

//Mtodo setEntrada
public void setEntrada(double entra) {
Entrada = entra;
}

//Mtodo setLibres
public void setLibres(int lib) {
int ocu;

ocu = Aforo lib;
Ocupadas = ocu;
}

Propiedades (variables globales)
Constructor
Mtodos Set
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

202 Ejemplo 2. Eventos del teclado | By reycito2011


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

203 Ejemplo 2. Eventos del teclado | By reycito2011

//Mtodos get

//Mtodo getAforo
public int getAforo() {
return Aforo;
}

//Mtodo getOcupadas
public int getOcupadas() {
return Ocupadas;
}


//Mtodo getPelicula
public String getPelicula() {
return Pelcula;
}

//Mtodo getEntrada
public double getEntrada() {
return Entrada;
}

//Mtodo getLibres
public int getLibres() {
int lib;
lib = Aforo Ocupadas;
return lib;
}


//Mtodo getPorcentaje
public double getPorcentaje() {
double por;
por = (double) Ocupadas / (double) Aforo * 100.0;
return por;
}

//Mtodo getIngresos
public double getIngresos() {
double ingre;
ingre = Ocupadas * Entrada;
return ingre;
}

//Mtodos de orden

//Mtodo Vaciar
public void Vaciar() {
Ocupadas = 0;
Pelcula = ;
Mtodos Get
Mtodos de orden y otros
mtodos.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

204 Ejemplo 2. Eventos del teclado | By reycito2011

}

//Mtodo entraUno
public void entraUno() {
Ocupadas++;
}


}
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

205 Ejemplo 2. Eventos del teclado | By reycito2011

EJERCICIOS RECOMENDADOS


Supongamos que tenemos una clase llamada Rectangulo que nos permitir
generar objetos de tipo rectngulo.

Sea el planteamiento de la clase Rectangulo el que sigue:


CLASE RECTANGULO

Nombre de la clase: Rectangulo

Propiedades de los objetos de la clase Rectangulo:

Base (double)
Altura (double)

Valores iniciales de las propiedades de los objetos de la clase Rectangulo:

Base 100
Altura 50

Mtodos:

Mtodos set:

setBase permite asignar un valor a la propiedad Base.
setAltura permite asignar un valor a la propiedad Altura.

Mtodos get:

getBase devuelve el valor de la propiedad Base
getAltura devuelve el valor de la propiedad Altura
getArea devuelve el rea del rectngulo
getPermetro devuelve el permetro del rectngulo

Otros mtodos:

Cuadrar este mtodo debe hacer que la Altura tenga el valor de la
Base.




SE PIDE:

Realiza (en papel) la programacin de la clase Rectangulo a partir del
planteamiento anterior.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

206 Ejemplo 2. Eventos del teclado | By reycito2011





21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

207 Ejemplo 2. Eventos del teclado | By reycito2011


CONCLUSIN

La programacin de una clase se realiza en un fichero que tiene el mismo
nombre que la clase y extensin .java

La estructura general de una clase es la siguiente:

public class NombreClase {

Propiedades (variables globales)

Constructor

Mtodos set

Mtodos get

Mtodos de orden y otros mtodos

}


El Constructor es un procedimiento que no devuelve nada pero que no es
void. El constructor debe llamarse igual que la clase y se usa para asignar
los valores iniciales a las propiedades.

Los mtodos set son void y reciben como parmetro un valor que se
asigna a la propiedad correspondiente.

Los mtodos get no tienen parmetros y devuelven el valor de una
propiedad de la clase, aunque tambin pueden realizar clculos y
devolver sus resultados.

Los mtodos de orden realizan alguna tarea especfica y a veces
modifican las propiedades de la clase de alguna forma.
EJERCICIO GUIADO. JAVA: POO. USAR CLASES PROPIAS EN UN
PROYECTO

Aplicacin de una Clase Propia

Una vez programada una Clase de creacin propia, podremos usar esta en uno
de nuestros proyectos para crear objetos de dicha clase. En este ejercicio
guiado veremos un ejemplo sobre cmo usar de forma prctica la clase
SalaCine en un proyecto java hecho con NetBeans.


EJERCICIO GUIADO

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

208 Ejemplo 2. Eventos del teclado | By reycito2011

El Multicines Avenida nos encarga un programa para gestionar el
funcionamiento de las dos salas con las que cuenta este pequeo
multicines.

La primera de las salas es la sala central. En ella se proyectan los
estrenos. Es una sala grande, con 500 localidades. El precio para ver una
pelcula en esta sala es de 8.00 euros.

La segunda de las salas es la sala de versiones originales. En esta sala se
proyectan pelculas clsicas en versin original. Es una sala con un aforo
ms pequeo, concretamente, de 80 localidades. El precio para ver una
pelcula en esta sala es de 6.00 euros.

Se crear un programa que nos permita controlar la entrada de personas en
las salas y podremos saber en todo momento el porcentaje de ocupacin de
cada sala y los ingresos obtenidos.


1. Crear un nuevo proyecto. Este proyecto se llamar multicines, contendr
un paquete llamado paqueteprincipal y este a su vez contendr un
JFrame llamado ventanaprincipal. El aspecto de la estructura del
proyecto al crearlo ser la siguiente:



2. Disear la ventana principal de forma que quede parecida a la siguiente.
Usa la ventana de diseo para hacer el diseo del formulario. Los
nombres de los componentes se indica a continuacin.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

209 Ejemplo 2. Eventos del teclado | By reycito2011












Etiqueta:

etiCentralPelicula
Etiqueta:

etiOriginalPelicula
Botones:

btnOriginalNueva
btnOriginalOcupacion
btnOriginalVaciar
btnOriginalIngresos
btnOriginalCambiar
Botones:

btnCentralNueva
btnCentralOcupacion
btnCentralVaciar
btnCentralIngresos
btnCentralCambiar
Panel:

panelCentral
Panel:

panelVOriginal
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

210 Ejemplo 2. Eventos del teclado | By reycito2011




3. Antes de empezar la programacin de cada botn del programa,
incluiremos en el proyecto la clase SalaCine, para as poder generar
objetos del tipo sala de cine y aprovecharlos en nuestro programa.

4. Para aadir un fichero de clase propio en un proyecto Java con
NetBeans, debes hacer clic con el botn derecho sobre el paquete
donde quieras introducir la clase. En nuestro caso, haremos clic con el
botn derecho sobre el paqueteprincipal, que es el nico que tenemos:







5. Elegiremos la opcin Nuevo / Clase Java





Botn

btnIngresosTotales
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

211 Ejemplo 2. Eventos del teclado | By reycito2011


6. Entonces tendremos que darle un nombre a nuestro fichero de clase.
Recuerda que el nombre debe ser el mismo que el de la clase que
queremos programar. En nuestro caso, SalaCine. Luego se pulsa el
botn Terminar.






7. Si vuelves a observar el esquema del proyecto, vers que dentro del
paquete principal ha aparecido un nuevo elemento, llamado SalaCine.
Este es el fichero donde programaremos nuestra clase SalaCine.







8. Si haces doble clic sobre el fichero SalaCine.java, podrs ver en el
centro de la ventana de NetBeans el cdigo de dicha clase. NetBeans
aade cierto cdigo a la clase para ahorrarnos trabajo, por eso ya
tendremos programado la instruccin inicial de la clase junto con el
comienzo del constructor y algunos comentarios que se aaden
automticamente:

El fichero de la clase SalaCine
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

212 Ejemplo 2. Eventos del teclado | By reycito2011





9. Ahora ya solo tendremos que completar la programacin de la clase,
aadiendo las propiedades, completando el constructor, y aadiendo los
distintos mtodos que programamos en la hoja anterior. Debes modificar
el fichero SalaCine para que quede as:

Inicio de la clase
Preparacin del constructor
Esta instruccin, generada por NetBeans,
indica que la clase SalaCine est
programada dentro del paqueteprincipal
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

213 Ejemplo 2. Eventos del teclado | By reycito2011

/*
* SalaCine.java
*
* Created on 2 de agosto de 2007, 12:14
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

package paqueteprincipal;

/**
*
* @author didact
*/
public class SalaCine {

//propiedades
int Aforo;
int Ocupadas;
String Pelicula;
double Entrada;


/** Creates a new instance of SalaCine */
//Constructor
public SalaCine() {
Aforo = 100;
Ocupadas = 0;
Pelicula = "";
Entrada = 5.0;
}

//Mtodos set

//Mtodo setAforo
public void setAforo(int afo) {
Aforo = afo;
}

//Mtodo setOcupadas
public void setOcupadas(int ocu) {
Ocupadas = ocu;
}

//Mtodo setPelicula
public void setPelicula(String peli) {
Pelicula = peli;
}

//Mtodo setEntrada
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

214 Ejemplo 2. Eventos del teclado | By reycito2011

public void setEntrada(double entra) {
Entrada = entra;
}

//Mtodo setLibres
public void setLibres(int lib) {
int ocu;
ocu = Aforo - lib;
Ocupadas = ocu;
}


//Mtodos get

//Mtodo getAforo
public int getAforo() {
return Aforo;
}

//Mtodo getOcupadas
public int getOcupadas() {
return Ocupadas;
}

//Mtodo getPelicula
public String getPelicula() {
return Pelicula;
}

//Mtodo getEntrada
public double getEntrada() {
return Entrada;
}

//Mtodo getLibres
public int getLibres() {
int lib;
lib = Aforo Ocupadas;
return lib;
}

//Mtodo getPorcentaje
public double getPorcentaje() {
double por;
por = (double) Ocupadas / (double) Aforo * 100.0;
return por;
}

//Mtodo getIngresos
public double getIngresos() {
double ingre;
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

215 Ejemplo 2. Eventos del teclado | By reycito2011

ingre = Ocupadas * Entrada;
return ingre;
}

//Mtodos de orden

//Mtodo Vaciar
public void Vaciar() {
Ocupadas = 0;
Pelicula = "";
}

//Mtodo entraUno
public void entraUno() {
Ocupadas++;
}

}



10. Ya hemos incluido la clase SalaCine en nuestro proyecto. A partir de
ahora podremos crear objetos del tipo SalaCine y aprovechar sus
caractersticas en nuestro programa.


11. Empezaremos a programar la ventana principal de nuestro programa.
Haz doble clic sobre el fichero ventanaprincipal.java en la ventana de
proyectos para pasar al diseo de la ventana principal:





12. Nuestro programa principal, gestiona el funcionamiento de dos salas de
cine: la sala central y la sala de versiones originales. Para facilitar
nuestro trabajo, sera interesante crear dos objetos globales del tipo
SalaCine. Uno de ellos representar la sala central, y el otro la sala de
versiones originales.

13. Para ello, acude a la ventana de cdigo de la ventana principal:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

216 Ejemplo 2. Eventos del teclado | By reycito2011





14. En la zona de variables globales de la ventana principal declararemos
dos objetos del tipo SalaCine:




15. Es en el constructor de nuestra ventana principal donde construiremos
nuestros objetos de tipo sala. (Recuerda que el constructor de tu
ventana principal se suele usar para construir los objetos que vas a usar
en tu programa y asignarle las caractersticas que tendrn dichos
objetos al inicio)






16. Recuerda que cuando se construyen objetos, estos tienen por defecto
unos valores iniciales. En el caso de los objetos tipo SalaCine, sus
valores son los siguientes:

Aforo 100, Ocupacin 0, Pelcula (cadena vaca) y Entrada 5.0

Ser necesario modificar las caractersticas de ambas salas ya que no
tienen ahora mismo los valores correctos.

Creamos dos objetos
sala de cine
Construimos los
objetos.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

217 Ejemplo 2. Eventos del teclado | By reycito2011

Se dijo al comenzar el ejercicio que la sala central tena las siguientes
caractersticas:

Aforo: 500 y un precio de entrada de 8 euros.

Por lo tanto, modificamos las caractersticas del objeto en el constructor
de la siguiente forma:




17. En el caso de la sala de versin original sucede lo mismo. Sus
caractersticas son la siguientes:

Aforo: 80. Precio entrada: 6.0 euros.

Por tanto ser necesario modificar el objeto vo para asignar estos
valores:




18. Ya hemos incluido dos objetos del tipo SalaCine en nuestro proyecto.
Los hemos declarado en la ventana principal como globales y los hemos
construido dndoles las caractersticas apropiadas. A partir de ahora,
usaremos esos objetos en la programacin de cada botn de la ventana.

Modificamos las
caractersticas del objeto
central (sala central)
Modificamos las
caractersticas del objeto
vo (sala versin original)
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

218 Ejemplo 2. Eventos del teclado | By reycito2011

19. Empezaremos programando el botn btnCentralCambiar. El objetivo de
este botn es asignar a la sala central un ttulo de pelcula. Ese ttulo se
debe mostrar tambin en la etiqueta etiCentralPelicula:




20. Entra en el actionPerformed del botn btnCentralCambiar y programa lo
siguiente:



El cdigo de este botn hace lo siguiente:

- Le pide al usuario que introduzca un ttulo para la pelcula, usando un
JOptionPane.showInputDialog. El ttulo introducido se recoge en una
variable de cadena llamada titulo.

- Luego se asigna dicho ttulo a la sala central del multicines. Esta lnea es
interesante, ya que se usa el mtodo setPelicula del objeto central para
asignar el ttulo de la pelcula.

- Y finalmente se coloca el ttulo en la etiqueta para que el usuario pueda
verlo.

Cambia el ttulo
de la pelcula de
la sala central.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

219 Ejemplo 2. Eventos del teclado | By reycito2011

21. Ejecuta el programa y observa el funcionamiento del botn.

22. Ahora se programar el botn btnCentralNueva:






Cada vez que un espectador compre una entrada para la sala central, el
usuario del programa deber pulsar este botn. Internamente, el
programa debe decirle al objeto central que ha entrado una nueva
persona en la sala. Esto se hace con el mtodo entraUno.

As pues, programe el actionPerformed del botn btnCentralNueva de la
siguiente forma:




Como puedes ver, simplemente se le informa al objeto central (sala
central) que ha entrado una nueva persona usando el mtodo entraUno.


23. Programaremos ahora el botn btnCentralOcupacion. Este botn nos
mostrar informacin sobre la sala central. Concretamente, este botn
debe mostrar lo siguiente:

Pelcula que se est proyectando.
Aforo total de la sala.
Butacas Ocupadas.
Butacas Libres.
Porcentaje de ocupacin.

Para mostrar toda esta informacin, ser necesario pedirle al objeto
central (sala central) que nos de informacin de la sala. Esto lo
conseguiremos usando los distintos mtodos get del objeto.

Estudia atentamente la programacin del botn btnCentralOcupacion:
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

220 Ejemplo 2. Eventos del teclado | By reycito2011







Observa el cdigo:

- Primero se crea una variable de cadena llamada info (informacin)

- A continuacin, se van concatenando textos a la variable de cadena.
Recuerda que los \n permiten aadir saltos de lnea.

- Observa como se va pidiendo informacin al objeto a travs de mtodos
get y se va concatenando esta informacin a la variable info.

- Finalmente se presenta el texto de la variable info en un JOptionPane.


24. Ejecuta el programa para observar el funcionamiento de los tres botones
que se han programado. Asigna una pelcula a la sala central, luego
pulsa varias veces el botn Nueva Venta y pulsa el botn %Ocupacin
para ver informacin sobre la sala:




Cambia el ttulo
de la pelcula
asignada a la sala
central
Pulsa este botn varias
veces, para simular la
venta de varias
entradas.
Pulsa aqu para ver
informacin actualizada
sobre la ocupacin de la
sala.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

221 Ejemplo 2. Eventos del teclado | By reycito2011


25. A continuacin se programar el botn Vaciar de correspondiente a la
sala central (btnCentralVaciar) Este botn debe situar la ocupacin de la
sala a cero y quitar la pelcula asignada a la sala central.

Programa en el actionPerformed del botn lo siguiente:





Como puedes observar, el cdigo es muy simple. Solo tengo que
ordenar al objeto central (sala central) que se vace. Debido a que ya no
hay pelcula asignada a la sala central, es conveniente tambin borrar el
contenido de la etiqueta que muestra el ttulo de la pelcula.


26. Programaremos ahora el botn Ingresos del panel de la sala central.
Este botn nos debe dar informacin sobre los ingresos producidos por
la sala en el momento en que se pulsa. Esta informacin la mostraremos
en un JOptionPane. Programa el actionPerformed de este botn como
sigue:



Como puedes ver, la programacin es bastante sencilla. Solo hay que
pedirle al objeto central (sala central) que nos diga los ingresos
correspondientes.

Observa la ventaja de usar objetos. No tenemos que hacer ningn
clculo aqu. Solo tenemos que pedirle al objeto que haga el clculo
necesario por nosotros. Dicho de otra forma, hacemos que ellos hagan
el trabajo por nosotros.


27. Ejecuta el programa para comprobar el funcionamiento de estos
botones. Asigna una pelcula a la sala central, vende algunas entradas,
comprueba el porcentaje de ocupacin y luego comprueba los ingresos.
Vaca la sala central, y vuelve a comprobar el porcentaje de ocupacin y
los ingresos actuales.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

222 Ejemplo 2. Eventos del teclado | By reycito2011











EJERCICIO

El segundo de los paneles hace referencia a la sala de versiones originales. Su
funcionamiento es el mismo que el de la sala central. Se pide que programe
todos los botones correspondientes a la sala de versiones originales.

La programacin es prcticamente igual, solo hay que actuar sobre el objeto vo
en vez del objeto central.


EJERCICIO

El botn IngresosTotales de la ventana, debera mostrar en un JOptionPane la
suma de los ingresos actuales de ambas salas. Programe dicho botn. Solo
tiene que pedirle a cada objeto: central y vo que le de sus ingresos, y sumar
ambos.







Asigna una pelcula y
vende varias
entradas
luego comprueba el
% de ocupacin y los
ingresos
prueba a vaciar la sala y
luego vuelve a comprobar
la ocupacin y los
ingresos
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

223 Ejemplo 2. Eventos del teclado | By reycito2011


CONCLUSIN

Se pueden aadir a un proyecto Java clases programadas por uno mismo.

Al hacer esto, en el mismo proyecto podemos crear objetos de dichas
clases y usarlos para hacer el programa.

En general, un proyecto java est constituido por un grupo de clases,
algunas de las cuales sern de creacin propia. En el programa usaremos
objetos derivados de dichas clases.

EJERCICIO GUIADO. JAVA: POO. HERENCIA

Concepto de Herencia

El concepto de Herencia consiste en crear una nueva Clase a partir de otra. La
nueva Clase es una mejora de la anterior. O dicho de otra manera, es una
especializacin de la primera Clase.

Concretamente, la Herencia consiste en tomar una Clase inicial, y, a partir de
ella, crear otra Clase que posee las mismas propiedades y mtodos que la
Clase inicial, adems de unas nuevas propiedades y mtodos que la Clase
inicial no posea. La nueva Clase creada puede incluso redefinir mtodos de la
Clase inicial.













La Clase inicial se denomina Clase Base, la Clase creada a partir de la clase
base se denomina Clase Derivada. La Clase Derivada contiene propiedades y
mtodos de la Clase Base ms unas propiedades y mtodos aadidos.


La Herencia es una tcnica muy til que nos permite reutilizar cdigo, es decir,
que nos permite usar de nuevo lo que ya tenamos programado aadiendo
simplemente algunos cambios adecuar el cdigo al proyecto actual.

La Herencia se puede aplicar tanto a Clases Propias, como a Clases propias
del lenguaje de programacin Java.

CLASE BASE
CLASE
DERIVADA
Herencia
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

224 Ejemplo 2. Eventos del teclado | By reycito2011


En esta explicacin guiada, veremos un ejemplo de uso de la Herencia con
clases propias del lenguaje Java.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

225 Ejemplo 2. Eventos del teclado | By reycito2011

EJERCICIO GUIADO


Planteamiento Inicial


Botones Contadores

Supongamos que en los proyectos cotidianos se plantea la necesidad de usar
botones que guarden el nmero de veces que son pulsados. Estos botones
funcionaran exactamente igual que los botones normales (JButton) y tendran
su mismo aspecto, pero sera interesante que adems tuvieran los siguientes
mtodos:

Mtodo setPulsaciones.
Permitir asignar un nmero de pulsaciones al botn.

btnContar.setPulsaciones(3);
//Se asignan 3 pulsaciones al botn btnContar


Mtodo getPulsaciones.
Permitir saber cuantas pulsaciones tiene un botn.

int p = btnContar.getPulsaciones(3);
//Se recoge el nmero de pulsaciones del botn
btnContar
//en la variable p

Mtodo incrementa.
Permite incrementar en uno las pulsaciones que tiene un botn.

btnContar.incrementa();
//Incrementa en uno las pulsaciones del botn
btnContar

Mtodo decrementa.
Permite decrementar en uno las pulsaciones que tiene un botn

btnContar.decrementa();
//Decrementa en uno las pulsaciones del botn
btnContar

Mtodo reiniciar.
Permite colocar las pulsaciones de un botn a cero.

btnContar.reiniciar();
//Sita a cero las pulsaciones del botn
btnContar

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

226 Ejemplo 2. Eventos del teclado | By reycito2011

Mtodo aumentar.
Permite aumentar en una determinada cantidad las pulsaciones del botn.

btnContar.aumentar(4);
//Aumenta en cuatro las pulsaciones del botn
btnContar

Mtodo disminuir.
Permite disminuir en una determinada cantidad las pulsaciones del botn.

btnContar.disminuir(6);
//Disminuye en 6 las pulsaciones del botn
btnContar


Los botones de este tipo tendran una propiedad llamada pulsaciones de tipo
entera que se inicializara a cero en el momento de construir el botn.

Desgraciadamente no existe un botn de este tipo en Java, as que no
podemos acudir a la ventana de diseo y aadir un botn como este.

Una posibilidad sera la de programar la clase correspondiente a un botn de
este tipo desde cero, pero esto es un trabajo tremendamente complejo.

La solucin a este problema es la Herencia. Bsicamente, lo que necesitamos
es mejorar la Clase JButton, la cual define botones normales y corrientes, de
forma que estos botones admitan tambin los mtodos indicados antes.

La idea es crear una nueva clase a partir de la clase JButton. A esta nueva
clase la llamaremos BotonContador y haremos que herede de la clase
JButton. Por tanto, la clase BotonContador tendr todas las caractersticas de
los JButton y adems le aadiremos los mtodos mencionados antes.














Gracias a la herencia, nuestra clase BotonContador poseer todos los mtodos
de los JButton (setText, getText, setForeground, setToolTipText, etc.) sin que
tengamos que programar estos mtodos.

JButton
BotonContador
Herencia
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

227 Ejemplo 2. Eventos del teclado | By reycito2011

Por otro lado, aadiremos a la clase BotonContador nuestros propios mtodos
(setPulsaciones, getPulsaciones, etc) y propiedades para que la clase est
preparada para nuestras necesidades.

Resumiendo: programaremos un botn propio, con caractersticas necesarias
para nuestro trabajo, aprovechando las caractersticas de un botn JButton.



Programacin de la Clase BotonContador


Creacin de la clase derivada

La programacin de la clase derivada BotonContador se har en un fichero
aparte, al igual que la programacin de las clases de creacin propia.

Se comenzar definiendo el comienzo de la clase y aadiendo las llaves que
limitan su contenido:


public class BotonContador extends JButton {


}


Observa el cdigo aadido: extends JButton antes de la llave de apertura.
Este es el cdigo que le permite indicar a Java que nuestra clase
BotonContador derivar de la clase JButton.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

228 Ejemplo 2. Eventos del teclado | By reycito2011

Creacin de las propiedades de la clase derivada

La clase BotonContador es una clase derivada de la clase JButton, y tendr las
mismas propiedades que la clase JButton, pero a nosostros nos interesa aadir
nuestras propias propiedades. En nuestro caso, necesitaremos una variable
que contenga el nmero de pulsaciones del botn en todo momento.

public class BotonContador extends JButton {

int pulsaciones;


}

Inicializacin de las propiedades de la clase derivada

Nuestra propiedad pulsaciones debe ser inicializada en el constructor de la
clase. Para ello crea el constructor de la clase:


public class BotonContador extends JButton {

int pulsaciones;

public BotonContador() {
pulsaciones=0;
}

}

Aadir mtodos propios a la clase derivada

Se aadirn los nuevos mtodos que queremos que la clase BotonContador
posea. Estos son los siguientes:

setPulsaciones - asigna un nmero de pulsaciones al botn.
getPulsaciones - devuelve el nmero de pulsaciones del botn.
incrementa - suma uno a las pulsaciones del botn
decrementa - resta uno a las pulsaciones del botn
reiniciar - pone a cero las pulsaciones del botn
aumentar - aumenta en una cantidad las pulsaciones del botn.
disminuir - disminuye en una cantidad las pulsaciones del botn.

Estos mtodos trabajan con la propiedad pulsaciones. Una vez programados
estos mtodos, la clase quedar de la siguiente forma (observa la
programacin de los distintos mtodos para entenderlos):




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

229 Ejemplo 2. Eventos del teclado | By reycito2011


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

230 Ejemplo 2. Eventos del teclado | By reycito2011

public class BotonContador extends JButton {

//propiedades
int pulsaciones;

//constructor
public BotonContador() {
pulsaciones=0;
}

//mtodos

//asigna una cantidad de pulsaciones
public void setPulsaciones(int p) {
pulsaciones=p;
}

//devuelve las pulsaciones del botn
public int getPulsaciones() {
return pulsaciones;
}

//incrementa en uno las pulsaciones
public void incrementa() {
pulsaciones++;
}

//decrementa en uno las pulsaciones
public void decrementa() {
pulsaciones--;
}

//pone las pulsaciones a cero
public void reiniciar() {
pulsaciones=0;
}

//aumenta las pulsaciones en una cantidad c
public void aumenta(int c) {
pulsaciones=pulsaciones+c;
}

//disminuye las pulsaciones en una cantidad c
public void disminuye(int c) {
pulsaciones=pulsaciones-c;
}

}



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

231 Ejemplo 2. Eventos del teclado | By reycito2011

Como has podido observar, la creacin de una clase heredada es exactamente
igual que la creacin de una clase propia. La nica diferencia es que hacemos
que dicha clase herede de otra clase ya existente, dndole ms posibilidades
sin necesidad de programar nada:

public class BotonContador extends JButton {

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

232 Ejemplo 2. Eventos del teclado | By reycito2011

Uso de la clase BotonContador


Usaremos la clase BotonContador en un simple proyecto de prueba para que
puedas observar sus posibilidades.


Para ello, sigue los pasos que se indican a continuacin:



1. Crea un proyecto llamado Contadores, que tenga un paquete principal
llamado paqueteprincipal y un JFrame llamado ventanaprincipal:



2. Aadiremos la Clase BotonContador. Para ello debes hacer clic con el
botn derecho sobre el paqueteprincipal y activar la opcin Nuevo
Clase Java. El nombre de la clase es BotonContador:




3. Antes de empezar con el diseo de la ventana principal programa la
clase BotonContador. Debes hacer doble clic sobre el fichero
BotonContador.java e introducir en l la clase BotonContador que hemos
diseado anteriormente usando herencia.

El fichero BotonContador.java debera quedar as:


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

233 Ejemplo 2. Eventos del teclado | By reycito2011

/*
* BotonContador.java
*
* Created on 6 de agosto de 2007, 10:59
*
* To change this template, choose Tools | Template
Manager
* and open the template in the editor.
*/

package paqueteprincipal;
import javax.swing.JButton;

/**
*
* @author didact
*/
public class BotonContador extends JButton {

//propiedades
int pulsaciones;

//constructor
public BotonContador() {
pulsaciones=0;
}

//asigna una cantidad de pulsaciones
public void setPulsaciones(int p) {
pulsaciones=p;
}

//devuelve las pulsaciones del botn
public int getPulsaciones() {
return pulsaciones;
}

//incrementa en uno las pulsaciones
public void incrementa() {
pulsaciones++;
}

//decrementa en uno las pulsaciones
public void decrementa() {
pulsaciones--;
}

//pone las pulsaciones a cero
public void reiniciar() {
pulsaciones=0;
}
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

234 Ejemplo 2. Eventos del teclado | By reycito2011


//aumenta las pulsaciones en una cantidad c
public void aumenta(int c) {
pulsaciones=pulsaciones+c;
}

//disminuye las pulsaciones en una cantidad c
public void disminuye(int c) {
pulsaciones=pulsaciones-c;
}
}
4. Ahora programaremos el diseo de la ventana. Lo haremos desde
cdigo. Entra en el mdulo ventanaprincipal.java y pasa a la zona de
cdigo:




5. En la zona de cdigo programaremos el tpico mtodo CreacionVentana,
llamado desde el constructor, donde se programar el diseo de la
ventana:




6. Nuestro programa tendr dos botones del tipo BotonContador. Declara
estos botones como variables globales de la clase:


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

235 Ejemplo 2. Eventos del teclado | By reycito2011




7. En el mtodo CreacionVentana definiremos caractersticas de la ventana
y construiremos estos botones y los situaremos en la ventana:





8. Como puedes ver, los botones contadores se construyen igual que los
JButton, y, de hecho, tienen los mismos mtodos que los JButton, ya
que derivan de ellos. As pues, un botn contador tiene un mtodo
setText, setBounds, etc

9. Ejecuta el programa y observa el resultado. Vers que en la ventana
aparecen los dos botones contadores, sin embargo, observars que
tienen el mismo aspecto que los JButton. Se vuelve a insistir que esto es
debido a que la clase BotonContador deriva de la clase JButton.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

236 Ejemplo 2. Eventos del teclado | By reycito2011




10. Ahora se aadir un actionPerformed a cada botn contador, para
controlar sus pulsaciones. Aade al final de CreacionVentana el
siguiente cdigo ya conocido, para la asignacin de eventos
actionPerformed a los botones:




11. Se tendrn que programar los procedimientos de respuesta a los
eventos, que aqu se han llamado PulsacionBotonA y PulsacionBotonB.
Progrmalos (fuera de CreacionVentana, claro est) de la siguiente
forma:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

237 Ejemplo 2. Eventos del teclado | By reycito2011

12. Cada vez que se pulse el botn A, debera aumentar su contador interno
de pulsaciones en uno. Lo mismo debera pasar con el botn B. Esto se
hace fcilmente usando el mtodo incrementa, propio de los botones
contadores:




13. Resumiendo, cada vez que se pulsa el botn A, se le da la orden al
botn A de que se incremente su contador interno. Lo mismo sucede
con el botn B.

14. Ahora programaremos dos botones ms en la ventana, pero estos sern
botones normales y los crearemos desde la ventana de diseo, para
facilitar la tarea. Estos botones se llamarn btnVerPulsaciones y
btnReiniciar.





15. Cuando se pulse el botn Ver Pulsaciones debera aparecer un
JOptionPane indicando cuantas veces se ha pulsado el botn A y
cuantas el B. Esto se har simplemente pidiendo a cada botn su
nmero de pulsaciones almacenadas.

Accede al actionPerformed del botn Ver Pulsaciones y programa lo
siguiente:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

238 Ejemplo 2. Eventos del teclado | By reycito2011




En este botn le pedimos al Botn A que nos diga cuantas pulsaciones
tiene anotadas (a travs del mtodo getPulsaciones) y lo mismo
hacemos con el Botn B. Esto es posible ya que ambos botones son del
tipo BotonContador, la clase heredada que hemos programado.


16. Ejecuta el programa y prueba lo siguiente:

- Pulsa varias veces el botn A y el B. Vers que no sucede nada (aunque
internamente cada uno de los botones est guardando el nmero de
pulsaciones en su propiedad pulsaciones)

- Pulsa ahora el botn Ver Pulsaciones y comprobars como este botn te
muestra las veces que pulsaste cada botn.





17. Ahora programaremos el botn Reiniciar de forma que los contadores
internos de ambos botones A y B se pongan a cero.
Pulsa los botones varias
veces
y luego pulsa el botn
Ver Pulsaciones.

Aparecer un JOptionPane
informando sobre las
pulsaciones realizadas.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

239 Ejemplo 2. Eventos del teclado | By reycito2011


18. Accede al actionPerformed del botn Reiniciar y programa lo siguiente:




19. Puedes comprobar el funcionamiento de este botn ejecutando el
programa y pulsando varias veces los botones A y B. Luego mira las
pulsaciones almacenadas en ambos botones. Pulsa el botn Reiniciar y
comprueba las pulsaciones de nuevo. Deberan ser cero en ambos
botones.






EJERCICIO


Se propone al alumno que aada las siguientes modificaciones al programa:

- Aade desde cdigo un nuevo botn Botn C (de tipo BotonContador)
que al pulsarse aumente su nmero de pulsaciones interno en 2 (usa el
mtodo aumentar propio de la clase BotonContador).

- Cuando se pulse el botn Ver Pulsaciones tambin debera verse el
nmero de pulsaciones del botn C.
Despus de pulsar los
botones A y B

si se pulsa el botn
Reiniciar

al ver las pulsaciones,
estas deben ser cero
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

240 Ejemplo 2. Eventos del teclado | By reycito2011


- Cuando se pulse Reiniciar, el nmero de pulsaciones del Botn C
debera situarse a cero tambin.

- Aade desde diseo un cuadro de texto y un botn normal (JButton)
llamado Iniciar. En el cuadro de texto se introducir un nmero, y al
pulsar el botn Iniciar, los valores internos de los tres botones A, B y C
se inicializarn al nmero introducido:






Se introduce un nmero

Y al pulsar iniciar, los
contadores internos de los
botones se inicializan al
valor introducido
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

241 Ejemplo 2. Eventos del teclado | By reycito2011



CONCLUSIN

La Herencia consiste en crear una clase que obtenga todas las
caractersticas de otra. Esta clase a su vez tendr tambin caractersticas
propias.

La clase inicial se denomina clase Base y la clase nueva creada a partir de
la clase base se llama clase Derivada:












Se puede hacer que una clase de creacin propia derive o herede de otra
ya existente aadiendo:

extends NombreClaseBase

en la lnea de creacin de la clase.

La clase creada as obtendr caractersticas de la clase de la que hereda.

Aparte, esta clase tendr mtodos propios aadidos por el programador.

EJERCICIO GUIADO. JAVA: POO. HERENCIA. DIALOGOS PROPIOS

Reutilizacin de cdigo

La gran ventaja de la Herencia es la posibilidad de aprovechar Clases ya
creadas (bien sea por nosotros mismos o por otros programadores) para crear
nuevas Clases. De esta forma, no tenemos que crear la nueva Clase desde el
principio, y solo tenemos que aadir algunos cambios a la Clase original, sin
que esta se vea afectada.

De esta manera, podemos tomar Clases de las libreras de Java y crear a partir
de ellas nuevas Clases para nuestras necesidades especficas. Estas clases
luego pueden ser incluidas fcilmente en futuros proyectos.


Cuadro de Dilogo Propio

CLASE BASE
CLASE
DERIVADA
Herencia
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

242 Ejemplo 2. Eventos del teclado | By reycito2011

Como ejemplo de todo esto, crearemos un cuadro de dilogo propio que puede
ser usado muy a menudo en nuestros proyectos. Concretamente, ser un
cuadro de dilogo que nos permita introducir una fecha (dia / mes / ao)

Debes tener en cuenta que los cuadros de dilogo son objetos de la clase
JDialog, por lo que este cuadro de dilogo propio tendr que derivar (heredar)
de la clase JDialog.

La clase JDialog se comporta como una ventana (un JFrame) as que su
programacin es relativamente sencilla.

Veremos el caso concreto de programar un Cuadro de Dilogo Propio a travs
del ejercicio guiado que viene a continuacin.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

243 Ejemplo 2. Eventos del teclado | By reycito2011

EJERCICIO GUIADO



20. Crea un proyecto llamado Fecha, que tenga un paquete principal
llamado paqueteprincipal y un JFrame llamado ventanaprincipal:



21. Para crear un cuadro de dilogo propio, debes hacer clic con el botn
derecho del ratn sobre el paquete principal y activar la opcin Nuevo
Archivo/Carpeta. A travs de esta opcin accedemos a un men desde
donde podemos aadir a nuestro proyecto distintos tipos de clases.




22. En la ventana que aparece, escogeremos en la parte izquierda la opcin
Formularios GUI Java, y en la parte derecha escogeremos la opcin
Formulario JDialog. Luego activa el botn Siguiente.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

244 Ejemplo 2. Eventos del teclado | By reycito2011




23. A continuacin tendremos que indicar el nombre que tendr la clase
correspondiente a nuestro cuadro de dilogo propio. En nuestro caso
llamaremos a esta clase dialogoFecha.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

245 Ejemplo 2. Eventos del teclado | By reycito2011



24. Y pulsa el botn Terminar. Observars que se ha creado una nueva
Clase dentro del proyecto llamada dialogoFecha.



25. Es interesante que veas el cdigo de esta clase. Haz doble clic sobre
ella:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

246 Ejemplo 2. Eventos del teclado | By reycito2011

Si observas el cdigo vers que es muy similar al de las Clases JFrame,
es decir, a la de la clase de la ventana principal.

Debes observar que la clase dialogoFecha que vas a crear es heredada
de JDialog, y tambin vers que hay un constructor similar al de los
JFrame, aunque con parmetros:





26. Adems, tenemos la ventaja de poder usar la ventana de diseo para
crear nuestro cuadro de dilogo dialogoFecha:






27. Usaremos la ventana de diseo para darle forma a nuestro cuadro de
dilogo. Recuerda que la finalidad de este cuadro de dilogo ser la de
permitirle al usuario introducir una fecha. Disalo para que quede as:





28. Asigna nombre a cada elemento:

a. El cuadro de texto para el da se llamar: txtDia
b. El cuadro de texto para el mes se llamar: txtMes
c. El cuadro de texto para el ao se llamar: txtAnio
d. El botn Aceptar se llamar btnAceptar
e. El botn Cancelar se llamar btnCancelar

29. Como ves, hasta ahora la creacin de un cuadro de dilogo propio es
algo muy sencillo, ya que es muy similar a la creacin de una ventana.
Hereda de JDialog
Constructor
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

247 Ejemplo 2. Eventos del teclado | By reycito2011

En este proceso (al igual que en la creacin de una ventana) participa el
concepto de herencia.

30. Ahora hay que dotar a nuestro cuadro de dilogo de las propiedades y
los mtodos necesarios para que sea fcil de usar. Antes de programar
todo esto, aqu tienes una descripcin de lo que queremos aadir al
cuadro de dilogo:


Propiedades:

Dia - entero
Mes - entero
Anio - entero
BotonPulsado - entero

Mtodos:

getFecha()

- Este mtodo devolver una cadena (String) con la fecha en
este formato:
dia/mes/ao

getFechaLarga()

- Este mtodo devolver una cadena con la fecha en el
siguiente formato:
Dia de Mes(en letras) de Ao


getBotonPulsado()

- Este mtodo devolver el valor de la propiedad BotonPulsado.
Esta propiedad podr tener un 0 o un 1. Tendr un 0 si se
pulsa el botn Aceptar, y un 1 si se pulsa el botn Cancelar.




31. Bien, empecemos. Programar las propiedades es algo sencillo, ya que
son simplemente variables globales a la clase dialogoFecha:



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

248 Ejemplo 2. Eventos del teclado | By reycito2011





32. Cuando el usuario pulse el botn Cancelar, el cuadro de dilogo de
fecha debe introducir el valor 1 dentro de su propiedad BotonPulsado, y
el cuadro de dilogo se cerrar. Para programar esto, acude a la
ventana de diseo y entra en el actionPerformed del botn btnCancelar.




Como puedes observar en el cdigo, asigno el 1 a la propiedad
BotonPulsado y luego uso el mtodo dispose para cerrar el cuadro de
dilogo.


33. Cuando el usuario pulse el botn Aceptar, el cuadro de dilogo de fecha
debe introducir el valor de los JTextField txtDia, txtMes y txtAnio en sus
respectivas propiedades: Dia, Mes y Anio. Luego, se debe introducir un
0 en la propiedad BotonPulsado, y finalmente se cerrar el cuadro de
dilogo.

Accede al actionPerformed del botn btnAceptar y programa lo
siguiente





34. Ya hemos programado las acciones a realizar cuando se pulse el botn
Aceptar y Cancelar. Ahora programaremos el resto de los mtodos.
Empezaremos por el mtodo getFecha.

Propiedades de la clase
dialogoFecha
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

249 Ejemplo 2. Eventos del teclado | By reycito2011

El mtodo getFecha devolver una cadena con la fecha en formato
dia/mes/ao. Por tanto, este mtodo tendr la siguiente forma. Debes
escribir este cdigo dentro de la clase dialogoFecha. El mejor sitio puede
ser debajo del constructor.



Observa el cdigo. Se unen las propiedades dia, mes y ao en una
cadena, separadas por el smbolo /. Luego se devuelve la cadena.


35. Ahora programaremos el mtodo getFechaCompleta. Este mtodo
devuelve la fecha con formato largo, usando el mes en letras. El mtodo
getFechaCompleta tendr el siguiente aspecto. Puedes programarlo a
continuacin del mtodo del punto anterior:


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

250 Ejemplo 2. Eventos del teclado | By reycito2011


Como puedes observar, se concatena el da en una cadena y luego,
dependiendo del valor de la propiedad Mes, se concatena un mes en
letras. Finalmente se concatena la propiedad Anio y se devuelve la
cadena.


36. Y ya para terminar con la programacin de nuestro dialogoFecha,
programaremos el mtodo getBotonPulsado, que bsicamente devuelve
la propiedad BotonPulsado, la cual contiene un 0 si se puls Aceptar y
un 1 si se puls Cancelar. La programacin de este mtodo es muy
sencilla:





La clase dialogoFecha est terminada. Gracias a ella podremos crear cuadros
de dilogo en nuestros proyectos para introducir fechas. Para probar esta
clase, usaremos nuestra ventana principal.


37. Acude a la ventana principal, haciendo doble clic sobre ella en la
ventana de proyectos:




38. Disea esta ventana para que tenga la siguiente forma:


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

251 Ejemplo 2. Eventos del teclado | By reycito2011



El botn se llamar btnFechaNacimiento y la etiqueta con borde se
llamar etiFechaNacimiento.


39. El programa funcionar de la siguiente forma:

a. Al pulsar el botn Introducir Fecha Nacimiento aparecer un
cuadro de dilogo del tipo dialogoFecha, donde el usuario
introducir la fecha de nacimiento.

b. Al pulsar Aceptar, dicha fecha aparecer en la etiqueta
etiFechaNacimiento.

c. Al pulsar Cancelar, la etiqueta etiFechaNacimiento se borrar.

40. Nuestro programa necesitar un cuadro de dilogo del tipo
dialogoFecha. Este cuadro lo declararemos en la zona de variables
globales de la ventana principal y lo llamaremos nacimiento






41. El objeto nacimiento es del tipo dialogoFecha. Recuerda que los objetos
que declaras de forma global, luego debes construirlos en el constructor.
As pues construiremos el objeto nacimiento.

Para construir un objeto que sea un cuadro de dilogo hay que aadir
dos parmetros: null, y luego indicar true o false, segn quieras que el
cuadro de dialogo sea modal o no. En nuestro caso, queremos que el
cuadro de dilogo nacimiento sea modal, por lo que indicaremos true:
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

252 Ejemplo 2. Eventos del teclado | By reycito2011





42. Programa el actionPerformed del botn btnFechaNacimiento. Este
botn mostrar al cuadro de dilogo nacimiento, donde el usuario
introducir una fecha. Luego, comprobaremos si el usuario puls
Aceptar o Cancelar. En el caso de que pulsara Aceptar, el programa
introducir en la etiqueta etiFechaNacimiento la fecha escrita por el
usuario. Todo esto se hace preguntando al objeto nacimiento a travs de
los mtodos programados. Observa el cdigo:






43. Ejecuta el programa y observa el funcionamiento del botn
btnFechaNacimiento y del cuadro de dilogo nacimiento




Se construye el
cuadro de dilogo
nacimiento. Ser
modal (true)
1) Al pulsar el botn
aparece el cuadro de
dilogo diseado por
nosotros
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

253 Ejemplo 2. Eventos del teclado | By reycito2011









EJERCICIO


Aade otra etiqueta a la ventana principal. Modifica el cdigo del botn
btnFechaNacimiento de forma que tambin aparezca en esta etiqueta la fecha
elegida por el usuario en formato largo. Esto debe suceder solo si el usuario
Acepta el cuadro de dilogo. En caso de que el usuario cancele el cuadro de
dilogo esta etiqueta se borrar.



CONCLUSIN

Es posible crear cuadros de dilogos propios, con las caractersticas que
ms nos interesen.

Estos cuadros de dilogo son clases que derivan de la clase JDialog.

Los cuadros de dilogo se comportan y manejan bsicamente igual que
las ventanas.

La gran ventaja de crear cuadros de dilogos propios, es que luego se
podrn usar en otros proyectos.

EJERCICIO GUIADO. JAVA: POO. REUTILIZACIN DE CDIGO

Reutilizacin de cdigo

La reutilizacin de cdigo consiste en aprovechar lo que ya tenemos
programado (as como aprovechar lo que han programado otros) para as
poder finalizar los proyectos en menos tiempo.

La filosofa de esto es: por qu programar lo que ya est programado?

A lo largo de la vida profesional de un programador, este se va haciendo con
un conjunto de Clases que son capaces de generar objetos que pueden ser
usados en los nuevos proyectos que el programador realice. Cuantas ms
clases coleccione, ms herramientas dispondr para crear los nuevos
proyectos.

En esta hoja guiada veremos algunos ejemplos de como podemos aprovechar
una Clase ya creada en un nuevo proyecto.
2) Al pulsar Aceptar o Cancelar,
el cuadro de dilogo modifica sus
propiedades internas (dia, mes,
ao y botn pulsado) y se cierra
3) El programa le pide
informacin al cuadro de dilogo
para saber que debe colocar en
la etiqueta.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

254 Ejemplo 2. Eventos del teclado | By reycito2011



EJERCICIO GUIADO 1


1. Crea un nuevo proyecto. El nombre del proyecto ser Reutilizacion.
Contendr un paquete llamado paqueteprincipal y dentro de l
introducirs un JFrame al que llamaremos ventanaprincipal:







2. Supongamos que en este proyecto queremos utilizar cuadros de dilogo
para introducir fechas. Podemos aprovechar la clase dialogoFecha
creada en la hoja guiada anterior. Para ello, abre el proyecto llamado
Fecha que hicimos en la hoja anterior.

Si despliegas el proyecto Fecha, tu ventana de proyectos tendr un
aspecto similar al siguiente:





Proyecto Fecha
Proyecto Reutilizacion
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

255 Ejemplo 2. Eventos del teclado | By reycito2011


Observars que el proyecto Fecha incluye la clase dialogoFecha dentro
de su paquete principal.


3. Para poder aprovechar la clase dialogoFecha en el proyecto
Reutilizacin, solo hay que copiar el fichero de la clase desde un
proyecto a otro. As pues Copia dialogoFecha





4. Y luego Pega en el paquete principal del proyecto Reutilizacion.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

256 Ejemplo 2. Eventos del teclado | By reycito2011




4. Observars como se aade una copia de dialogoFecha al paquete
principal del proyecto Reutilizacion.




A partir de ahora, podrs crear objetos de tipo dialogoFecha dentro del
proyecto Reutilizacion y aprovechar sus caractersticas, sin tener que
programar ningn cdigo adicional.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

257 Ejemplo 2. Eventos del teclado | By reycito2011




5. Cierra el paquete Fecha para despejar un poco la ventana de Proyectos
(Botn derecho cerrar proyecto)




6. Supongamos que necesitamos tambin la clase BotonContador creada
en la hoja guiada n 31. Solo tendremos que abrir el proyecto llamado
Contadores, que se program en dicha hoja



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

258 Ejemplo 2. Eventos del teclado | By reycito2011

7. Y luego copiar la clase BotonContador desde Contadores a
Reutilizacion. Hgalo y luego cierre la clase Contadores. Su ventana de
proyectos debera quedar as:



8. A partir de este momento, puede crear botones contadores y cuadros de
dilogo de introduccin de fechas en el proyecto Reutilizacion sin tener
que haber programado ni una lnea de cdigo.

9. Cuando tenemos proyectos de gran envergadura, es normal tener gran
cantidad de ficheros de clases. Se hace necesario entonces organizarlos
de alguna manera. Esto se hace a travs de la creacin de paquetes.

10. Para ver esta idea en nuestro proyecto Reutilizacion, crearemos un
nuevo paquete (botn derecho sobre Paquetes de origen y luego Nuevo
Paquete Java)




11. El nombre del paquete ser elementosventana. Su proyecto quedar
as:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

259 Ejemplo 2. Eventos del teclado | By reycito2011



12. En el nuevo paquete que hemos creado, introduciremos las clases
BotonContador y dialogoFecha. De esta forma, tendremos organizadas
nuestras clases. Por un lado la clase de la ventana principal, en el
paqueteprincipal, y por otro lado, los elementos de las ventanas de
creacin propia en el paquete elementosventana.

Para introducir las clases en el paquete elementosventana puede
hacerlo cortando y pegando.

Cuando intente pegar una clase en otro paquete aparecer un cuadro de
opciones como el siguiente:




Desactiva la opcin Previsualizar todos los cambios y pulsa Siguiente.

13. Una vez movidas las dos clases al paquete elementosventana, su
proyecto debe quedar as:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

260 Ejemplo 2. Eventos del teclado | By reycito2011



Ahora tiene mejor clasificadas sus clases en su proyecto.

14. Guarde el proyecto, pero no lo cierre, ya que se usar a continuacin.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

261 Ejemplo 2. Eventos del teclado | By reycito2011

EJERCICIO GUIADO 2


En el ejercicio guiado 1 hemos visto como podemos aadir a nuestro proyecto
clases que se hayan programado en otros proyectos, de forma que no
tengamos que volverlas a programar.

El problema que plantea lo anterior, es que tenemos que acordarnos de donde
fue programada la clase que quiero aadir al proyecto. Es decir, tengo que
acordarme del proyecto que contiene la clase.

Sera muy interesante que nuestras clases las tengamos reunidas en un solo
proyecto, para no tener que estar luego buscndolas por distintos proyectos.

Una Biblioteca en Java es un proyecto que contiene una serie de paquetes que
a su vez contienen distintas clases que son normalmente usadas en nuestros
proyectos. Al estar reunidas estas clases en un mismo sitio, son ms fciles de
encontrar.

Veremos en este ejercicio guiado como crear una Biblioteca.


1. Para crear una Biblioteca activa la opcin Archivo Nuevo Proyecto, y
en la ventana de opciones que aparece elige General y Biblioteca de
clases java.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

262 Ejemplo 2. Eventos del teclado | By reycito2011


2. Pulsa el botn Siguiente y asigna a la biblioteca el nombre MisClases.
Pulsa Terminar.



Observars que ha aparecido un nuevo proyecto, llamado MisClases.


3. A este nuevo proyecto le agregaremos el paquete elementosventana
que tenemos en el proyecto Reutilizacion. Solo hay que copiar:



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

263 Ejemplo 2. Eventos del teclado | By reycito2011



4. Y luego Pegar




5. Y el resultado es que hemos aadido un paquete a la biblioteca
MisClases:




6. Se podra agregar ms paquetes de clases a la biblioteca. A medida que
vayamos programando clases tiles para nuestro trabajo, deberamos
incluirlas en la biblioteca.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

264 Ejemplo 2. Eventos del teclado | By reycito2011


Se consigue as tener todas las clases reunidas en un solo proyecto.


7. Cierre el proyecto Reutilizacion, pero no el proyecto MisClases porque lo
usaremos a continuacin.




EJERCICIO GUIADO 3



1. Para facilitar la inclusin de una biblioteca en un proyecto, se suele
compactar la biblioteca en un fichero de tipo JAR. Para conseguir esto,
configura el proyecto MisClases como proyecto principal.




2. A continuacin pulsa el botn de la barra de herramientas Limpiar y
Construir proyecto principal:


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

265 Ejemplo 2. Eventos del teclado | By reycito2011


3. Al pulsar este botn, NetBeans compilar las distintas clases y buscar
errores en ellas. Si no encuentra ninguno mostrar un mensaje en la
parte inferior de la pantalla donde se indicar que la generacin ha sido
correcta:



4. Si todo ha ido bien, se debe haber generado un fichero llamado
MisClases.JAR que contiene toda la librera. Este fichero se encuentra
en una carpeta llamada DIST que a su vez se encuentra dentro de la
carpeta del proyecto.

5. Entra en MiPC y busca la carpeta DIST, que se encontrar dentro de la
carpeta del proyecto MisClases. Dentro de esa carpeta vers el fichero
MisClases.JAR. Copia el fichero MisClases.JAR al escritorio.

Un programador ordenado guardar todos sus ficheros JAR de biblioteca
en una carpeta que tendr a mano. Para este ejemplo, hemos copiado el
fichero MisClases.JAR en el escritorio.

6. Dentro del NetBeans, cierre el proyecto MisClases.

7. Crea un nuevo proyecto, que se llamar UsoLibreria. Dentro de l aade
un paqueteprincipal y dentro del paquete principal un JFrame llamado
ventanaprincipal. El aspecto de su ventana de proyecto ser el siguiente:




8. Imagine que queremos usar en este proyecto la librera anteriormente
creada y compactada. Para ello, haz clic con el botn derecho sobre el
elemento del proyecto llamado Bibliotecas y activa la opcin Agregar
Archivo JAR / Carpeta.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

266 Ejemplo 2. Eventos del teclado | By reycito2011





9. Busca en el escritorio el fichero MisClases.JAR y brelo.




10. En este momento, la librera de clases llamada MisClases ha sido
aadida a tu proyecto, y esto significa que podrs usar cualquier clase
que contenga MisClases. Es decir, podrs usar la clase BotonContador y
dialogoFecha para crear tus objetos, as como cualquier otra clase que
estuviera incluida en MisClases.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

267 Ejemplo 2. Eventos del teclado | By reycito2011



11. Resumiendo:

- Un programador crea muchas clases propias a lo largo de su
trabajo.
- Estas clases pueden ser usadas en otros proyectos.
- Es conveniente reunir las clases en paquetes, y reunir paquetes
en bibliotecas (tambin llamadas libreras)
- Las bibliotecas se pueden compactar en un solo fichero .JAR
- Al incluir un fichero de biblioteca en un proyecto, puedes usar las
clases que estn contenidas en dicha biblioteca.




CONCLUSIN

En NetBeans puedes abrir varios proyectos y copiar los ficheros de
clases de uno a otro.

Si un proyecto tiene muchas clases, interesa clasificarlas en paquetes.

Es interesante reunir las clases que ms uses en un solo proyecto de tipo
biblioteca, para poder acceder a ellas fcilmente.

Una biblioteca se puede compactar en un solo fichero de tipo .JAR

Al asociar un fichero de biblioteca .JAR a un proyecto, hacemos que en
dicho proyecto se puedan usar las clases contenidas en dicha biblioteca.

Todas estas ideas hacen efectiva la reutilizacin de cdigo, es decir, el
aprovechar lo ya programado, para no tener que volverlo a programar.

EJERCICIO GUIADO. JAVA: PROGRAMACIN MDI

Programacin SDI y Programacin MDI

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

268 Ejemplo 2. Eventos del teclado | By reycito2011

Todo programa tiene una interfaz grfica de usuario (gui) la cual permite a este
manejar el programa de forma sencilla. La interfaz grfica de usuario consta de
la ventana principal, cuadros de dilogo, botones, cuadros de texto, etc

Segn el tipo de interfaz que tenga el programa, las aplicaciones se suelen
dividir en dos tipos: Aplicaciones SDI y Aplicaciones MDI.

Aplicaciones SDI (Single Document Interface)

SDI se puede traducir como interfaz de documento nico. Esto quiere decir que
las aplicaciones SDI solo pueden mostrar el contenido de un documento a la
vez.

Un ejemplo prctico de aplicacin SDI es el bloc de notas de Windows. Si en el
bloc de notas quieres escribir un nuevo documento, tienes que cerrar antes el
documento con el que ests trabajando, ya que este programa no admite el
manipular varios escritos a la vez.

Hasta el momento, las aplicaciones de manejo de documentos que hemos
realizado hasta ahora han sido de tipo SDI.

Aplicaciones MDI (Multiple Documento Interface)

MDI se puede traducir como interfaz de mltiples documentos. Esto quiere
decir que las aplicaciones MDI pueden mostrar varios documentos a la vez.

Un ejemplo prctico de aplicacin MDI es el programa de retoque fotogrfico
Photoshop. En l, el usuario puede abrir varias fotos y trabajar con todas ellas.

Las aplicaciones MDI normalmente constan de una ventana principal, la cual,
puede contener otras ventanas interiores. Cada documento que se abre
aparece en una ventana interior.

En este ejercicio guiado, se explicarn las nociones bsicas para crear una
aplicacin MDI en Java con NetBeans.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

269 Ejemplo 2. Eventos del teclado | By reycito2011

EJERCICIO GUIADO 1


Se pretende crear un visor de imgenes MDI, es decir, que permita la
visualizacin de varias imgenes a la vez. El programa constar de una
ventana principal con un men. Las opciones de este men permitirn al
usuario abrir varias imgenes y cerrarlas a su gusto.

Al ser un proyecto MDI, las imgenes se abrirn en ventanas internas. Estas
ventanas internas tendrn que ser diseadas de forma adecuada.

Para crear este proyecto, tendremos que seguir tres pasos generales:

- Diseo de la ventana principal.
- Diseo de las ventanas internas.
- Programacin de la ventana principal / internas.



Diseo de la ventana principal


15. Crea un nuevo proyecto. El nombre del proyecto ser VisorFotos. Aade
un paquete llamado paqueteprincipal. Dentro de dicho paquete aade un
JFrame llamado ventanaprincipal.




16. Aade a la ventana principal una barra de mens, con una nica opcin
Archivo, que contenga a su vez las siguiente opciones:



Asigna los siguientes nombres a cada elemento del men:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

270 Ejemplo 2. Eventos del teclado | By reycito2011




17. Establece un layout de tipo BorderLayout al JFrame. Recuerda que este
tipo de distribucin divide la ventana en cinco zonas: norte, sur, este,
oeste y centro.





18. En la zona central de la ventana principal colocaremos un panel, pero no
ser un JPanel, como siempre, sino otro tipo de panel. Debes colocar un
panel del tipo JDesktopPane:



Este tipo de panel es usado como contenedor de las ventanas internas
de una aplicacin MDI. En NetBeans este tipo de panel se muestra de
color azul, para distinguirlo de los paneles normales, por eso, cuando
aadas el panel al JFrame este quedar as:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

271 Ejemplo 2. Eventos del teclado | By reycito2011





19. Cmbiale el nombre al JDesktopPane y asgnale el nombre
panelInterno:




20. Si ejecutas el programa ahora, vers que la ventana sale reducida al
mnimo tamao posible. Esto lo vamos a evitar haciendo que la ventana
aparezca maximizada al ejecutarse el programa. Tambin le
asignaremos un tamao inicial. Para ello, acude al constructor del
JFrame y programa lo siguiente:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

272 Ejemplo 2. Eventos del teclado | By reycito2011





Como ves, en el constructor se llama a un mtodo ConfiguracionVentana y
en este mtodo se asigna un tamao por defecto a la ventana de 800x600 y
se maximiza.



Llamada a un mtodo
ConfiguracionVentana
Programacin de dicho
mtodo.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

273 Ejemplo 2. Eventos del teclado | By reycito2011

Diseo de las ventanas internas

Se pretende que cuando se abra una imagen, el programa muestre una
ventana interna que contenga la imagen y nada ms. La barra de ttulo de esta
ventana interna contendr el camino de la imagen.

Para disear la ventana interna de la aplicacin, sigue los pasos que se indican
a continuacin:


21. Una ventana interna de una aplicacin MDI es un objeto de la clase
JInternalFrame. Ser necesario aadir esta clase al proyecto. Para ello,
haz clic con el derecho sobre el paqueteprincipal y elige Nuevo
Archivo/Carpeta.




22. Luego elige Formularios GUI Java y dentro de esta categora Formulario
JInternalFrame.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

274 Ejemplo 2. Eventos del teclado | By reycito2011





23. El nombre que le pondremos a este tipo de formulario ser el de
ventanainterna.




24. Si observas la ventana de proyecto, vers que ahora tenemos dos
clases: la ventana principal, y la ventana interna. Ahora disearemos la
ventana interna, para ello, haz doble clic sobre ventanainterna.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

275 Ejemplo 2. Eventos del teclado | By reycito2011




25. Como se dijo anteriormente, las ventanas internas mostrarn
simplemente la imagen que se abra. Para ello, solo hace falta introducir
una etiqueta (JLabel) que ser la que contenga la imagen. Esta etiqueta
debe ocupar toda la ventana, no tendr ningn texto dentro, y su nombre
ser etiImagen.


La etiqueta se llamar etiImagen


Y ocupar todo el JInternalFrame


26. En las hojas guiadas anteriores, se ha hablado de la programacin
orientada a objetos, y se ha comentado que los objetos poseen
propiedades. Estas propiedades son bsicamente variables globales
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

276 Ejemplo 2. Eventos del teclado | By reycito2011

internas. Para poder acceder a estas propiedades, es necesario
programar mtodos set.

Pues bien, la etiqueta etiImagen de la clase ventanainterna, no es mas
que una propiedad de la ventana interna, y para poder trabajar con ella,
ser necesario programar un mtodo set que permita modificar la
etiqueta a nuestro antojo.

Bsicamente, este mtodo set debe ser capaz de introducir en la
etiqueta una imagen. Haremos que este mtodo reciba como parmetro
el camino de la imagen a mostrar.

27. As pues, entra en la zona de cdigo de la ventanainterna y aade
despus del constructor el siguiente mtodo:







28. En la programacin MDI, ser habitual crear mtodos para poder
acceder a los distintos elementos de la ventana interna (etiquetas,
cuadros de texto, etc) En otras ocasiones, tendremos que crear mtodos
get para obtener informacin de las ventanas internas. Es algo muy
similar a la programacin de dilogos propios que se vio en hojas
anteriores.


29. Bien, con la programacin de este mtodo de acceso a la etiqueta de la
ventana interna, hemos terminado con el diseo de esta ventana, ahora
empezaremos a programar la ventana principal. Vuelve a ella haciendo
doble clic sobre la ventanaprincipal en la zona de proyectos:

Mtodo para acceder a
la etiqueta etiImagen
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

277 Ejemplo 2. Eventos del teclado | By reycito2011



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

278 Ejemplo 2. Eventos del teclado | By reycito2011

Programacin de la ventana principal

Se pretende ahora programar la opcin Abrir del men de forma que se elija el
fichero de imagen a mostrar y se muestre este en una ventana interna.

La opcin Cerrar del men permitir cerrar la ventana interna activa en un
momento determinado.

Sigue los pasos que se describen a continuacin:



30. Ya estamos preparados para programar las opciones del men.
Empezaremos por la opcin Abrir. Accede al actionPerformed de la
opcin Abrir y programa lo siguiente:




La opcin Abrir se encargar de abrir un fichero de imagen y mostrarlo
en una ventana interna del programa. Lo primero que hace esta opcin
es mostrar el cuadro de dilogo Abrir, que se usa para indicar el fichero
que se quiere abrir.

Se crea un objeto del tipo JFileChooser a travs de la lnea:

JFileChooser abrir = new JFileChooser();

Luego se le da la orden de que muestre el cuadro de dilogo Abrir. La
variable boton recoge el botn pulsado por el usuario (Aceptar /
Cancelar)

int boton = abrir.showOpenDialog(null);

Luego, a travs de un if, compruebo si se ha pulsado el botn Aceptar

if (boton==JFileChooser.APPROVE_OPTION) {

}

Dentro de este if tendremos que programar la accin correspondiente a
abrir la imagen y mostrarla en pantalla. Vamos a ello.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

279 Ejemplo 2. Eventos del teclado | By reycito2011



31. Programa dentro del if anterior lo siguiente. El cdigo se comentar a
continuacin.








Atento a este cdigo, porque define la creacin de ventanas internas,
conteniendo la imagen elegida para mostrar. Es el corazn del
programa

La primera instruccin, crea una ventana interna llamada vi. Como
puedes observar, es la creacin de un objeto vi de la clase
ventanainterna.

ventanainterna vi = new ventanainterna();

Lo siguiente que se hace con el objeto vi creado, es definir sus
caractersticas como ventana. Concretamente se decide que sea una
ventana con posibilidad de cambiar de tamao (setResizable), una
ventana que pueda ser maximizada (setMaximizable), una ventana que
pueda ser minimizada (setIconifiable) y finalmente que pueda ser
cerrada (setClosable)

vi.setResizable(true);
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

280 Ejemplo 2. Eventos del teclado | By reycito2011

vi.setMaximizable(true);
vi.setIconifiable(true);
vi.setClosable(true);

Una vez definidas dichas caractersticas de la ventana interna, esta se
aade al panel interno de la ventana principal, al que le dimos el nombre
panelInterno.

panelInterno.add(vi);

Ahora hay que introducir la imagen elegida dentro de la etiqueta de la
ventana. Primero hay que recoger el camino del fichero de imagen
elegido en el cuadro de dilogo abrir.

String camino = abrir.getSelectedFile().toString();

Ahora aprovechamos el mtodo setImagen que programamos
oportunamente dentro de la clase ventanainterna para situar dicha
imagen dentro de la etiqueta.

vi.setImagen(camino);

Colocamos el camino de la imagen en la barra de ttulo de la ventana
interna:

vi.setTitle(camino);

Finalmente hacemos visible la ventana interna.

vi.setVisible(true);


32. Ejecuta el programa y prueba a abrir varios ficheros de imagen.

Observa la creacin de las ventanas internas.

Observa como todas tienen el mismo aspecto (una etiqueta nica en la
ventana conteniendo la imagen)

Observa la posibilidad de moverlas, cambiarlas de tamao,
maximizarlas, minimizarlas y cerrarlas.

Observa como todas las ventanas internas estn encerradas dentro de
los lmites del panel interno de la ventana principal:


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

281 Ejemplo 2. Eventos del teclado | By reycito2011




33. Este proyecto se usar en las prximas hojas. Gurdalo.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

282 Ejemplo 2. Eventos del teclado | By reycito2011

CONCLUSIN

La programacin MDI consiste en crear aplicaciones capaces de abrir
varios ficheros y mostrarlos en distintas ventanas internas.

Una aplicacin MDI cuenta con dos elementos bsicos:

- Un panel interno JDesktopPane, el cual contendr las ventanas internas.

- Una clase del tipo JInternalFrame, la cual definir el diseo de las
ventanas internas.


La clase JInternalFrame que aadamos, tendr el nombre que queramos
asignarle y nos servir de plantilla para crear las ventanas internas de
nuestro proyecto. Esta clase podr tener mtodos internos para acceder a
los elementos de las ventanas internas.

Desde la ventana principal, se crearn objetos de la clase ventana interna,
y se definirn opciones relativas a la posibilidad de maximizar, cerrar,
minimizar, etc, dichas ventanas.

Desde la ventana principal se usarn los mtodos programados en la
ventana interna para poder manejarla con facilidad.

EJERCICIO GUIADO. JAVA: PROGRAMACIN MDI CONTINUACIN

Ventanas Internas

Tal como se explic en la hoja guiada anterior, una aplicacin MDI contiene un
panel del tipo JDesktopPane, dentro del cual se depositan objetos del tipo
JInternalFrame. Los objetos JInternalFrame son ventanas internas.

El programador debe aadir a su proyecto una clase heredada de
JInternalFrame. Esta clase ser la ventana interna. El programador disea el
aspecto de esta ventana y aade los mtodos que considere necesarios para el
manejo de dichas ventanas internas.

En la hoja anterior se cre un pequeo proyecto Visor de Fotos donde
hicimos todo esto. Este programa es capaz de abrir varias fotos en sus
correspondientes ventanas internas.

En esta hoja guiada veremos como podemos actuar sobre las distintas
ventanas internas que han sido abiertas en el JDesktopPane, y para ello
usaremos de nuevo el proyecto Visor de Fotos.



EJERCICIO GUIADO 1

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

283 Ejemplo 2. Eventos del teclado | By reycito2011

En este ejercicio guiado inicial, programaremos la opcin Cerrar del proyecto
Visor de Fotos. Esta opcin debe ser capaz de cerrar la ventana interna que
est activa en ese momento.

Se sabe cual es la ventana interna activa porque aparece por encima de las
dems, y porque tiene su barra de ttulo de color azul, mientras que las dems
aparecen en gris. La forma de seleccionar una ventana interna es simplemente
hacer clic sobre ella.









1. Abre el proyecto VisorFotos que realiz en la hoja anterior.

2. Accede a la ventana principal del proyecto, haciendo doble clic sobre la
clase ventanaprincipal.

3. Accede al evento actionPerformed de la opcin del men Cerrar y
programa lo siguiente:

Ventana interna activa
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

284 Ejemplo 2. Eventos del teclado | By reycito2011



4. Ejecuta el programa y comprueba el funcionamiento de la opcin Cerrar.
Se recomienda que abra varias imgenes en su programa y luego
seleccione una de ellas. Active la opcin Cerrar y observe como la
ventana interna se cierra.

5. El funcionamiento del cdigo que acaba de programar es el siguiente:

El panel interno panelInterno es un objeto del tipo JDesktopPane. Estos
paneles son paneles especiales preparados para contener ventanas
internas (JInternalFrame) y poseen algunos mtodos muy tiles para
manipular las ventanas internas que contienen.

Uno de los mtodos que ms usaremos ser getSelectedFrame. Este
mtodo devuelve la ventana interna seleccionada ahora mismo, o null si
no hay ninguna seleccionada.

En el cdigo anterior, observars que creamos un objeto vactiva del tipo
ventanainterna, y dentro de l metemos la ventana interna seleccionada
en este momento, ejecutando el mtodo getSelectedFrame:

ventanainterna vactiva = (ventanainterna)
panelInterno.getSelectedFrame();

Ahora ya podemos trabajar con vactiva sabiendo que se refiere a la
ventana activa. Lo que se hace a continuacin es cerrar la ventana
activa vactiva usando el mtodo dispose tpico de los objetos de
ventana.

Esto se hace, claro est suponiendo que haya alguna ventana activa,
por eso se comprueba que getSelectedFrame no haya devuelto null,
porque en ese caso es que no hay ventana interna activada y por tanto
no se puede cerrar.


6. Este cdigo es muy comn a la hora de trabajar en aplicaciones MDI.
Primero se comprueba cual es la ventana activa y luego se acta sobre
ella. Veamos ahora otro ejemplo. Aade al men la opcin Info:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

285 Ejemplo 2. Eventos del teclado | By reycito2011



7. Accede al evento actionPerformed de esta nueva opcin y programa lo
siguiente:




8. Este cdigo muestra el camino del fichero de la imagen que est
seleccionada en este momento. Observa que el proceso es el mismo.

Primero se extrae la ventana activa, usando el mtodo
getSelectedFrame, almacenndola en una variable llamada vactiva.

ventanainterna vactiva = (ventanainterna)
panelInterno.getSelectedFrame();

Si esta variable es null, entonces es que no hay ninguna ventana activa.

Si es distinta de null, se trabaja con ella. En el ejemplo anterior
extraemos el texto de la barra de ttulo de la ventana y lo mostramos en
un JOptionPane. (Recuerda que hemos programado la apertura de las
ventanas internas de forma que en la barra de ttulo aparezca el camino
de la imagen)


9. Ejecuta el programa y comprueba el funcionamiento de la opcin del
men Info.

10. Se ha visto que a travs del mtodo getSelectedFrame propio de los
JDesktopPane se puede acceder a la ventana activa. Pero, cmo
puedo acceder a otra ventana interna aunque no est activa?

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

286 Ejemplo 2. Eventos del teclado | By reycito2011

Para hacer esto, la clase JDesktopPane posee un mtodo llamado
getAllFrames la cual devuelve un vector conteniendo todas las ventanas
internas que hay actualmente en el JDesktopPane.


11. Para practicar con el mtodo indicado en el punto anterior, aade al
men Archivo una nueva opcin llamada Cerrar Todo:





12. Accede al evento actionPerformed de la nueva opcin y programa lo
siguiente:




13. Analicemos el cdigo anterior.

Lo primero que tienes que observar es el uso de getAllFrames. Este
mtodo devuelve un vector conteniendo todas las ventanas internas
actuales. En nuestro cdigo, almacenamos estas ventanas en un vector
llamado v.

JInternalFrame v[] = panelInterno.getAllFrames();

A continuacin, recorremos todo el vector y vamos cerrando cada
ventana almacenada en el vector.

Como puedes observar, este cdigo hace que se cierren todas las
ventanas de imagen abiertas.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

287 Ejemplo 2. Eventos del teclado | By reycito2011

14. Ejecuta el programa y comprueba el funcionamiento de la opcin Cerrar
Todo.

15. Este cdigo es un ejemplo de actuacin sobre todas las ventanas
internas abiertas. A continuacin usaremos esta misma idea para
organizar las ventanas dentro del panel interno. Aade las siguientes
opciones al men:





16. La opcin Cascada organizar las ventanas internas abiertas en
cascada. Para ello entra en el evento actionPerformed de la opcin y
programa lo siguiente:



17. Analicemos el cdigo.

Observa de nuevo el uso de getAllFrames para almacenar todas las
ventanas internas abiertas en un vector v:

JInternalFrame v[] = panelInterno.getAllFrames();

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

288 Ejemplo 2. Eventos del teclado | By reycito2011

A continuacin se recorre el vector y se asigna a cada ventana interna
(cada elemento del vector) un tamao con el mtodo setSize y una
posicin con el mtodo setLocation. Las posiciones de cada ventana van
variando para situar cada ventana una encima de la otra.

El vector se recorre al revs, desde la ltima ventana a la primera para
mejorar la visualizacin de dichas ventanas.


18. Ejecuta el programa y prueba el funcionamiento de la opcin Cascada.
Se recomienda que primero abra varias ventanas y luego pulse esta
opcin.








21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

289 Ejemplo 2. Eventos del teclado | By reycito2011

CONCLUSIN

En la programacin MDI siempre actan dos elementos:

- Un panel interno JDesktopPane, el cual contendr las ventanas internas.

- Una clase del tipo JInternalFrame, la cual definir el diseo de las
ventanas internas.

El panel interno posee diversos mtodos que permiten acceder a las
ventanas actualmente abiertas dentro de l. Entre estos mtodos
podemos destacar:

- getSelectedFrame, que devuelve la ventana interna activa en el momento
actual.

- getAllFrames, que devuelve un vector de JDesktopPane, conteniendo
todas las ventanas internas abiertas en el panel interno.

Gracias a estos dos mtodos podemos acceder a las ventanas internas y
actuar sobre ellas.

EJERCICIO GUIADO. BASES DE DATOS


Recapitulando GUI y PROCESO DE DATOS

Un programa bsicamente recibe una serie de datos, que introduce el usuario,
luego realiza una serie de clculos con ellos, y finalmente presenta los
resultados en pantalla.

El usuario usa una serie de elementos para introducir los datos en el programa
y para darle las rdenes al programa para que realice los clculos. Estos
elementos son las ventanas con todos sus componentes: botones, cuadros de
dilogos, etiquetas, listas desplegables, etc

El programa realiza los clculos con dichos datos y los resultados los presenta
en elementos de la ventana para que el usuario pueda verlos de forma
cmoda. Estos elementos donde aparecen resultados pueden ser etiquetas,
cuadros de mensaje, etc

Hay que distinguir por tanto entre el GUI y el Proceso de Datos.

El GUI (interfaz grfica de usuario) es el conjunto de elementos que permiten al
usuario comunicarse con el programa. Estos elementos le permiten al usuario
introducir datos, dar rdenes al programa y visualizar los resultados obtenidos.
Para entendernos, el GUI es bsicamente el diseo de las ventanas del
programa.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

290 Ejemplo 2. Eventos del teclado | By reycito2011

Un buen diseo del GUI es vital. La interfaz de usuario debe hacer que el
programa sea intuitivo, fcil de usar. Un programa incmodo, por muy bueno
que sea, ser rechazado por el usuario.

Aparte del GUI, internamente el programa debe realizar una serie de clculos
para obtener los resultados pedidos por el usuario. No hace falta decir que la
programacin de estos clculos debe ser precisa y correcta, ya que en caso
contrario el programa no servira para nada, por muy buena que fuera la
interfaz de usuario.

Todo lo anterior se puede representar grficamente de la siguiente forma:

















Clculos,
procesos,
acciones
Datos, rdenes
Datos, rdenes
Resultados
Resultados
Usuario
GUI
Interfaz de usuario
Ventanas, botones,
mens, etc
Programacin
interna:
Procedimientos,
funciones, clases,
etc
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

291 Ejemplo 2. Eventos del teclado | By reycito2011

BASES DE DATOS

Ahora se va a dar una vuelta de tuerca ms a lo indicado anteriormente
aadiendo a todo este entorno el concepto de Base de Datos.

Hay que tener en cuenta que la mayora de las aplicaciones que solicitan las
empresas son programas cuya funcin principal es la de mantener datos de la
propia empresa.

Estos programas suelen tener siempre las mismas funciones bsicas. Deben
ser capaces de:

- Almacenar datos producidos por la empresa: facturas, datos de clientes,
productos, gastos, ingresos, trabajadores, etc

- Visualizar dichos datos.

- Modificar / Eliminar dichos datos.

- Consultar dichos datos. Es decir, visualizar solo aquellos datos que
cumplan una condicin. Por ejemplo: visualizar las facturas del mes de
enero, o mostrar los productos que estn en stock, mostrar los
trabajadores que hayan trabajado ms de 100 horas, etc

- Realizar clculos con los datos. Por ejemplo, calcular el total de ingresos
entre dos fechas, calcular lo que hay que declarar de iva, etc


As pues, la mayor parte de las aplicaciones que encarga una empresa son
aplicaciones que deben gestionar una serie de datos. Estos datos deben estar
guardados en un fichero o ficheros. A este conjunto de datos que debe
manipular el programa se le denomina BASE DE DATOS.

Una Base de Datos no es solamente un conjunto de datos almacenados en un
mismo sitio. Hay que tener en cuenta que para que estos datos sean fciles de
manipular, es necesario que tengan una organizacin determinada. Una Base
de Datos mal organizada se convierte simplemente en un cajn de sastre
donde resulta imposible encontrar lo que se busca.

As pues, es necesario tener en cuenta la forma en que se organizarn los
datos dentro de la base de datos, o dicho de otra forma, el diseo de la base de
datos.

En las prximas hojas guiadas se vern conceptos bsicos para el diseo y
creacin de una base de datos, as como un lenguaje de consulta llamado SQL
que nos permitir acceder a los datos de una base de datos y realizar
determinadas acciones sobre la base de datos.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

292 Ejemplo 2. Eventos del teclado | By reycito2011

Acceso a la BASE DE DATOS desde la aplicacin

Aadiendo el concepto de Base de Datos a la idea de usuario, GUI y Proceso
de Datos, podemos representar grficamente un programa como sigue:






























Analicemos el grfico anterior:

1. El usuario le pide algo al programa. Por ejemplo el usuario quiere
obtener un listado de clientes, o quiere saber cuanto se ha ingresado el
ltimo mes

2. Para ello, el usuario activa los elementos del GUI necesarios. Es decir,
activar la opcin del men que corresponda, o el botn de la barra de
herramientas, etc. Dicho de otra manera, el usuario da una orden.

3. Es posible que el usuario tenga que introducir algn dato. Por ejemplo, si
quiere saber los ingresos del mes de enero, tendr que introducir enero
para que el programa sepa de que mes hay que calcular los ingresos.
Para ello el usuario usar un cuadro de texto del GUI, o un desplegable,
etc

Clculos,
procesos,
acciones,
Acceso a la
base de datos
Datos, rdenes,
consultas a la
base de datos
Resultados
Resultados
Usuario
GUI
Interfaz de usuario
Ventanas, botones,
mens, etc
Programacin
interna:
Procedimientos,
funciones, clases,
etc
Datos, rdenes,
consultas a la
base de datos


SQ
L
Consultar la base
de datos.

Aadir, modificar,
eliminar datos.
Resultados
de la
consulta
a la base
de datos
BASE

DE

DATOS
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

293 Ejemplo 2. Eventos del teclado | By reycito2011

4. Hay que tener en cuenta que para obtener un listado de clientes, o el
total de ingresos de un mes, hay que consultar la base de datos. El
usuario no se preocupar de eso ya que ser el programa el que haga el
trabajo.

5. El GUI traspasa la peticin del usuario al mdulo de Proceso de Datos.
Este mdulo es el corazn del programa, el que se encarga de ejecutar
las rdenes. Esta parte del programa analizar la orden y acto seguido
buscar los datos necesarios en la base de datos.

6. Para acceder a la base de datos, el mdulo de Proceso de Datos usar
un lenguaje ideado para el acceso a bases de datos llamado SQL.

7. Gracias al lenguaje SQL, el mdulo de Proceso de Datos obtendr los
datos necesarios que peda el usuario (por ejemplo el listado de clientes)
o bien los datos necesarios para realizar el clculo (los ingresos de cada
da del mes)

8. Una vez obtenido los resultados, el mdulo de Proceso de Datos se los
enviar al GUI y los presentar de forma agradable para el usuario.

9. El usuario mirar su pantalla, y ver aparecer en la ventana del
programa (en el GUI) el resultado que haba pedido.


Teniendo en cuenta lo visto, para la creacin de un programa hay que:

- Disear un GUI agradable, cmodo y fcil de usar.
- Disear la base de datos de forma que el acceso a datos sea rpido.
- Hacer el programa de forma que responda a las peticiones del usuario
transmitidas por el GUI accediendo a la base de datos y obteniendo
informacin de ella, o bien realizando acciones en ella.



GESTOR DE BASE DE DATOS

Un gestor de base de datos es un programa que nos permite crear bases de
datos, mantenerlas, realizar consultas en ellas, etc

A travs de un gestor de base de datos podemos crear la base de datos que
usar nuestro programa.

Existen diversos programas gestores de base de datos, pero el que se usar
ser el programa Microsoft Access.


DISEO DE BASE DE DATOS. MODELO ENTIDAD - RELACIN

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

294 Ejemplo 2. Eventos del teclado | By reycito2011

Antes de empezar a crear la base de datos usando el programa Access (o
cualquier otro gestor de base de datos que vaya a usar) es necesario pensar
en el diseo que tendr dicha base de datos. O dicho de otro modo, como se
organizarn los datos en la base de datos.

Para facilitar la tarea de organizar los datos en una base de datos, se usa una
representacin grfica llamada Modelo Entidad Relacin, o simplemente
Modelo E-R.

Podramos comparar el Modelo E-R a los Diagramas de Flujo. El Modelo E-R
nos facilita el diseo de bases de datos mientras que los Diagramas de Flujo
nos facilitan el diseo de algoritmos.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

295 Ejemplo 2. Eventos del teclado | By reycito2011

EJERCICIO GUIADO N 1


Veremos en este ejercicio guiado como disear una base de datos a partir de la
informacin aportada por una empresa, y un ejemplo de como representar
dicha base de datos usando el Modelo E-R.


Supuesto Inicial

La empresa MANEMPSA (Mantenimiento de empresas S.A.) se encarga de
realizar todo tipo de reparaciones y limpieza en los locales de sus clientes.

A esta empresa le interesa almacenar los datos de sus clientes. Concretamente
le interesa almacenar el CIF de la empresa del cliente, el nombre de dicha
empresa, la direccin y dos telfonos de contacto.

Por otro lado, MANEMPSA quiere guardar los datos de los trabajadores que
estn en plantilla. Le interesa saber el nombre y apellidos de dichos
trabajadores, el DNI, el sueldo y la fecha en que entraron en la empresa.

MANEMPSA quiere controlar los servicios que realiza cada trabajador.
Concretamente, MANEMPSA quiere almacenar la fecha en que se hizo el
servicio, el tipo de servicio que se hizo (fontanera, limpieza, electricidad, etc)
La cantidad cobrada por el servicio y un comentario donde se indique qu
acciones se realizaron.

Hay que indicar que cada servicio lo realiza un solo trabajador, y que cada
servicio se realiza a una sola empresa.

Cada trabajador tiene asignado un coche de la empresa. Hay un coche por
cada trabajador y cada trabajador siempre usa el mismo coche. A MANEMPSA
le interesa almacenar informacin de cada coche. Le interesa almacenar la
matrcula, la marca, el modelo y el ao de compra.

MANEMPSA le encarga un programa para gestionar toda esta informacin. Se
pide que disee la base de datos correspondiente que se usar en el
programa. Represente dicha base de datos usando el Modelo E-R.


1. Concepto de Entidad.

Entidad. Una entidad es un objeto que se quiere representar a travs de
una serie de caractersticas.

Las entidades son aquellos elementos que juegan un papel importante
en la base de datos. Son los elementos sobre los que queremos
almacenar informacin.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

296 Entidad Clientes | By reycito2011

2. Lo primero que hay que hacer es distinguir las entidades del supuesto.
Es decir, averiguar los elementos que se quieren almacenar en la base
de datos.

En el supuesto, las entidades son: los clientes, los trabajadores, los
servicios que realizan los trabajadores y los coches de los trabajadores.


3. Atributos de una Entidad.

A la empresa le interesa almacenar informacin sobre las entidades. Es
decir, le interesa almacenar informacin sobre los clientes, los
trabajadores, los servicios y los coches.

La informacin que se quiere almacenar de cada entidad se denomina
atributos de una Entidad.

Por ejemplo, de los clientes, se quiere almacenar las siguientes
propiedades: el CIF de la empresa, el nombre, etc...

A continuacin se indican los atributos que se almacenarn de cada
entidad, teniendo en cuenta el supuesto:

Entidad Clientes

Atributos: CIF, nombre empresa, direccin, telfono1, telfono2.

Entidad Trabajadores

Atributos: nombre, apellidos, DNI, sueldo, fecha de entrada.

Entidad Servicios

Atributos: fecha, tipo, cantidad, comentario.

Entidad Coches

Atributos: matrcula, marca, modelo, ao de compra.


4. Atributos clave.

Un Atributo Clave es aquel atributo cuyo valor no se repite y no puede estar vaco
para todos los elementos de una entidad.

Los Atributos Clave distinguen a cada elemento de una entidad.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

297 Entidad Servicios | By reycito2011

Por ejemplo, en el caso de la entidad Clientes, el atributo clave ser el
CIF, ya que no puede haber dos clientes con CIF iguales, y todos los
clientes tendrn CIF. El CIF permite distinguir a un cliente de otro.

Es conveniente asignar un atributo clave para cada entidad. En algunos
casos podemos elegir uno de los atributos de la entidad como atributo
clave, en otros casos ninguno de los atributos de la entidad podr ser
atributo clave y entonces tendremos que aadir uno nosotros.

Veamos los atributos clave de cada entidad:

Entidad Clientes: El atributo clave ser el CIF.

Entidad Trabajadores: Se puede elegir como atributo clave el DNI.

Entidad Coches: Se puede elegir como atributo clave la matrcula.

Entidad Servicios.

En el caso de la entidad Servicios, tenemos que ninguno de los atributos
que posee puede ser atributo clave. Observa:

- Dos servicios distintos pueden ser realizados en la misma fecha, por lo
que dos servicios pueden tener fechas repetidas: la fecha no puede ser
atributo clave.

- Dos servicios distintos pueden ser del mismo tipo, por los que dos
servicios pueden tener el mismo tipo: el atributo tipo no puede ser
atributo clave.

- Dos servicios distintos podran tener el mismo comentario, o no tener
comentario en absoluto: el atributo comentario no puede ser atributo
clave.

- Dos servicios distintos podran haber costado lo mismo, por lo que el
atributo cantidad no puede ser atributo clave.

No existe para la entidad Servicios un atributo que identifique cada
servicio. En estos casos se suele aadir un atributo que sea atributo
clave, es decir, un cdigo o identificador.

En nuestro ejemplo, aadiremos un atributo nmero que ser el
nmero de servicio realizado. Cada servicio tendr un nmero distinto,
por lo que el atributo nmero ser el atributo clave.

As pues, los atributos de la entidad Servicios sern los siguientes:

Entidad Servicios

Atributos: fecha, tipo, cantidad, comentario, nmero.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

298 Entidad Servicios | By reycito2011


Y el atributo nmero ser su atributo clave.


5. Relaciones entre entidades.

Las entidades se relacionan entre s. Es necesario distinguir en el
supuesto cuales son estas relaciones. Veamos:

Un Trabajador realiza Servicios. Por lo tanto, las entidades Trabajadores
y Servicios ser relacionan.

Un Servicio se realiza a un Cliente. Por lo tanto las entidades Servicios y
Clientes se relacionan.

Un Coche lo usa un Trabajador. Por lo tanto las entidades Coche y
Trabajadores se relacionan.

Estas son las relaciones:

Coches --- Trabajador --- Servicios --- Clientes



6. Cuando se establecen las relaciones, hay relaciones que estn
implcitas. Por ejemplo, no se ha establecido una relacin entre
Trabajadores y Clientes:

Un Trabajador hace trabajos a Clientes.

No est establecida una relacin directa entre ambas entidades, pero s
se relacionan a travs de la entidad Servicios:

Trabajador --- Servicios --- Clientes

As pues, en realidad, trabajadores y clientes se relacionan, a travs de
la entidad servicios.


7. Cardinalidad de las relaciones o Tipo de relaciones.

Segn la forma en que se relacionen dos entidades, tenemos tres tipos
de relaciones:

Relaciones 1 a 1

En este tipo de relacin, un elemento de la primera entidad se relaciona
con un elemento de la segunda entidad, y viceversa.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

299 Entidad Servicios | By reycito2011

En nuestro ejemplo, la relacin entre Coches y Trabajadores es del tipo
1 a 1, ya que un coche pertenece a un solo trabajador, y ese trabajador
solo usa ese coche.

Relaciones 1 a Muchos

En este tipo de relacin, un elemento de la primera entidad se relaciona
con muchos elementos de la segunda, pero un elemento de la segunda,
se relaciona con uno solo de la primera.

En nuestro ejemplo, la relacin Trabajadores Servicios es del tipo 1 a
Muchos. Observa: un trabajador realiza a lo largo de su vida laboral
muchos servicios, pero un servicio es realizado solo por un trabajador
(por lo que nos dice el supuesto).

La relacin entre Clientes y Servicios es tambin del tipo 1 a Muchos.
Observa: un cliente solicita a lo largo de su existencia muchos servicios
a la empresa, pero cada servicio se realiza a un solo cliente (por lo que
nos dice el supuesto).

Relaciones Muchos a 1

Este tipo de relacin es el mismo que el anterior. Basta con darle la
vuelta a la relacin.

Por ejemplo, se ha visto que la relacin Trabajadores Servicios es del
tipo 1 a Muchos. Por tanto, la relacin Servicios Trabajadores es del
tipo Muchos a 1.

Relaciones Muchos a Muchos

En este tipo de relacin un elemento de la primera entidad se relaciona
con muchos elementos de la segunda entidad, y viceversa.

En nuestro supuesto no tenemos ninguna relacin de este tipo, pero
supongamos la siguiente relacin entre Profesores y Cursos:

Un profesor puede dar varios cursos, y un curso es impartido por varios
profesores

Esta relacin sera del tipo Muchos a Muchos.


8. Averiguar el tipo de relaciones.

Para averiguar el tipo de cada relacin, es necesario estudiar bien el
enunciado del supuesto, y pedir informacin al cliente que nos encarga
el programa, de lo contrario, tendremos que hacer suposiciones para
asignar un tipo a cada relacin.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

300 Entidad Trabajadores | By reycito2011

En nuestro supuesto, las relaciones tienen el siguiente tipo:

Coches -1---1- Trabajadores -1---M- Servicios -M---1- Clientes

Relacin Coches Trabajadores. Tipo 1 a 1.
Relacin Trabajadores Servicios. Tipo 1 a Muchos.
Relacin Servicios Clientes. Tipo Muchos a 1.


9. Intercambio de atributos clave entre entidades relacionadas.

Para hacer efectivas las relaciones de la base de datos, es necesario
intercambiar los atributos claves entre las entidades relacionadas
siguiendo ciertas reglas.

Las reglas son las siguientes:

- Primera Regla. Si dos entidades se relacionan de forma 1 1, entonces
debe pasarse el atributo clave de una de ellas a la otra, y viceversa.

En nuestro ejemplo, las entidades Coches y Trabajadores se relacionan
de forma 1 a 1. Esto implica que es necesario aadir el atributo clave de
Coches a Trabajadores, y viceversa.

As pues, ser necesario aadir el atributo matrcula a Trabajadores, y el
atributo DNI a Coches.

Por tanto, las entidades Trabajadores y Coches quedarn as:

Entidad Trabajadores

Atributos: nombre, apellidos, DNI, sueldo, fecha de entrada, matricula

Entidad Coches

Atributos: matrcula, marca, modelo, ao de compra, DNI


- Segunda Regla. Si dos entidades se relacionan de forma 1 Muchas,
entonces, se debe pasar el atributo clave de la entidad de la parte de la
relacin 1, a la entidad de la parte de la relacin Muchas.

En nuestro ejemplo, las entidades Trabajadores --- Servicios se
relacionan de forma 1 a Muchas, por tanto, ser necesario traspasar el
atributo clave de la entidad Trabajadores a la entidad Servicios, con lo
que quedarn as:


Entidad Trabajadores

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

301 Entidad Servicios | By reycito2011

Atributos: nombre, apellidos, DNI, sueldo, fecha de entrada, matricula

Entidad Servicios

Atributos: fecha, tipo, cantidad, comentario, nmero, DNI.

Por otro lado, las entidades Servicios --- Clientes se relacionan de forma
Muchas a 1. Por tanto, ser necesario traspasar el atributo clave de la
entidad Clientes a la entidad Servicios, con lo que quedarn as:

Entidad Servicios

Atributos: fecha, tipo, cantidad, comentario, nmero, DNI, CIF.

Entidad Clientes

Atributos: CIF, nombre empresa, direccin, telfono1, telfono2.



10. Claves Forneas.

La razn de traspasar el atributo clave de una entidad a otra es que
exista un elemento de unin, en ambas entidades relacionadas.

Cuando una entidad posee un atributo clave de otra entidad, se dice que
ese atributo es una clave fornea.

Despus de realizar estos traspasos, nuestras entidades quedan con los
siguientes atributos.

Nota: se subraya con lnea continua el atributo clave en cada entidad, y
se subraya con lnea de puntos las claves forneas de cada entidad.


Entidad Coches

Atributos: matrcula, marca, modelo, ao de compra, DNI

Entidad Trabajadores

Atributos: nombre, apellidos, DNI, sueldo, fecha de entrada, matricula

Entidad Servicios

Atributos: fecha, tipo, cantidad, comentario, nmero, DNI, CIF.

Entidad Clientes

Atributos: CIF, nombre empresa, direccin, telfono1, telfono2.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

302 Entidad Clientes | By reycito2011



No confundas el concepto de atributo clave, con el concepto de clave
fornea.


11. Modelo E-R.

Una vez definidas las entidades, los atributos, atributos claves,
relaciones, tipos de relaciones, y claves forneas, todo esto se puede
representar de forma grfica como sigue:




El grfico anterior es lo que se llama un Modelo Entidad Relacin y es
una representacin de la base de datos que acabamos de disear.

En este grfico observars lo siguiente:

- Las entidades se representan en recuadros.
- Los atributos de cada entidad se representan en valos.
- El atributo clave de cada entidad se subraya.
- Las relaciones entre entidades se representan usando lneas con
rombos.
- Se indica el tipo de relacin (1 a 1, o 1 a Muchos) aadiendo a la lnea
de la relacin un 1 o una M para indicar el tipo de relacin.
Coches
Trabajadores
Servicios
Clientes
CI
F
nombre
direcci
Tfno
Tfno
matrcul
a
marc
a
model
o
ao
DNI
DNI
nombr
e
apellidos
sueld
o
fecha
matrcul
a
nmero
fecha
tipo
cantida
d
comentari
o
DNI
CI
F
1
1
1
1
M
M
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

303 Entidad Clientes | By reycito2011



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

304 Entidad Clientes | By reycito2011

CONCLUSIN

Las Bases de Datos son elementos vitales en la creacin de aplicaciones
para empresas.

Para disear una Base de Datos hay que especificar los siguientes
elementos:

- Entidades cuya informacin queremos almacenar.
- Atributos de dichas entidades.
- Atributos claves para dichas entidades.
- Relaciones entre entidades.
- Definir el tipo de relaciones.
- Asignar las claves forneas segn el tipo de relacin.

Una vez especificados estos elementos, todo el diseo se puede
representar grficamente a travs de un modelo grfico llamado Modelo
Entidad-Relacin.

EJERCICIO GUIADO. BASES DE DATOS. Traspaso a tablas del Modelo E-
R


Bases de Datos Relacionales

Como se ha comentado en la hoja anterior, una base de datos consiste en un
conjunto de datos bien organizados.

La forma de organizar estos datos es a travs de tablas. Estas tablas
contendrn la informacin que se desea almacenar.

Estas tablas se relacionan entre s, de forma que podamos extraer ms
informacin uniendo las tablas.

A las bases de datos que se organizan a travs de tablas que se relacionan
entre s se las denomina Bases de Datos Relacionales, y son las bases de
datos que ms se usan.


Traspaso a Tablas de un Modelo E-R

El Modelo E-R representa el diseo de una base de datos. Este modelo es
ideal para tomarlo como base a la hora de crear las tablas que formarn parte
de la base de datos.

En esta hoja guiada se ver como crear las tablas de una base de datos
tomando como referencia el Modelo E-R .

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

305 Entidad Clientes | By reycito2011

Una vez que tenemos la base de datos representada en forma de tablas, solo
tendremos que introducirlas en un programa Gestor de Bases de Datos como
por ejemplo Access.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

306 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1

Dado el Modelo E-R creado en la hoja anterior y que se muestra a
continuacin, crearemos las tablas necesarias que formarn parte de la base
de datos:





1. Tablas de la base de datos.

Primero hay que tener en cuenta que existirn tantas tablas en la base
de datos como entidades haya en el Modelo E-R.

Por tanto, podemos decir que la base de datos del supuesto tendr
cuatro tablas:

Tabla Coches, Tabla Trabajadores, Tabla Servicios, Tabla Clientes.

2. Cabecera de la tabla. Campos.

Toda tabla tendr una cabecera. La cabecera de una tabla define la
informacin que guardamos de cada elemento. A esta informacin que
se guarda de cada elemento se la denomina Campo.

Coches
Trabajadores
Servicios
Clientes
CI
F
nombre
direcci
Tfno
Tfno
matrcul
a
marc
a
model
o
ao
DNI
DNI
nombr
e
apellidos
sueld
o
fecha
matrcul
a
nmero
fecha
tipo
cantida
d
comentari
o
DNI
CI
F
1
1
1
1
M
M
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

307 Entidad Clientes | By reycito2011

Los Campos se corresponden con las distintas columnas de la tabla. En
un Modelo E-R los campos vienen representados por los atributos de las
entidades.

Al igual que existe un atributo clave para cada entidad, tambin existe un
campo clave para cada tabla.

3. Teniendo en cuenta lo anterior, las tablas de la base de datos tendrn
las siguientes cabeceras (se subraya el campo clave) :


Tabla Coches

Matrcula Marca Modelo Ao DNI





Tabla Trabajadores

DNI Nombre Apellidos Sueldo Fecha Matrcula




Tabla Servicios

Nmero Fecha Tipo Cantidad Comentario DNI CIF




Tabla Clientes

CIF Nombre Direccin Tfno 1 Tfno 2





4. Estas tablas ya se pueden relacionar gracias a que contienen las
distintas claves forneas, las cuales aadimos en el momento de
analizar las relaciones en el Modelo E-R.

Sin embargo, de momento, no es necesario hacer nada ms.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

308 Entidad Clientes | By reycito2011

5. Veamos un ejemplo del aspecto que podra tener la base de datos en un
momento dado. Como podrs observar, las tablas estarn rellenas de
informacin:


Tabla Coches

Matrcula Marca Modelo Ao DNI
3322-ASR SEAT Ibiza 2000 21.123.123-A
4433-ABB CITROEN Saxo 2001 12.321.567-B


Tabla Trabajadores

DNI Nombre Apellidos Sueldo Fecha Matrcula
21.123.123-
A
Ana Ruiz 1200 02-03-
2002
3322-ASR
12.321.567-
B
Juan Prez 1120 04-05-
2002
4433-ABB

Tabla Servicios

Nmer
o
Fech
a
Tipo Cantida
d
Comentari
o
DNI CIF
1 12-
04-
2004
Limpieza 300 21.123.12
3-A
B1122321
2
2 22-
05-
2005
Fontaner
a
238 Arreglo
tuberas
12.321.56
7-B
B2233446
6
3 21-
12-
2005
Electricida
d
130 Revisin
cableado
21.123.12
3-A
B3322111
1
4 10-
11-
2006
Fontaner
a
250 12.321.56
7-B
B1122321
2

Tabla Clientes

CIF Nombre Direccin Tfno 1 Tfno 2
B11223212 Seguros Segasa C/Ancha 2 956344334 629234323
B22334466 Academia La
Plata
C/La Plata 10 956302323
B33221111 Papelera
Cuatro
C/Larga 8 956305060


Si observas las tablas y sus claves forneas, puedes llegar a
conclusiones que afectan a varias tablas. Por ejemplo:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

309 Entidad Clientes | By reycito2011

Observando las tablas Coches y Trabajadores, puedes llegar a la
conclusin de que Ana conduce el SEAT y Juan el Citroen.

Observando las tablas Servicios, Clientes y Trabajadores, puedes llegar
a la conclusin de que el servicio de Fontanera realizado el 22 de mayo
de 2005 lo realiz el trabajador Juan a la empresa Academia La Plata.

Etc.

Estas conclusiones se producen al relacionar las tablas gracias a la
existencia de campos de unin entre ellas (claves forneas)


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

310 Entidad Clientes | By reycito2011

CONCLUSIN

Las Bases de Datos que se usarn son del tipo Relacional.

Una Base de Datos Relacional est formada por tablas, que son los
elementos que contienen la informacin.

Una vez realizado el Modelo E-R, resulta muy sencillo hacer el traspaso a
tablas. Solo se debe tener en cuenta lo siguiente:

- Cada entidad se corresponde con una tabla.

- Los atributos de una entidad son los campos de una tabla.

- La existencia de claves forneas en las tablas garantizan que se puedan
relacionar.

EJERCICIO GUIADO. BASES DE DATOS. Relaciones Muchas a Muchas


El problema de las relaciones Muchas a Muchas

En las hojas anteriores se ha visto que entre las entidades se pueden
establecer relaciones de tres tipos:

Relaciones 1 a 1.

Relaciones 1 a Muchas (o Muchas a 1).

Relaciones Muchas a Muchas.


De forma premeditada, se ha evitado tanto en las explicaciones como en los
ejercicios la aparicin de relaciones Muchas a Muchas, ya que estas relaciones
presentan muchos problemas a la hora de realizar su traspaso a tablas para
luego crear la base de datos e introducirla en un programa gestor de bases de
datos.

As pues las relaciones Muchas a Muchas se consideran relaciones
prohibidas que deben ser evitadas a toda costa.

Bsicamente, las relaciones Muchas a Muchas pueden ser anuladas
convirtindolas en relaciones 1 a Muchas (o Muchas a 1) De hecho, una buena
base de datos solo contendr relaciones 1 a 1 o 1 a Muchas, y se considera
que ha sido mal diseada si aparece alguna relacin Muchas a Muchas.

En esta hoja guiada se ver qu hacer cuando aparezca una relacin Muchas a
Muchas
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

311 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1


SUPUESTO ACADEMIA

Interesa almacenar cierta informacin sobre una academia. Concretamente se
quiere almacenar la siguiente informacin:

Interesa almacenar informacin sobre los alumnos de la academia. Interesa
almacenar el nombre del alumno, los apellidos, el DNI y la fecha de nacimiento.

Interesa almacenar informacin sobre los cursos que se da en la academia.
Interesa almacenar el cdigo del curso, el nombre del curso, el nmero de
horas y el nombre del profesor que lo imparte.

En la academia hay una pequea biblioteca. Interesa almacenar informacin
sobre los libros de esta biblioteca. Se almacenar el cdigo del libro, el ttulo, el
autor y el tema del libro.

Hay que tener en cuenta que la biblioteca est abierta a los alumnos de la
academia y se les puede hacer prstamos.


PASO A MODELO ENTIDAD RELACIN

1. Entidades participantes:

Estudiando el supuesto anterior, se ve claro que existen tres entidades
claras: alumnos, cursos y libros.

2. Atributos de cada entidad y Atributo clave:

No es complicado deducir los atributos de cada entidad. Son los
siguientes (subrayado el atributo clave):

Alumnos
Nombre
Apellidos
DNI
Fecha de nacimiento

Cursos
Cdigo del curso
Nombre del curso
Nmero de horas
Nombre del profesor

Libros
Cdigo del libro
Ttulo
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

312 Entidad Clientes | By reycito2011

Autor
Tema




3. Relaciones:

Veamos las relaciones:

Los alumnos hacen cursos por lo que la entidad Alumnos est
relacionada con Cursos.

Por otro lado los libros se prestan a los alumnos por lo que la entidad
Alumnos est relacionada con la entidad Libros.

Y no hay ms relaciones en la base de datos.


4. Tipos de relaciones.


Veamos la relacin los alumnos hacen cursos:

Un alumno puede apuntarse a muchos cursos. Por otro lado, en un
curso se apuntan muchos alumnos. Es una relacin Muchas a Muchas:




Veamos ahora la relacin los libros se prestan a los alumnos:

Un alumno puede pedir prestado varios libros mientras est en la
academia, por otro lado, un mismo libro puede ser prestado a varios
alumnos (No a la vez, claro est. El libro es prestado a un alumno, y
cuando es devuelto se le presta a otro alumno)

Por tanto tenemos tambin relacin Muchas a Muchas:




5. Prohibicin de las relaciones Muchas a Muchas.

Alumnos Cursos
M M
Alumnos Libros
M M
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

313 Entidad Clientes | By reycito2011

Tal como se ha explicado al principio de la hoja guiada, las relaciones
Muchas a Muchas estn prohibidas y tienen que ser eliminadas del
Modelo Entidad Relacin.

En nuestro caso tenemos dos relaciones Muchas a Muchas que sern
reconvertidas a relaciones Muchas a 1 (o 1 a Muchas) para hacerlas
desaparecer.






6. Existencia de entidad intermedia.

La aparicin de una relacin Muchas a Muchas suele ser debido a un
mal diseo de la base de datos. Este mal diseo viene dado por la falta
de informacin proporcionada por el enunciado del supuesto.

Esto ser habitual, ya que el cliente que nos encarga el programa no
siempre se explica con la claridad que desearamos.

La aparicin de relaciones Muchas a Muchas es debido a la existencia
de una entidad intermedia que no hemos tenido en cuenta, ya sea por
la falta de informacin del enunciado, o bien porque se ha dado por
sabida.

Esta entidad intermedia est entre las dos entidades que se relacionan
de forma Muchas a Muchas. Al no tener en cuenta esta entidad
intermedia, el resultado producido es la aparicin de la relacin Muchas
a Muchas:



As pues, cuando aparezca una relacin Muchas a Muchas, tendremos
que averiguar cual es la entidad intermedia que sin querer hemos
ignorado, y aadirla al modelo. Al hacer esto la relacin Muchas a
Muchas se sustituir por dos relaciones 1 a Muchas.

Por otro lado, la entidad intermedia puede contener atributos muy
interesantes para la base de datos, que igualmente hayamos ignorado.


7. Eliminacin de la relacin Muchas a Muchas los alumnos hacen
cursos.
Entidad 1 Entidad 2
M M
Entidad Intermedia
(ignorada)
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

314 Entidad Clientes | By reycito2011


Cada vez que un alumno se apunta a un curso, se matricula, o dicho de
otra forma, rellena una matrcula, o dicho de otra forma, hace una
reserva de plaza para el curso.

Estas reservas o matrculas (o como quiera llamarlo) es la entidad
intermedia que habamos pasado por alto, y que nos resuelve el
problema de la relacin Muchas a Muchas.

Veamos que sucede si ponemos la entidad matrculas entre las
entidades alumnos y cursos.



Aparecen dos nuevas relaciones: los alumnos se matriculan, y una
matrcula es para un curso.


8. Estudio de las nuevas relaciones.

Cuando aadimos la entidad intermedia a la relacin Muchas a Muchas,
aparecen dos relaciones nuevas que suelen ser del tipo 1 a Muchas.

Veamos:

Relacin los alumnos se matriculan.

Un alumno puede matricularse muchas veces (se puede apuntar a
muchos cursos). As pues un alumno realiza o rellena varias matrculas.

Sin embargo, una matrcula pertenece a un solo alumno.

Por tanto es una relacin 1 a Muchas:




Relacin una matrcula es para un curso.

Cada vez que se rellena una matrcula es para un solo curso. (Si
pudieras leer el formulario que rellena el alumno, veras que en el papel
se indica el curso al que se apunta, y solo es uno)

Alumnos Cursos Matrculas
Alumnos Cursos Matrculas
M
1
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

315 Entidad Clientes | By reycito2011

Por otro lado, para un curso se rellenan varias matrculas (tantas como
alumnos quieren apuntarse al curso)

Por tanto es una relacin 1 a Muchas:




9. Solucin del problema Muchas a Muchas:

Finalmente, al descubrir la entidad intermedia de la relacin Muchas a
Muchas, esta relacin ha desaparecido y se ha convertido en dos
relaciones 1 a Muchas, solucionndose el problema.


10. Atributos de la Entidad Intermedia.

Habr que asignar primero un atributo clave a la entidad intermedia. En
el ejemplo, ser interesante asignar un nmero de matrcula, de forma
que no haya dos matrculas con el mismo nmero.

En la entidad matrculas se puede almacenar otras informaciones, como
por ejemplo lo que paga el alumno por hacer el curso.

Tambin se podra almacenar la nota final obtenida por el alumno.

Finalmente, tambin hay que asignar a la entidad intermedia las claves
forneas. Recuerda que en las relaciones 1 a Muchas, hay que pasar la
clave de la parte 1 a la parte Muchas.

Si observas la relacin



tendremos que pasar el campo DNI desde la entidad alumnos a
matrculas, y el campo cdigo curso desde la entidad cursos a
matrculas, debido a la regla correspondiente a las relaciones 1 a
Muchas.

Por lo tanto, la entidad Matrculas del ejemplo quedar con los siguientes
atributos:


Matrculas
Alumnos Cursos Matrculas
M
1
M 1
Alumnos Cursos Matrculas
M
1
M 1
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

316 Entidad Clientes | By reycito2011

Nmero (atributo clave)
Pago
Nota final
DNI (clave fornea de alumnos)
Cdigo Curso (clave fornea de cursos)



11. Solucin de la relacin libros son prestados a alumnos

Veamos la solucin de la otra relacin problemtica Muchas a Muchas:



12. Entidad intermedia

Si estudiamos bien la relacin entre alumnos y libros de la biblioteca, nos
daremos cuenta que existe una entidad intermedia que hace referencia a
cada prstamo del libro.

Es decir, la entidad intermedia que hemos pasado por alto es
Prstamos, la cual guardar informacin sobre los prstamos de los
libros.

Con esta entidad, la relacin queda as:


13. Estudio de las nuevas relaciones

Relacin Alumnos Prstamos: Los alumnos piden prstamos de
libros

Un alumno puede solicitar varios prstamos mientras est en la
academia. Pero cada prstamo en concreto se hace a un alumno:
Relacin 1 a Muchas.

Relacin Prstamos Libros: Un prstamo es de un libro

Un libro puede participar en muchos prstamos (realizados a distintos
alumnos en momentos diferentes), pero cada prstamo en concreto
hace referencia a un libro solamente. Relacin 1 a Muchas.

Alumnos Libros
M M
Alumnos Libros Prstamos
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

317 Entidad Clientes | By reycito2011




Para entender estas relaciones, imagine que cada vez que se solicita un
prstamo se tiene que rellenar una ficha. En esta ficha se escribe el
nombre del alumno y el nombre del libro prestado.

Un alumno tendr muchas fichas (si ha pedido prestado muchos libros),
pero una ficha concreta solo tiene el nombre de un alumno.

Por otro lado, un libro aparecer en muchas fichas (ya que el libro es
prestado muchas veces), pero en una ficha concreta solo aparece el
nombre de un libro.

La idea de ficha es equivalente a la idea de prstamo. O aun mejor,
se podra hablar de ficha de prstamos.


14. Atributos de la nueva entidad.

As pues, con la creacin de la entidad prstamos se ha solucionado el
problema de la relacin Muchas a Muchas.

Ahora hay que determinar los atributos que tendr la nueva entidad
prstamos.

Atributo clave.

Se puede asignar un nmero de prstamo a cada prstamo para
distinguirlos entre s.

Claves forneas.

Hay que aadir a la entidad prstamos los atributos DNI y cdigo de
libro, debido a las reglas de claves forneas de las relaciones 1 a
Muchas (recuerde que hay que pasar el atributo clave desde la parte 1 a
la parte Muchas en estas relaciones)

Otros atributos interesantes.

Se puede aadir a esta entidad atributos como fecha de prstamo, fecha
de devolucin para controlar an mejor la informacin de cada prstamo
en concreto.

Por lo tanto, la entidad Prstamos del ejemplo quedar con los
siguientes atributos:

Alumnos Libros Prstamos
M M
1 1
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

318 Entidad Clientes | By reycito2011


Prstamos
Nmero (atributo clave)
Fecha prstamo
Fecha devolucin
DNI (clave fornea de alumnos)
Cdigo Libro (clave fornea de libros)


15. Despus de ha ver resuelto las dos relaciones problemticas Muchas a
Muchas, el Modelo Entidad Relacin resultante ser el siguiente
(subrayados con lnea continua los atributos clave, subrayados con
rayas los atributos claves forneas):





Se puede observar que ya no hay relaciones Muchas a Muchas, y que
han aparecido dos nuevas entidades que no estaban contempladas en
un principio en el enunciado.







Alumnos Libros
Prstamos
M M
1 1
Cursos
M
M
1
Matrculas
1
DNI
nombre
apellido
fecha
DNI
DNI
cdig
o
nombr
profeso
horas
cdig
o
nmero
pag
not
nmero
fecha
prstamo
fecha
devoluci
n
cdigo
libro cdigo
libro
ttul
autor tema
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

319 Entidad Clientes | By reycito2011


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

320 Entidad Clientes | By reycito2011

CONCLUSIN

Al realizar el diseo de una Base de Datos pueden aparecer relaciones
Muchas a Muchas.

Las Relaciones Muchas a Muchas estn prohibidas ya que pueden causar
muchos problemas.

Una relacin Muchas a Muchas aparece debido a que hay una entidad
intermedia que no ha sido identificada.

Al aadir la entidad intermedia, desaparece la relacin Muchas a Muchas
y aparecen dos relaciones 1 a Muchas, solucionndose el problema.

Ser necesario aadir a la nueva entidad su atributo clave y las claves
forneas debidas a las relaciones 1 a Muchas.

Tambin puede ser interesante aadir a la nueva entidad atributos que
aporten ms informacin a la base de datos.

EJERCICIO GUIADO. BASES DE DATOS. ACCESS


Gestor de Base de Datos.

En las hojas guiadas anteriores se ha explicado como disear una base de
datos.

Disear una base de datos consiste en organizar la informacin, en cierta
manera catica, que nos proporciona el cliente que nos encarga el programa.

Para organizar dicha informacin usamos una representacin grfica
denominada Modelo Entidad Relacin en la que representamos cada uno de
los elementos que participan en la base de datos (entidades), sus
caractersticas principales (atributos) y las relaciones que existen entre ellos.

Una vez finalizado el esquema Entidad Relacin de la base de datos, se realiza
una representacin en forma de tablas a partir de l.

As pues, disear una base de datos consiste en tomar la informacin catica
proporcionada por el cliente y organizar esta informacin en tablas.

El objetivo de esto, es facilitar la creacin de la base de datos en el programa
gestor de base de datos que se vaya a usar.

Un programa gestor de base de datos permite crear una base de datos a partir
de sus tablas. Y adems permite el mantenimiento de dichas tablas (aadir
datos, eliminar datos, modificar datos, realizar consultas, etc)

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

321 Entidad Clientes | By reycito2011

Es necesario tener claro el diseo (organizacin en tablas) de la base de datos
antes de poder crear esta usando el programa gestor de base de datos elegido.


Microsoft Access

Existen mltiples programas gestores de bases de datos que se pueden usar
para crear las bases de datos de sus aplicaciones.

En los ejercicios guiados que vendrn a continuacin se usar el gestor
Microsoft Access, el cual permitir la creacin de forma sencilla de bases de
datos adecuadas para las aplicaciones de base de datos que se realizarn en
java.

Este programa permite la definicin de las tablas, la creacin de consultas y el
acceso a la base de datos usando el lenguaje SQL, vital para el manejo de la
base de datos desde la aplicacin.

Por otro lado facilita mucho el manejo de la base de datos, la instalacin de
sta en el ordenador del cliente y las modificaciones posteriores, adems de
ser un gestor de base de datos muy extendido y conocido.

En los ejemplos que vendrn a continuacin, se usar la versin 2003 de
Microsoft Access.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

322 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1


En hojas anteriores se cre la base de datos de la empresa MANEMPSA, una
empresa encargada de proporcionar servicios de mantenimiento a otras
empresas.

Despus de realizar el Modelo Entidad Relacin y de hacer el traspaso a
tablas, el resultado fue el siguiente:


Tabla Coches

Matrcula Marca Modelo Ao DNI




Tabla Trabajadores

DNI Nombre Apellidos Sueldo Fecha Matrcula




Tabla Servicios

Nmero Fecha Tipo Cantidad Comentario DNI CIF




Tabla Clientes

CIF Nombre Direccin Tfno 1 Tfno 2





En este ejercicio guiado se crear la base de datos MANEMPSA formada por
las tablas anteriores usando el programa Access.

Para ello, siga los pasos que se indican a continuacin:

1. Abra el programa Access.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

323 Entidad Clientes | By reycito2011


2. Para crear una base de datos nueva, active la opcin del men Archivo
Nuevo. Y en la parte derecha de la ventana Base de Datos en Blanco.




3. Lo primero que tendr que hacer es decidir el lugar donde guardar la base de
datos y el nombre que le dar al fichero. Para nuestro ejemplo, elija la carpeta
Mis Documentos para guardar la base de datos y el nombre que le asignaremos
ser MANEMPSA.




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

324 Entidad Clientes | By reycito2011

4. La Base de Datos MANEMPSA debe contener cuatro tablas, las cuales
crearemos a continuacin. Para crear una tabla active la opcin Crear Tabla en
Vista Diseo en la ventana principal de Access:





5. La ventana que aparece a continuacin nos permitir definir los campos de la
tabla que vamos a crear. Empezaremos creando la tabla Coches (que se muestra
a continuacin).

Tabla Coches

Matrcula Marca Modelo Ao DNI




Para ello, haga lo siguiente:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

325 Entidad Clientes | By reycito2011

6. Introduzca el nombre del primer campo: Matricula, y a continuacin elija el
tipo de datos Texto. En la zona de comentarios no escriba nada.

El tipo de datos Texto define un dato que contendr letras o caracteres no
numricos, como espacios, guiones, etc. Una matrcula es texto ya que contendr
letras, y puede ser representada con guiones, espacios, etc.




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

326 Entidad Clientes | By reycito2011

7. En la parte inferior puede indicar el tamao que asignar para introducir una
matrcula. Por defecto aparece un valor de 50, pero este tamao es
exageradamente grande para una matrcula que no suele tener ms de 10
caracteres, segn la representemos.

As pues cambia el valor 50 por 10.




8. El siguiente campo de la tabla es la Marca. Este campo ser de tipo Texto, ya
que contiene letras y como tamao dejaremos 50.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

327 Entidad Clientes | By reycito2011

9. El siguiente campo es Modelo. Igualmente este campo ser de tipo Texto
debido a que contiene letras y dejaremos como tamao 50.



10. El siguiente campo es Ao. Este campo hace referencia al ao de compra del
coche, por lo que es un nmero. As pues, elige en el tipo de datos la opcin
Nmero, que define aquellos campos que contendrn nmeros vlidos desde un
punto de vista matemtico.

En la parte inferior estar definido el tipo Entero largo, que indica que los
nmeros que se introduzcan en este campo sern de tipo entero y no tendrn
decimales.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

328 Entidad Clientes | By reycito2011

11. El siguiente campo es el DNI. Se recuerda que este campo es una clave fornea,
y hace referencia al DNI del trabajador que conduce este coche.

Es habitual confundirse y asignar el tipo de datos Numrico a un DNI, pero
tenga en cuenta que un DNI contiene una letra, y puede contener espacios o
guiones segn la forma en que lo represente. Esto hace que un DNI no sea un
nmero vlido desde un punto de vista matemtico. El DNI en realidad es del
tipo de datos Texto.

No ponga DNI con puntos, ya que los nombres de campos en Access no admiten
puntos.

El tamao del DNI ser de 15:





21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

329 Entidad Clientes | By reycito2011

12. Ya estn aadidos todos los campos de la tabla, ahora hay que indicar cual de
ellos es el campo clave. El campo clave de la tabla es la matrcula, tal como se
defini a la hora de crear el modelo e-r. As pues, haz clic sobre matrcula y
pulsa el botn con forma de llave amarilla, llamado Clave Principal. Aparecer
una llave pequea al lado del campo y de esta forma el campo matrcula quedar
marcado como campo clave.






13. El diseo de la tabla Coches est casi terminado, solo hay que darle el nombre y
guardarla. Para ello, cierra la ventana de diseo de la tabla e indica que quieres
guardar los cambios.




14. Introduce el nombre de la tabla: Coches.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

330 Entidad Clientes | By reycito2011



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

331 Entidad Clientes | By reycito2011

15. Acabas de crear la primera tabla de la base de datos. En la ventana principal de
Access vers en el listado de tablas la tabla que acabas de crear.



16. Incluso, puedes hacer doble clic sobre la tabla para ver su contenido. Por
supuesto, ahora est vaca, ya que acaba de ser creada. No introduzcas nada en la
tabla.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

332 Entidad Clientes | By reycito2011

17. Cierra la ventana que muestra el contenido de la tabla para volver a la ventana
principal.




18. Ahora crearemos la siguiente tabla de la base de datos: Trabajadores, cuyo
diseo se muestra a continuacin:

Tabla Trabajadores

DNI Nombre Apellidos Sueldo Fecha Matrcula





19. Active la opcin Crear Tabla en Vista Diseo.

20. Introduzca el campo DNI. Su tipo de datos ser Texto y pondremos un tamao
de 15:





21. Introduzca los campos Nombre y Apellidos. El tipo de datos ser claramente
Texto y el tamao de cada uno lo dejaremos en 50.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

333 Entidad Clientes | By reycito2011




22. Introduzca el campo Sueldo. El tipo de datos que usaremos para este
campo ser Nmero, pero cambiaremos en la parte inferior el tipo de
nmero de Entero Largo a Doble. El tipo de nmero Doble permitir
representar nmeros con decimales:






Nota: Existe en Access un tipo de datos propio de aquellos campos que
almacenarn cantidades monetarias. Este tipo de datos se denomina
Moneda, pero no ser usado en los ejemplos. En sustitucin, se usar el
tipo Nmero que cumple perfectamente con el mismo cometido.

23. Aade ahora el campo Fecha, el cual hace referencia a la fecha de
entrada en la empresa del trabajador.

Para los campos que indiquen fecha, existe un tipo de datos llamado
Fecha / Hora.

Ser interesante poner un comentario a este campo para indicar que se
refiere a la fecha de entrada en la empresa y no a la fecha de nacimiento
del trabajador, por ejemplo:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

334 Entidad Clientes | By reycito2011



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

335 Entidad Clientes | By reycito2011

24. Aade ahora el campo Matrcula.

Se recuerda que este campo es una clave fornea y hace referencia a la
matrcula del coche que conduce el trabajador. Este campo tambin se
encuentra en la tabla Coches (es el campo clave de la tabla Coches), as
pues se definir aqu de la misma forma que est definido en la tabla
Coches: tipo texto y 10 de tamao:






25. Haz que el campo DNI sea el campo clave:




26. Cierra la ventana de diseo y guarda la tabla con el nombre
Trabajadores:



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

336 Entidad Clientes | By reycito2011

27. Ya tenemos creadas dos de las cuatro tablas de la base de datos:




28. Ahora le toca el turno a la tabla Clientes, la cual se muestra a
continuacin:

Tabla Clientes

CIF Nombre Direccin Tfno 1 Tfno 2





29. Activa la opcin Crear Tabla en Vista Diseo.

30. Aade el campo CIF. Su tipo de datos ser Texto (recuerda que lleva
una letra) y asignaremos un tamao de 15.






21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

337 Entidad Clientes | By reycito2011

31. Aade los campos Nombre y Direccin. Ambos campos sern
claramente de tipo Texto. Asignaremos a ambos un tamao de 100
caracteres.






32. Aade el campo Tfno1 y asgnale el tipo de datos Texto y un tamao
de 15. Haz lo mismo con el campo Tfno2:





Nota: Los campos Telfonos suelen causar mucha confusin, ya que se
pueden definir con el tipo de datos Nmero o Texto.

Tenga en cuenta que si quiere almacenar un telfono de esta forma:

956 30 30 30

o de esta otra:

(956) 30-30-30

Tendra que definirlo como Texto, ya que contiene caracteres no numricos (los
espacios, los parntesis, los guiones)

Si, en cambio, define el telfono como Nmero, solo podr almacenar nmeros
as:

956303030
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

338 Entidad Clientes | By reycito2011


Sin poder usar ni espacios, ni guiones, ni otro carcter que no sea un dgito.

En el ejemplo se han definido como Texto para permitir el uso de caracteres no
numricos.

33. Defina como campo clave el CIF:



34. Cierre y guarde la tabla con el nombre Clientes. Ya tiene tres de las
cuatro tablas de la base de datos.





35. Queda por aadir la tabla Servicios a la base de datos. Se muestra
esta tabla a continuacin:

Tabla Servicios

Nmero Fecha Tipo Cantidad Comentario DNI CIF




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

339 Entidad Clientes | By reycito2011


36. Activa la opcin Crear Tabla en Vista Diseo.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

340 Entidad Clientes | By reycito2011

37. Aade el campo Nmero. Su tipo de datos ser Autonumrico:

El tipo de datos Autonumrico hace que cada elemento que se aada a
la tabla tenga un nmero correlativo.

Este tipo de datos nos ahorra el tener que estar asignando un nmero
cada vez que se aada un servicio, ya que el nmero es asignado
automticamente.

El problema es que no podemos controlar el nmero que se asigna a
cada servicio. Por ejemplo, si el siguiente servicio debe tener el nmero
54 y queremos asignarle el nmero 100, no podremos hacerlo.

Para nuestro ejemplo, el tipo de datos Autonumrico ser suficiente.



38. Aade el campo Fecha. Su tipo de datos ser Fecha / Hora,
evidentemente.



39. Aade el campo Tipo. El tipo de la reparacin es un texto, as que
asigna el tipo de datos Texto. Su tamao ser de 50.



40. Aade el campo Cantidad. Este campo hace referencia al coste de la
reparacin. Ser un campo Numrico de tipo Doble, ya que puede llevar
decimales.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

341 Entidad Clientes | By reycito2011





41. El campo Comentario contendr un texto donde se explicar el servicio
realizado.

Debes tener en cuenta aqu que no se puede asignar una longitud mayor
de 255 caracteres a un campo de tipo Texto. Por lo tanto, si est previsto
que se escriba mucho texto en el campo Comentario, este tipo de datos
no ser el adecuado.

Existe otro tipo de datos mucho mejor para aquellos campos que vayan
a contener grandes cantidades de texto. Este tipo de datos se denomina
Memo, y ser as como definamos el campo Comentario:



42. Ahora hay que aadir los dos ltimos campos, los cuales son claves
forneas que permitirn relacionar la tabla Servicios con las tablas
Clientes y Trabajadores. Estos campos son el DNI y el CIF.

43. Aade el DNI. Tendr que ser de tipo Texto y un tamao de 15:



44. Ahora aade el CIF. Ser tambin de tipo Texto y tendr un tamao de
15:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

342 Entidad Clientes | By reycito2011



45. Los campos estn ya definidos. Ahora activa la opcin campo clave para
el campo Numero.




46. Finalmente cierre y guarde la tabla con el nombre Servicios. Y ya tendr
creadas las cuatro tablas de la base de datos.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

343 Entidad Clientes | By reycito2011

47. Como prueba, se pueden introducir algunos datos en las tablas de esta
base de datos directamente desde aqu. Introduciremos dos
trabajadores. Haz doble clic sobre la tabla Trabajadores, e introduce los
siguientes datos:



Luego cierra la ventana de la tabla Trabajadores.

48. Ahora introduciremos los coches de la empresa. Para ello haz doble clic
sobre la tabla Coches e introduce en ella los siguientes datos de los
coches:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

344 Entidad Clientes | By reycito2011



Luego cierra la ventana de introduccin de coches.

49. Haz ahora doble clic sobre la tabla Clientes. Introduciremos los datos de
varios de los clientes de la empresa:



Despus de introducir los datos de los clientes cierra la ventana de la
tabla Clientes.

50. Finalmente introduzca los datos de algunos de los servicios prestados.
Abra para ello la tabla Servicios e introduzca los siguientes datos
(observa como los nmeros aparecen de forma automtica en el campo
Nmero, esto es debido al tipo de datos Autonumrico)

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

345 Entidad Clientes | By reycito2011



51. Los datos que se introducen en una tabla se denominan registros, as
pues, si la tabla Servicios contiene la informacin de 4 servicios, se dice
que la tabla Servicios contiene 4 registros.

El concepto de registro hace referencia a las filas de una tabla.

52. Ya tenemos terminada la base de datos MANEMPSA. Hemos creado las
tablas que contiene e incluso hemos introducidos algunos registros en
las tablas para no dejarlas vacas. Ya puede cerrar el programa Access.

53. La base de datos que ha creado es un fichero llamado MANEMPSA. Al
crearlo lo guard dentro de la carpeta Mis Documentos. Eche un vistazo
al contenido de la carpeta Mis Documentos y busque all el fichero
MANEMPSA. Si hace doble clic sobre el fichero volver a abrir la base
de datos.

NOTA: Al abrir un fichero de base de datos de Access de la versin 2003
el programa le har varias preguntas, las cuales tendr que contestar de
la siguiente forma:

Advertencia de seguridad, las expresiones no seguras no estn
bloqueadas Desea bloquearlas? NO

Desea abrir el archivo? SI

Desea abrir el archivo o cancelar la operacin? Abrir


54. A la hora de programar una aplicacin java de bases de datos, se har
que nuestro programa acceda al fichero de base de datos que acaba de
crear con Access. As pues no pierda de vista el fichero de base de
datos que acaba de crear, ya que se usar en posteriores hojas guiadas.





21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

346 Entidad Clientes | By reycito2011

NOTA. El programa Microsoft Access es muy amplio y contiene mltiples
opciones de manejo de bases de datos, aunque solo lo usaremos para la
creacin de tablas y de consultas.

Se recomienda al alumno buscar informacin adicional sobre este programa.
En Internet podr encontrar mltiples tutoriales de aprendizaje de Access.














21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

347 Entidad Clientes | By reycito2011

CONCLUSIN

La informacin catica proporcionada por el cliente que encarga el
programa se organiza en tablas. Estas tablas conforman la base de datos.

La base de datos hay que introducirla en un programa gestor de bases de
datos, como por ejemplo Access.

En Access se crea el fichero que contendr la base de datos, y dentro de
l se disean las distintas tablas de la base de datos.

Es necesario indicar el tipo de datos que tiene cada campo de una tabla.
Puedes usar los siguientes tipos de datos segn necesites:

- Texto.
Campos que almacenarn todo tipo de caracteres, sobre todo
letras.
- Nmero.
Campos que almacenarn solo dgitos numricos.
Son nmeros con un formato correcto desde el punto de vista
matemtico.
- Fecha / Hora.
Campos para almacenar fechas.
- Memo.
Campos para almacenar grandes cantidades de texto.
- Autonumrico.
Campo que contendr nmeros correlativos.


Las tablas contendrn filas de informacin llamadas registros. Es posible
introducir registros directamente en las tablas creadas desde Access.

El fichero de base de datos creado desde Access ser usado por la
aplicacin java de base de datos.

EJERCICIO GUIADO. BASES DE DATOS. CONSULTAS EN ACCESS


Operaciones bsicas en una base de datos

El trabajo con una base de datos consiste bsicamente en hacer lo siguiente:

- Aadir nuevos registros a las tablas (guardar nueva informacin)
- Eliminar registros de las tablas (eliminar informacin de la base de
datos)
- Modificar registros (modificar la informacin guardada)
- Consultar las tablas.


Consultas
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

348 Entidad Clientes | By reycito2011


En esta hoja guiada nos centraremos en la realizacin de consultas.

Una consulta consiste en visualizar aquella informacin de la base de datos
que cumple determinados requisitos.

Por ejemplo, podra interesar el visualizar las ventas realizadas entre una fecha
inicial y otra final, o ver las ventas hechas a un cliente en concreto, o ver el
listado de trabajadores que tienen turno de maana, etc

Hay que tener en cuenta que las tablas de una base de datos contendrn
mucha informacin, pero no siempre necesitaremos acceder a toda ella. Por
eso, la realizacin de consultas es una accin habitual en una base de datos.

Por otro lado, la creacin de consultas nos permite averiguar determinada
informacin que no est tan accesible cuando la base de datos es muy grande.

Por ejemplo, podramos querer ver quienes son los trabajadores que cobran
ms de una cantidad de sueldo determinada, o qu clientes no han pagado
determinadas ventas, etc


Consultas en Access

Access permite la creacin de consultas de forma sencilla. Estas consultas son
almacenadas en la base de datos como si fueran otras tablas, aunque en
realidad, no son tablas reales.

En esta hoja guiada se ver la forma de crear consultas permanentes en una
base de datos de Access.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

349 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1


1. Abra el fichero de base de datos MANEMPSA que hizo en la hoja
anterior, contenido en la carpeta Mis Documentos.

2. Para crear una consulta active la opcin Consultas en la parte izquierda:



3. Aparecer un listado nuevo de opciones y un listado con las consultas
que hay creadas hasta ahora (ninguna, claro est)



No hay consultas
an
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

350 Entidad Clientes | By reycito2011


4. Para crear una consulta, activaremos la opcin Crear Consulta en Vista
Diseo.

5. Aparecer un cuadro de dilogo inicial donde se tendr que indicar la
tabla o tablas que se quieren consultar:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

351 Entidad Clientes | By reycito2011

6. Supongamos que queremos consultar la tabla Servicios. Por tanto, haga
clic sobre ella y active el botn Agregar: Observar como aparece un
recuadro en la parte superior izquierda con los campos de la tabla
Servicios:




7. Como no queremos consultar ms tablas podemos pulsar el botn
Cerrar.




Aparece un recuadro con los
campos de la tabla Servicios
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

352 Entidad Clientes | By reycito2011

8. Supongamos que queremos ver aquellos servicios que hayan tenido un
coste mayor de 200 euros. Interesa ver la fecha del servicio, el tipo y la
cantidad.



9. Teniendo en cuenta lo anterior, tendremos que aadir los campos
Fecha, Tipo y Cantidad, que es la informacin que se quiere ver. Para
ello, despliegue las casillas de la fila Campo hasta conseguir que
aparezcan los tres campos:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

353 Entidad Clientes | By reycito2011

10. No se quiere visualizar todos los servicios, sino solamente aquellos cuyo
coste haya sido mayor de 200 euros, por tanto tendremos que indicar
dicho criterio de seleccin en la consulta.

Accede a la casilla de Criterios que se encuentra debajo del campo
Cantidad y escribe all la siguiente condicin:

> 200

Observa:




Estamos indicando que solo se quiere visualizar aquellos servicios cuya
cantidad cobrada sea mayor de 200.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

354 Entidad Clientes | By reycito2011

11. Bsicamente, para hacer una consulta hay que indicar la tabla que se
quiere consultar, los campos que se quieren visualizar y la condicin que
se tiene que cumplir:





12. Para ver el resultado de la consulta, puede pulsar el botn Vista que se
encuentra en la parte superior izquierda de la ventana:




13. Al hacer esto ver un listado con los servicios que costaron ms de 200
euros. Observe que solo se visualiza la fecha, el tipo de servicio y la
cantidad:



Tabla a consultar
Campos a visualizar
Condiciones
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

355 Entidad Clientes | By reycito2011



14. Puede hacer clic en el botn Vista de nuevo (que ahora ha cambiado de
forma) para volver a la pantalla de diseo de la consulta:




15. Ahora estamos de nuevo dentro de la ventana de diseo:




16. Vamos a mejorar un poco ms la consulta. Interesara que apareciera el
nombre del trabajador que ha realizado el servicio, as pues hay que
aadir una nueva tabla a la consulta: la tabla Trabajadores, ya que es
esta tabla la que contiene dicho dato.

17. Para aadir una tabla a la consulta pulse el botn Mostrar Tabla:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

356 Entidad Clientes | By reycito2011

18. Aparecer de nuevo el listado de tablas inicial:




19. Elige la tabla Trabajadores y pulse el botn Agregar. Observars como
aparece un nuevo recuadro en la parte superior izquierda con los
campos de la tabla Trabajadores.




20. La lnea que aparece entre ambas tablas es la relacin establecida a
travs del campo de unin DNI. Debido a que la tabla servicios tiene
incluida la clave fornea DNI, ambas tablas pueden ser relacionadas.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

357 Entidad Clientes | By reycito2011



21. Una vez hecho esto, aade el campo Nombre de la tabla Trabajadores a
la consulta (observa como se indica la tabla a la que pertenece, para
que no haya confusin):




Relacin entre las tablas Servicios y
Trabajadores a travs del campo de unin
DNI.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

358 Entidad Clientes | By reycito2011

22. Comprueba de nuevo el resultado de la consulta pulsando el botn
Vista. Observa como ahora tenemos ms informacin de cada servicio
(ahora sabemos tambin el nombre del trabajador).






23. Vuelve a la ventana de diseo pulsando el botn Vista:



24. Tambin sera interesante que apareciera el nombre del cliente al que se
le ha realizado el servicio. Para ello, tendremos que aadir la tabla
Clientes que es la que contiene este campo.

Activa de nuevo el botn Mostrar Tabla y agrega la tabla Clientes.




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

359 Entidad Clientes | By reycito2011


25. Observa la relacin automtica que aparece entre Clientes y Servicios.
Esto es gracias al campo de unin que es el campo CIF.



26. Es posible reorganizar las tablas para que las relaciones se vean mejor.
Haz clic sobre ellas y arrstralas hasta que queden en el orden Clientes
Servicios Trabajadores:




27. Aade el campo Nombre de la tabla Clientes y comprueba el resultado.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

360 Entidad Clientes | By reycito2011







28. Vuelve a la vista de diseo.



29. Una vez que una consulta est finalizada, la podremos guardar para
usos posteriores. Para ello, cierra la consulta pulsando en el botn cerrar
de la ventana de diseo.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

361 Entidad Clientes | By reycito2011



30. Indica que s quieres guardar la consulta y escribe el siguiente nombre:
Servicios de mas de 200 euros.



31. Como puedes observar, has creado una consulta en la base de datos.
Puedes visualizar el contenido de esta consulta siempre que quieras
haciendo doble clic sobre ella.




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

362 Entidad Clientes | By reycito2011


32. Vuelve a la ventana principal cerrando la ventana de visualizacin de la
consulta.




33. En Access puedes disear y guardar todas aquellas consultas que
puedan resultar ms interesantes para el trabajo diario.

Las consultas, aunque no son tablas, se comportan como tal.
Bsicamente, se puede decir que una consulta es una subtabla, que
muestra una parte de la informacin de la base de datos.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

363 Entidad Clientes | By reycito2011

CRITERIOS EN CONSULTAS


En el ejercicio guiado anterior, se realiz una consulta que mostraba los
servicios de ms de 200 euros de coste. Para ello, en la vista diseo de la
consulta se agreg lo siguiente:


Campos Coste


Criterios >200


A continuacin se muestran otras formas de indicar criterios en las consultas


Criterios para campos numricos


Campos Coste


Criterios 200



Campos Coste


Criterios >200



Campos Coste


Criterios >=200



Campos Coste


Criterios <200



Campos Coste
Buscar aquellos registros cuyo Coste sea igual a 200
Buscar aquellos registros cuyo Coste sea mayor a 200
Buscar aquellos registros cuyo Coste sea mayor o igual a 200
Buscar aquellos registros cuyo Coste sea menor a 200
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

364 Entidad Clientes | By reycito2011



Criterios <=200


Buscar aquellos registros cuyo Coste sea menor o igual a 200
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

365 Entidad Clientes | By reycito2011

Campos Coste


Criterios <>200



Campos Coste


Criterios Between 200 and
300



Criterios para campos de tipo Fecha/Hora

En el caso de los campos de tipo Fecha los operadores que se usan son los
mismos que para los campos numricos, solo que el significado es distinto en
algunos casos. Ejemplos:


> 10-12-2007 Posterior al 10 del 12 del 2007

>= 10-12-2007 Posterior al 10 del 12 del 2007 (incluyendo
dicha fecha)

< 10-12-2007 Anterior al 10 del 12 del 2007

<= 10-12-2007 Anterior al 10 del 12 del 2007 (incluyendo
dicha fecha)

<> 10-12-2007 Distinto de 10 del 12 del 2007

Between 10-12-2007 and 20-12-2007 Entre el 10 del 12 del 07 y el 20 del 12
del 07



Criterios para campos de tipo Texto o Memo

En los campos de tipo texto se pueden usar asteriscos para definir bsquedas
ms extensas. Observa los siguientes ejemplos:


Campos Nombre


Criterios Jos
Manuel
Buscar aquellos registros cuyo Coste sea distinto de 200
Buscar aquellos registros cuyo Coste est entre 200 y 300
Buscar aquellos registros cuyo Nombre sea exactamente Jos
Manuel:

- Encontrara a los que tengan de nombre Jos Manuel.
- No encontrara a los que se llamaran Jos a secas, o
Manuel a secas.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

366 Entidad Clientes | By reycito2011




Campos Nombre


Criterios Jos*



Campos Nombre


Criterios *Jos



Campos Nombre


Criterios *Jos*



Criterios complejos

Si se quiere buscar a aquellos registros que cumplan varios criterios a la vez,
tendrn que escribirse dichos criterios en la misma fila. Por ejemplo:


Campos Nombre Sueldo


Criterios *Jos >1000


Se pueden establecer varios criterios en una misma consulta colocndolos en
filas distintas. Esto es como mostrar el resultado de varias consultas en una
sola. Por ejemplo:


Campos Nombre Sueldo


Criterios *Jos >1000
300
Antonio


Buscar aquellos registros cuyo Nombre empiece por Jos:

- Encontrara a los Jos Manuel, Jos Mara, Jos Luis, etc.
- No encontrara a los Manuel Jos, Antonio Jos, etc.
Buscar aquellos registros cuyo Nombre termine en Jos:

- Encontrara a los Manuel Jos, Antonio Jos, Mara Jos,
etc.
- No encontrara a los Jos Manuel, Jos Antonio, etc.
Buscar aquellos registros cuyo Nombre contenga la palabra
Jos en cualquier parte:

- Encontrara a los Jos Manuel, Antonio Jos, Mara
Jos, Antonio Jos de los Santos, etc.
-
Busca aquellas personas que tengan un nombre que
termine en Jos y cobren ms de 1000 euros.
Muestra aquellas personas que tengan un nombre que
termine en Jos y cobren ms de 1000 euros.

Muestra tambin aquellas personas que cobran 300 euros

Y muestra tambin aquellas personas que se llamen
Antonio.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

367 Entidad Clientes | By reycito2011




NOTA. La creacin de consultas en Microsoft Access es un campo amplio. Se
recomienda al alumno buscar informacin adicional sobre el tema. En Internet
podr encontrar mltiples tutoriales de aprendizaje de Access.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

368 Entidad Clientes | By reycito2011

CONCLUSIN

Una consulta muestra una parte de informacin de toda la base de datos.

Se muestran determinados campos y tambin aquellos registros que
cumplan un criterio determinado.

En Access se pueden disear consultas y almacenarlas
permanentemente.

Access tiene una zona de consultas donde encontrar el listado de las
consultas ya creadas y donde podr crear nuevas consultas.

Para crear una consulta en Access bsicamente hay que seguir tres
pasos:

- Indicar las tablas que contienen los campos necesarios.
- Indicar los campos que se quieren visualizar.
- Indicar el criterio de seleccin de registros.

Las relaciones creadas en Access y almacenadas pueden ser usadas
luego desde la aplicacin programada en Java, como si fueran tablas
normales y corrientes.


EJERCICIO GUIADO. BASES DE DATOS. SQL


Lenguaje de Consulta SQL

El lenguaje SQL (lenguaje de consulta estructurado) es un lenguaje que
permite actuar sobre una base de datos.

Con este lenguaje se pueden construir rdenes que permiten hacer lo siguiente
(entre otras cosas):

- Aadir registros a las tablas.
- Modificar registros de las tablas.
- Eliminar registros de las tablas.
- Realizar Consultas sobre las tablas.

Gracias a este lenguaje, se construirn rdenes desde nuestra aplicacin java,
que se aplicarn a la base de datos, actuando sobre ella.


Las rdenes de aadir, modificar, eliminar realizan cambios dentro de la base
de datos, pero no devuelven nada al programa java.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

369 Entidad Clientes | By reycito2011




Por otro lado, cuando se da una orden de realizar una consulta, la base de
datos nos devuelve el resultado de dicha consulta:




Gracias a este lenguaje, nuestra aplicacin tiene dominio total sobre la base de
datos. Puede actuar sobre ella introduciendo nuevos datos, o modificando los
que haba, o eliminndolos. Tambin puede extraer informacin de ella
accediendo a las consultas de la base de datos o realizando nuevas consultas.

A continuacin se comentarn las reglas bsicas de este lenguaje.

Creacin de consultas en SQL


Se empezar estudiando como realizar consultas sobre una base de datos
usando el lenguaje SQL (ms adelante se ver como realizar consultas de
accin: aadir, modificar eliminar)


Cdigo base en SQL para realizar consultas

Para consultar una base de datos usar un cdigo general como el que sigue:

SELECT campos a visualizar
FROM tablas donde se encuentran dichos campos
WHERE condiciones que deben cumplir los registros
ORDER BY forma de ordenar la consulta;

Como puede ver, una consulta en SQL tiene cuatro partes (SELECT, FROM,
WHERE y ORDER BY) de las cuales solo las dos primeras son obligatorias.


Programa
Java

Base de
Datos

RDENES SQL
aadir, modificar, eliminar

Programa
Java

Base de
Datos
Consulta SQL
Resultado de la consulta
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

370 Entidad Clientes | By reycito2011

Se debe mantener el orden indicado. Es decir, primero SELECT, luego FROM,
luego WHERE y luego ORDER BY.

Este cdigo debe terminar siempre con punto y coma ;

A continuacin se vern ejemplos de uso de este cdigo general.


Visualizar una tabla entera (todos los campos y todos los registros)

Ejemplo: Visualizar la tabla Clientes

SELECT *
FROM clientes;

Observa, el * significa ver todos los campos. En el FROM se indica la tabla que
se quiere ver. Observa como hay que terminar con un ;


Visualizar algunos campos de una tabla (algunos campos y todos los
registros)

Ejemplo: Visualizar CIF, nombre y Direccion de todos los clientes

SELECT clientes.CIF, clientes.nombre, clientes.direccion
FROM clientes;

Observa como se indican los campos a visualizar en la clusula SELECT. Se
indica la tabla y luego el nombre del campo, separados por un punto.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

371 Entidad Clientes | By reycito2011

Visualizar solo aquellos registros de la tabla que cumplan una condicin

Ejemplo: Visualizar todos los campos de aquellos trabajadores que cobren un
sueldo superior a los 1000 euros

SELECT *
FROM trabajadores
WHERE trabajadores.sueldo > 1000;

Observa el uso de la clusula WHERE para aplicar una condicin al resultado.


Ejemplo: Visualizar el nombre, apellido y sueldo de aquellos trabajadores que
cobren un sueldo entre 800 y 2000 euros

SELECT trabajadores.nombre, trabajadores.apellidos,
trabajadores.sueldo
FROM trabajadores
WHERE trabajadores.sueldo BETWEEN 800 AND 2000;

Observa el uso de BETWEEN AND para indicar que el sueldo est entre 800
y 2000

Nota. Ms adelante en este ejercicio guiado se muestran las distintas
posibilidades que tenemos a la hora de indicar criterios en la clusula
WHERE



Visualizar el contenido de una tabla ordenado

Ejemplo: Visualizar la tabla de trabajadores ordenada por sueldo de menor a
mayor

SELECT *
FROM trabajadores
ORDER BY trabajadores.sueldo ASC;

Observa el uso de la clusula ORDER BY para indicar que se ordene por
sueldo. La palabra ASC indica ascendente (de menor a mayor)



Ejemplo: Visualizar nombre, apellidos y sueldo de los trabajadores ordenados
por sueldos de mayor a menor

SELECT trabajadores.nombre, trabajadores.apellidos,
trabajadores.sueldo
FROM trabajadores
ORDER BY trabajadores.sueldo DESC;
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

372 Entidad Clientes | By reycito2011


Observa el uso de DESC para indicar una ordenacin descendente.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

373 Entidad Clientes | By reycito2011

Ejemplo: Visualizar nombre, apellidos y sueldo de los trabajadores que cobren
ms de 1000 euros, ordenados por apellidos y nombre

SELECT trabajadores.nombre, trabajadores.apellidos,
trabajadores.sueldo
FROM trabajadores
WHERE trabajadores.sueldo > 1000
ORDER BY trabajadores.apellidos ASC, trabajadores.nombre
ASC;


Observa aqu como ordenar por dos campos, primero por apellidos y luego por
nombre. Esto significa que aquellos trabajadores que tengan el mismo apellido
sern ordenados por nombre.



Visualizar datos de varias tablas

Ejemplo: Visualizar todos los servicios. Interesa que aparezca el nombre del
trabajador que hizo el servicio, la fecha del servicio realizado y el tipo de
servicio

SELECT trabajadores.nombre, servicios.fecha, servicios.tipo
FROM trabajadores, servicios
WHERE trabajadores.DNI=servicios.DNI;

Observa aqu como se indica en la clusula FROM las dos tablas de las que
extraemos datos. Es importante que te fijes tambin en como se unen ambas
tablas igualando en la clusula WHERE el campo de unin de ambas tablas,
que en el ejemplo es el DNI.


Ejemplo: Visualizar todos los servicios. Interesa que aparezca el nombre del
trabajador que hizo el servicio, el tipo de servicio y el nombre del cliente al que
se le hizo el servicio

SELECT trabajadores.nombre, servicios.tipo, clientes.nombre
FROM trabajadores, servicios, clientes
WHERE trabajadores.DNI=servicios.DNI AND
clientes.CIF=servicios.CIF;


Observa aqu una consulta sobre tres tablas, las cuales aparecen en el FROM.
Es necesario indicar en la clusula WHERE los campos de unin. La tabla
Trabajadores se relaciona con la tabla Servicios a travs del campo DNI, y la
tabla Trabajadores se relaciona con Clientes a travs del campo CIF. Observa
el uso de AND para unir varias condiciones.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

374 Entidad Clientes | By reycito2011

Ejemplo: Visualizar los servicios que hayan costado ms de 200 euros.
Interesa ver la fecha del servicio, el nombre del cliente y el coste ordenado por
cantidad

SELECT servicios.fecha, clientes.nombre, servicios.cantidad
FROM servicios, clientes
WHERE servicios.CIF=clientes.CIF AND servicios.cantidad>200
ORDER BY servicios.cantidad;

Observa como la clusula WHERE contiene por un lado la condicin de unin
de ambas tablas y por otro lado la condicin que se busca (cantidad > 200)



FORMA DE INDICAR CRITERIOS EN LA CLUSULA WHERE

Se van a indicar a continuacin una serie de reglas que se deben seguir a la
hora de crear condiciones en la clusula WHERE de una consulta SQL


Operadores Relacionales

Operador Significa Ejemplos
= Igual que WHERE cantidad = 200

WHERE tipo = Limpieza

WHERE fecha = #8-5-2006#

> Mayor que
(para nmeros)

Posterior a
(para fechas)

WHERE cantidad > 200

WHERE fecha > #8-5-2006#

>= Mayor o igual que
(para nmeros)

Esa fecha o posterior
(para fechas)

WHERE cantidad >= 200

WHERE fecha >= #8-5-2006#
< Menor que
(para nmeros)

Anterior a
(para fechas)

WHERE cantidad < 200

WHERE fecha < #8-5-2006#
<= Menor o igual que
(para nmeros)

WHERE cantidad <= 200

WHERE fecha <= #8-5-2006#
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

375 Entidad Clientes | By reycito2011

Esa fecha o anterior
(para fechas)

<> Distinto de
(para fechas, nmeros
y textos)

WHERE cantidad <> 200

WHERE fecha <> #8-5-2006#

WHERE tipo <> Limpieza

Between...and Entre valor1 y valor2
(aplicable a nmeros y
fechas)

WHERE cantidad BETWEEN 100 AND 200

WHERE fecha BETWEEN #8-5-2006# AND
#1-12-2006#

Like cadena* Que empiece por
cadena
(aplicable a textos)

WHERE nombre LIKE Jose*
Like *cadena Que termine por
cadena
(aplicable a textos)

WHERE nombre LIKE *Jose


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

376 Entidad Clientes | By reycito2011

Like
*cadena*
Que contenga cadena
(aplicable a textos)

WHERE nombre LIKE *Jose*

IS NULL Que el campo est
vaco
(aplicable a nmeros,
textos, fechas)

WHERE telefono IS NULL


NOT ... IS
NULL
Que el campo no est
vaco
(aplicable a nmeros,
textos, fechas)

WHERE NOT telefono IS NULL


Operadores Lgicos

Operador Significa Ejemplos

AND

Obliga a que se
cumplan las dos
condiciones que une.



WHERE cantidad > 200 AND tipo =
Limpieza


(Debe cumplirse que la cantidad sea mayor
de 200 y que el tipo de servicio sea
Limpieza)


OR

Basta con que se
cumpla una sola de las
dos condiciones que
une.


WHERE cantidad > 200 OR tipo =
Limpieza

(Basta con que la cantidad sea mayor de
200, o que el tipo de servicio sea Limpieza
para que se cumpla la condicin)


NOT

Si no se cumple la
condicin, la condicin
global se cumple.


WHERE NOT cantidad > 200

(Se cumple la condicin si la cantidad NO
es mayor de 200)



Forma de indicar los valores

Como puedes observar en los ejemplos anteriores, tendrs que tener en cuenta
las siguientes reglas para indicar valores:

Valores numricos

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

377 Entidad Clientes | By reycito2011

Indica los valores numricos tal cual, teniendo en cuenta que debes usar el
punto decimal cuando quieras representar decimales.

Ejemplo:

WHERE cantidad > 200.12

Valores de texto

Los valores de texto se indican rodendolos entre comillas simples:

Ejemplos:

WHERE nombre = Jose

WHERE direccin LIKE *avenida*


Valores de fecha

Las fechas se indican rodendolas entre almohadillas #. Se debe tener en
cuenta que las fechas deben indicarse separadas por guiones o barras / y
que su formato debe ser el siguiente:

Mes Dia Ao


Ejemplos:

WHERE fecha > #02-01-2005#

(Significa que la fecha debe ser posterior al 1 de febrero de 2005)

WHERE fecha <> #10-12-2006#

(Significa que la fecha debe ser distinta del 12 de Octubre de 2006)


Forma de indicar los campos

Normalmente los campos que se usan en el WHERE (y en otras clusulas) se
indican de la siguiente forma:

Tabla.Campo

Por ejemplo,

WHERE trabajadores.sueldo > 1000

(Sueldo es un campo de la tabla trabajadores)
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

378 Entidad Clientes | By reycito2011


Si tenemos la seguridad de que no existe otro campo de otra tabla que se llame
igual, entonces podemos prescindir del nombre de la tabla.

Por ejemplo,

WHERE sueldo > 1000

(No existe otro campo sueldo en otras tablas de la consulta)

En el caso de que el nombre del campo contenga espacios, entonces
tendremos que rodear el campo con corchetes.

Por ejemplo,

WHERE [sueldo del trabajador] > 1000

(El campo se llama sueldo del trabajador)

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

379 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1

ACCESS permite la creacin de consultas usando SQL. Esto nos permitir
practicar con el lenguaje SQL antes de que se aplique posteriormente en
nuestras aplicaciones Java.

En este ejercicio guiado se explicar como crear una consulta usando el
lenguaje SQL en Access.

1. Entre en Mis Documentos. All ver la base de datos MANEMPSA.
brala.

2. Active la opcin de Consultas para acceder al listado de consultas de la
base de datos.



3. Vamos a crear una nueva consulta, por lo que tendr que activar la
opcin Crear una consulta en vista Diseo:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

380 Entidad Clientes | By reycito2011



4. En el cuadro de eleccin de tablas no agregaremos ninguna. As pues
pulsaremos directamente el botn Cerrar.



5. El resultado es que aparece la ventana de diseo de consultas. En la
parte superior izquierda de esa ventana podrs ver un botn con el texto
SQL. Este botn nos permitir crear la consulta usando el lenguaje SQL.
Plsalo.



6. Aparecer una pantalla casi en blanco donde escribir la consulta SQL.
Observe que ya aparece la clusula SELECT escrita:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

381 Entidad Clientes | By reycito2011



7. Para empezar mostraremos el contenido de la tabla Trabajadores. Para
ello, debe escribir la siguiente consulta SQL:

SELECT *
FROM trabajadores;


8. Para ver el resultado de esta consulta debe pulsar el botn Vista que se
encuentra en la parte superior izquierda de la ventana:



9. El resultado es que ver el contenido de la tabla Trabajadores:




10. Acaba de crear una consulta dentro de Access usando el lenguaje SQL.
Para modificar de nuevo la consulta SQL tendr que desplegar el botn
Vista y activar de nuevo la opcin SQL:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

382 Entidad Clientes | By reycito2011




11. De esta manera entrar de nuevo en el editor de consultas SQL de
Access, donde an permanecer la consulta creada:




12. Ahora modificaremos la consulta para que solo nos muestre los campos
nombre, apellidos, sueldo y fecha. Para ello tendr que escribir la
siguiente consulta:

SELECT trabajadores.nombre, trabajadores.apellidos,
trabajadores.sueldo, trabajadores.fecha
FROM trabajadores;


13. Usa el botn Vista para ver el resultado de la consulta. Observa como
ahora solo vemos los campos indicados:



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

383 Entidad Clientes | By reycito2011




14. Vuelve a la zona de edicin de consultas SQL y cambia la consulta para
que quede as:

SELECT trabajadores.nombre, trabajadores.apellidos,
trabajadores.sueldo, trabajadores.fecha
FROM trabajadores
WHERE trabajadores.apellidos LIKE '*ez';

Como ves, hemos aadido una clusula where, para buscar solo
aquellos trabajadores cuyo apellido termine en ez.


15. Comprueba el resultado:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

384 Entidad Clientes | By reycito2011

16. Vuelve a la zona de edicin SQL. Vamos a complicar un poco la
consulta.

Supongamos que queremos ver los servicios que han realizado cada
uno de estos trabajadores. Para ello tendremos que incluir a la tabla
servicios en la consulta.

Supongamos que queremos ver el tipo de servicio realizado y el coste de
cada servicio. Por otro lado, de cada trabajador solo queremos ver el
nombre y los apellidos.

Hay que tener en cuenta que es necesario aadir en el WHERE una
condicin que iguale el campo de unin entre la tabla trabajadores y la
tabla servicios. Este campo de unin es el DNI.

La consulta debe quedar as:

SELECT trabajadores.nombre, trabajadores.apellidos,
servicios.tipo, servicios.cantidad
FROM trabajadores, servicios
WHERE trabajadores.apellidos LIKE '*ez' AND
trabajadores.DNI=servicios.DNI;


(Observa la inclusin en el FROM de la tabla servicios, y como se ha
aadido una condicin de unin entre la tabla trabajadores y servicios a
travs del campo DNI)


17. Visualiza el resultado de la consulta (botn Vista) Aparecer lo siguiente:



Como ves, aparecen todos los servicios y el nombre y apellidos del
trabajador que hizo cada uno. Solo aparecen los servicios de los
trabajadores cuyo apellido termine en ez.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

385 Entidad Clientes | By reycito2011



18. Vuelve a la vista de edicin SQL. Vamos a complicar an ms la
consulta. Esta vez vamos a hacer que aparezca el nombre del cliente al
que se le hizo el servicio.

Esto implica la inclusin de una nueva tabla (clientes) y la necesidad de
relacionar la tabla servicios con la tabla clientes segn el modelo E-R de
esta base de datos. El campo de unin es el CIF.

Modifica la consulta para que quede de la siguiente forma:

SELECT trabajadores.nombre, trabajadores.apellidos,
servicios.tipo, servicios.cantidad, clientes.nombre
FROM trabajadores, servicios, clientes
WHERE trabajadores.apellidos LIKE '*ez' AND
trabajadores.DNI=servicios.DNI AND servicios.CIF=clientes.CIF;


(Observa la inclusin de la tabla clientes en la clusula FROM, y la
adicin de una nueva condicin de unin, entre la tabla servicios y la
tabla clientes en la clusula WHERE. Esta condicin de unin une
ambas tablas usando el campo CIF)


19. Veamos el resultado de la consulta:




Como se puede observar, aparece el listado de los servicios realizados
por los trabajadores cuyo apellido termine en ez. Aparece informacin
incluida en tres tablas distintas: trabajadores, servicios y clientes.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

386 Entidad Clientes | By reycito2011

20. Vuelve a la zona de diseo SQL. Aadiremos una ltima modificacin a
la consulta y la finalizaremos.

Ahora estableceremos un orden. Concretamente, ordenaremos el
resultado de la consulta segn apellidos del trabajador. Para ello
tendremos que aadir una clusula ORDER BY:

SELECT trabajadores.nombre, trabajadores.apellidos,
servicios.tipo, servicios.cantidad, clientes.nombre
FROM trabajadores, servicios, clientes
WHERE trabajadores.apellidos LIKE '*ez' AND
trabajadores.DNI=servicios.DNI AND servicios.CIF=clientes.CIF
ORDER BY trabajadores.apellidos ASC;

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

387 Entidad Clientes | By reycito2011

21. Ejecuta la consulta y observa el resultado. Ahora el listado de servicios
aparece ordenado segn el apellido del trabajador que lo realiza,
alfabticamente.




22. Hemos finalizado con la consulta. Cirrela y gurdela. Puede ponerle de
nombre Servicios realizados por trabajadores ez.


23. Este ha sido un ejemplo de consulta realizada en Access usando el
lenguaje de consulta SQL. Este lenguaje ser vital para hacer que
nuestra aplicacin java manipule la base de datos correspondiente.



NOTA.

En Internet se pueden encontrar mltiples manuales sobre SQL. Se
recomienda buscar informacin sobre el tema para ampliar los conocimientos
aqu expuestos.


La sintaxis del lenguaje SQL puede variar segn el programa de base de datos
que se use. En este ejercicio guiado se ha usado la sintaxis del SQL incluido en
el programa Access. Tenga en cuenta que puede haber variaciones entre este
SQL y el incluido en otro gestor de base de datos, aunque estas variaciones
son mnimas.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

388 Entidad Clientes | By reycito2011

CONCLUSIN

El lenguaje de consulta SQL permite manipular la base de datos.

A travs de este lenguaje, se pueden crear rdenes que permitan:

- Introducir nuevos datos en la base de datos.
- Eliminar datos de la base de datos.
- Modificar datos de la base de datos.
- Realizar consultas sobre la base de datos.

Para realizar consultas en la base de datos usando el lenguaje SQL es
necesario usar instrucciones SELECT, las cuales tienen la siguiente
forma general:

SELECT campos a visualizar
FROM tablas a las que pertenecen dichos campos
WHERE condiciones a cumplir, condiciones de unin de tablas
ORDER BY campos por los que se ordena

El programa ACCESS permite crear consultas usando el lenguaje SQL,
por lo que puede ser una buena herramienta para practicar este lenguaje.

Nuestro programa de bases de datos java, usar este lenguaje para
manipular la base de datos correspondiente.

EJERCICIO GUIADO. BASES DE DATOS. SQL


Acciones en SQL

En la hoja guiada anterior se ha visto como se pueden crear instrucciones
usando el lenguaje SQL para consultar una base de datos, y, de esta forma,
extraer informacin de ella.

Pero el lenguaje SQL no se queda simplemente ah, sino que proporciona
instrucciones que pueden realizar acciones sobre la base de datos. Estas
acciones son (entre otras):

- Aadir nuevos registros a una tabla.
- Eliminar registros de una tabla.
- Modificar datos de una tabla.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

389 Entidad Clientes | By reycito2011




En esta hoja guiada veremos como ejecutar instrucciones SQL que permitan
aadir, eliminar o modificar registros de las tablas de la base de datos.



Programa
Java

Base de
Datos

RDENES SQL
aadir, modificar, eliminar
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

390 Entidad Clientes | By reycito2011

Alta de registros en SQL

Se empezar estudiando como aadir nuevos registros en una base de datos
usado el lenguaje SQL.

Cdigo base en SQL para aadir nuevos registros

Para aadir un registro en una tabla se usa la siguiente sintaxis:

INSERT INTO tabla
VALUES (valor1, valor2, valor3, ..., valor n);

En la clusula INSERT INTO se indica la tabla que en la que se quiere
introducir una nueva fila (registro), y en la clusula VALUES se indican los
valores de la fila que se quiere insertar. Estos valores tienen que estar
indicados en el orden en el que estn definidos los campos en la tabla
correspondiente.

Por ejemplo:

INSERT INTO trabajadores
VALUES (30.234.234-A, Mara, Lpez, 1250.45,
#01/02/2006# 4455-RSD);

En esta instruccin se est introduciendo un nuevo trabajador en la tabla
trabajadores. Concretamente se est introduciendo un trabajador con las
siguientes caractersticas:

DNI: 30.234.234-A
Nombre: Mara
Apellidos: Lpez
Sueldo: 1250,45
Fecha de entrada: 02/01/2006
Matrcula: 4455-RSD

Los valores estn indicados en el mismo orden en el que estn los campos en
la tabla: DNI, Nombre, Apellidos, Sueldo, Fecha, Matrcula.

Si se quiere introducir un nuevo registro, pero indicando solo los valores de
algunos campos, se puede usar entonces esta otra sintaxis para la instruccin
INSERT INTO:

INSERT INTO tabla
(campo a, campo b, campo c)
VALUES (valor del campo a, valor del campo b, valor del
campo c);

En este caso solo se introducen los valores correspondientes a tres campos, el
resto de los campos del registro se quedarn vacos.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

391 Entidad Clientes | By reycito2011

Por ejemplo:

INSERT INTO trabajadores
(DNI, Apellidos, Sueldo)
VALUES (30.234.234-A, Lpez, 1250.45);

En este caso introducimos a un trabajador de apellido Lpez, con DNI
30.234.234-A que cobra 1250,45 euros. Tanto la matrcula de su coche como
su nombre y la fecha quedan en blanco.


Formato de los valores.

Recuerda que debes seguir ciertas reglas para introducir valores:

Las cadenas se escriben entre comillas simples. Por ejemplo: Lpez

Se usa el punto decimal en los nmeros reales: Por ejemplo: 1250.45

Las fechas se indicarn entre almohadillas # y hay que indicar primero el mes,
luego el da y finalmente el ao. Por ejemplo: #12-20-2007# es 20 de diciembre
de 2007.

En el caso de querer especificar explcitamente que un campo est vaco, se
puede indicar el valor NULL.

Ejemplo:

INSERT INTO trabajadores
(DNI, Apellidos, Sueldo)
VALUES (30.234.234-A, NULL, 1250.45);

Los apellidos del trabajador estn vacos en este ejemplo.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

392 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1


1. Entra en la base de datos MANEMPSA de la carpeta Mis Documentos.

2. Crearemos una consulta SQL para aadir registros a la tabla
trabajadores. Para ello, accede a la zona de consultas.



3. Crea una consulta en vista Diseo y no agregues ninguna tabla.
Simplemente pulsa el botn Cerrar.




4. Pulsa el botn SQL que se encuentra en la parte superior izquierda de la
ventana para crear una consulta SQL.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

393 Entidad Clientes | By reycito2011



5. Aparecer entonces el editor de consultas SQL. En l, escribe la
siguiente instruccin SQL:

INSERT INTO trabajadores
VALUES ('33.444.333-
B','Antonio','Romero',1300.5,#01/02/2006#,NULL);



Vers que lo que se pretende es introducir un nuevo trabajador. Este
trabajador tendr los siguientes datos:

DNI: 33.444.333-B
Nombre: Antonio
Apellidos: Romero
Sueldo 1300,5
Fecha de entrada: 2-1-2006
(Observa como en la clusula VALUES se indica la fecha en formato
mes-dia-ao)
Matrcula de su coche: No se indica (NULL)


6. Este tipo de consulta es de accin. Esto significa que no debe mostrar
nada, simplemente ejecuta una accin sobre la base de datos (en este
caso, aadir un registro nuevo en la tabla trabajadores) Para ejecutar
esta consulta de accin activa el botn Ejecutar:



7. Access avisar de que vas a aadir un nuevo registro, y te pide
confirmacin. Acepta la accin:




8. Se acaba de ejecutar la consulta. Para comprobar el resultado
tendremos que ver el contenido de la tabla Trabajadores y
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

394 Entidad Clientes | By reycito2011

observaremos que hay un nuevo trabajador aadido. Primero cierra la
consulta, pero no la guardes.



9. Accede a la zona de tablas de la base de datos.



10. Abre la tabla trabajadores. Observa el nuevo trabajador que se ha
aadido:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

395 Entidad Clientes | By reycito2011



11. Cierra la base de datos.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

396 Entidad Clientes | By reycito2011

Modificacin de registros en SQL

Es posible usar el lenguaje SQL para modificar los datos de una tabla. Se
puede incluso modificar los datos de aquellos registros que cumplan una
condicin en concreto.

Cdigo base en SQL para modificar registros

Para modificar los datos de los registros de una tabla se usar el siguiente
cdigo general:

UPDATE tabla a modificar
SET campo1 = nuevovalor1, campo2 = nuevovalor2, , campon =
nuevovalorn
WHERE condicin;

En la clusula UPDATE se indica la tabla cuyos registros se van a modificar.

La clusula SET permite indicar los cambios que se realizarn. Se debe indicar
el campo que se va a cambiar y el nuevo valor que se introducir en el campo.
Como puede observar, se pueden indicar varios campos a modificar.

La clusula WHERE permite indicar una condicin. Esto har que solo se
cambien los valores de aquellos registros que cumplan la condicin. La
clusula WHERE es opcional, y si no se indicara se cambiaran todos los
registros de la tabla.

Ejemplo:

UPDATE trabajadores
SET sueldo = 1200, matricula=3355-AAA
WHERE fecha < #01/01/2004#;

En este ejemplo se les asigna un sueldo de 1200 euros y el coche con
matrcula 3355-AAA a todos aquellos trabajadores que hayan entrado en la
empresa antes del 1-1-2004.

Ejemplo:

UPDATE trabajadores
SET sueldo = 1300;

En este ejemplo, se les asigna a todos los trabajadores un sueldo de 1300
euros ya que no se ha indicado clusula WHERE.


Si se quisiera hacer un cambio puntual a un registro en concreto, tendremos
que hacer uso de su campo clave para indicar la condicin. Recuerda que el
campo clave es el que identifica de forma nica a un registro de la tabla.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

397 Entidad Clientes | By reycito2011

Por ejemplo:

UPDATE trabajadores
SET sueldo = 1300
WHERE DNI=33.444.333-A;

En este ejemplo se estoy asignando un sueldo de 1300 al trabajador con DNI
33.444.333-A, y a ningn otro (ya que se supone que no habr otro con dicho
DNI)
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

398 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N2

1. Entra en la base de datos MANEMPSA.

2. Accede a la zona de consultas y crea una consulta en vista diseo.

3. No agregues ninguna tabla y pulsa directamente el botn Cerrar.

4. Pulsa el botn SQL para entrar en la zona de edicin de consulta SQL.



5. Escribe la siguiente instruccin SQL:

UPDATE trabajadores
SET sueldo = 800, matricula=1111-AAA
WHERE DNI=33.444.333-B;



Como puedes observar, en esta instruccin SQL vamos a asignarle un
sueldo de 800 euros y el coche con matricula 1111-AAA al trabajador
con DNI 33.444.333-B, que es precisamente el trabajador que aadimos
en el ejercicio guiado anterior.
6. Ejecuta esta consulta de accin pulsando el botn Ejecutar:

7. Access avisar de que va a actualizar una fila en la tabla trabajadores y
pedir confirmacin para hacerlo. Acepte la confirmacin.

8. El resultado de esta instruccin SQL de accin es que se habrn
modificado los datos del trabajador con DNI 33.444.333-B. Para
comprobarlo accederemos a la tabla trabajadores y observaremos su
contenido.

9. Cierre la consulta que est realizando (no hace falta que la guarde)

10. Acceda a la zona de tablas de la base de datos y entre en la tabla
trabajadores, observe su contenido. El trabajador con DNI 33.444.333-B
habr cambiado:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

399 Entidad Clientes | By reycito2011



11. Cierra la base de datos.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

400 Entidad Clientes | By reycito2011

Eliminacin de registros en SQL

Al igual que podemos aadir nuevos registros (filas) a las tablas usando SQL,
tambin podemos usar este lenguaje para eliminar registros de las tablas.

Cdigo base en SQL para eliminar registros

Para eliminar registros de una tabla se usar el siguiente cdigo general:

DELETE FROM tabla de la que se quiere eliminar
WHERE condicin de los registros que se eliminarn;


En la clusula DELETE FROM se indica la tabla de la que eliminaremos
registros.
En la clusula WHERE se indica la condicin que deben cumplir los registros
que eliminaremos.

Por ejemplo:

DELETE FROM trabajadores
WHERE sueldo>1000;

En este ejemplo se estn eliminando de la tabla trabajadores aquellos
trabajadores cuyo sueldo sea superior a 1000.

Si se quiere eliminar un solo registro de la tabla, ser necesario hacer
referencia a su campo clave. Recuerda que el campo clave es el que identifica
de forma nica a cada registro.

Por ejemplo, si queremos eliminar un trabajador en concreto, indicaremos su
DNI en la condicin:

DELETE FROM trabajadores
WHERE DNI=33.444.555-A;

Esta instruccin SQL borra al trabajador con DNI 33.444.555-A (solamente a l,
ya que se supone que no habr otro trabajador que tenga ese mismo DNI)

En la clusula WHERE de una instruccin DELETE, las condiciones se indican
tal como se vio en la hoja anterior para las instrucciones SELECT.

Si se quiere eliminar todo el contenido de una tabla, se puede usar una
instruccin DELETE sin indicar ninguna condicin. Por ejemplo:

DELETE FROM trabajadores;

Esta instruccin eliminara todos los registros de la tabla trabajadores.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

401 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 3


11. Entra en la base de datos MANEMPSA.

12. Accede a la zona de consultas y crea una consulta en vista diseo.

13. No agregues ninguna tabla y pulsa directamente el botn Cerrar.

14. Pulsa el botn SQL para entrar en la zona de edicin de consulta SQL.



15. Escribe la siguiente instruccin SQL:

DELETE FROM trabajadores
WHERE DNI = '33.444.333-B';



Como puedes observar, esta instruccin eliminar al trabajador con DNI
33.444.333-B, que es precisamente el trabajador que se aadi en el
ejercicio guiado 1.


16. Ejecuta esta instruccin de accin activando el botn Ejecutar:



17. Access avisar de que va a eliminar una fila de la tabla trabajadores, y
pedir confirmacin. Confirme la eliminacin.

18. Para comprobar el ejemplo tendr que acceder a la tabla trabajadores y
comprobar que el trabajador con DNI 33.444.333-B ya no est. Para ello
cierre la consulta (no hace falta que la guarde) y acceda a la zona de
tablas.

19. Abra la tabla trabajadores. Observe como el trabajador ha desaparecido:



20. Cierre Access.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

402 Entidad Clientes | By reycito2011


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

403 Entidad Clientes | By reycito2011

CONCLUSIN

El lenguaje de consulta SQL no solo permite extraer informacin de una
base de datos, sino que tambin permite realizar acciones sobre la base
de datos:

- Introducir nuevos datos en la base de datos.
- Eliminar datos de la base de datos.
- Modificar datos de la base de datos.

Para introducir nuevos datos en la base de datos usar la instruccin SQL
llamada INSERT INTO

Para eliminar datos de la base de datos usar la instruccin SQL llamada
DELETE

Para modificar datos de la base de datos usar la instruccin SQL
llamada UPDATE


EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS


Acceso a Base de Datos desde una aplicacin Java

El objetivo de todas las hojas guiadas anteriores dedicadas a las bases de
datos, es finalmente aprender a crear un fichero que contenga toda la
informacin que la empresa necesita gestionar. Es decir, crear un fichero de
base de datos.

Este fichero se incluir con el programa java que se realice. Nuestro programa
java acceder a este fichero continuamente para aadir nuevos datos, o
modificar datos, eliminar datos, o extraer datos segn lo ordene el usuario del
programa.

En esta hoja guiada, se vern los pasos necesarios para conectar un proyecto
java con un fichero de base de datos creado en Access.


Pasos Generales para preparar una Aplicacin Java para acceder a una
Base de Datos

Para preparar nuestra aplicacin Java para que pueda acceder a una Base de
Datos, es necesario realizar tres pasos:

1. Cargar el controlador de la base de datos.

El controlador define el tipo de base de datos que se va a usar (base de datos
de Access, o de MySQL, o de cualquier otro gestor de base de datos)

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

404 Entidad Clientes | By reycito2011

En nuestro caso, tendremos que indicar el controlador para base de datos de
Access.

2. Crear un objeto conexin (Connection)

Para crear este objeto hay que indicar la situacin del fichero de base de datos,
el usuario y la contrasea de dicha base de datos. El objeto conexin abre el
fichero de la base de datos.

3. Crear un objeto sentencia (Statement)

El objeto sentencia se crea a partir del objeto conexin anterior. Los objetos
sentencia permiten realizar acciones sobre la base de datos usando
instrucciones SQL.

Es decir, a travs del objeto sentencia introduciremos datos en la base de
datos, eliminaremos datos, haremos modificaciones, y extraeremos datos de la
base de datos.

As pues, este objeto es vital. Este objeto es el que realmente permite el
acceso a los datos de la base de datos y la manipulacin de dicha base de
datos.




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

405 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1

PLANTEAMIENTO

En este ejercicio se pretende crear una pequea aplicacin de bases de datos
que permita simplemente mostrar los datos de los trabajadores almacenados
en la base de datos MANEMPSA.


1. Entre en NetBeans. Crea un nuevo proyecto llamado AccesoBD. Dentro
de este proyecto crea un paquete principal llamado paqueteprincipal y
dentro de l un JFrame llamado ventanaprincipal:



2. En la parte superior de la ventana aade un botn con el texto Ver Datos
Trabajadores que se llame btnVerDatos.




3. Se pretende simplemente que al pulsar el botn btnVerDatos aparezcan
en un JOptionPane datos sobre los trabajadores almacenados en la
base de datos.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

406 Entidad Clientes | By reycito2011



SITUACIN DEL FICHERO DE BASE DE DATOS

4. Antes de empezar con la programacin de nuestra aplicacin,
introduciremos el fichero de base de datos en la carpeta del proyecto
java que estamos haciendo. Para ello, accede a la carpeta del proyecto
AccesoBD. Esta carpeta se encontrar all donde ests guardando tus
proyectos:


5. Entra dentro de esta carpeta y observars una serie de carpetas creadas
por el propio NetBeans. (Entre ellas, la ms interesante es la llamada
src, la cual es la que contiene los ficheros con el cdigo java)




6. Para tener todo bien organizado, crearemos una carpeta llamada Base
dentro de la carpeta de proyecto, de manera que su contenido quede
as:



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

407 Entidad Clientes | By reycito2011


7. Ahora lo nico que tiene que hacer es copiar el fichero de base de datos
MANEMPSA.MDB que se encuentra en Mis Documentos dentro de la
carpeta Base. (La extensin de los ficheros de base de datos de Access
es MDB)

8. De esta manera, tenemos el fichero de base de datos que hemos creado
con Access guardado dentro de la misma carpeta de proyecto java que
usar dicha base de datos. Se recomienda que esto lo haga cada vez
que programe una aplicacin de bases de datos Java.

9. Ahora ya podemos volver al NetBeans y continuar con nuestro trabajo.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

408 Entidad Clientes | By reycito2011

PREPARACIN DE LA APLICACIN J AVA PARA EL ACCESO A LA
BASE DE DATOS

10. Para poder acceder y manipular una base de datos, es necesario tener
dos objetos:

- Un objeto del tipo Connection, al que llamaremos conexion. Este objeto
define la conexin con la base de datos.

- Un objeto del tipo Statement, al que llamaremos sentencia. Este objeto
permite manipular la base de datos.


11. As pues, lo primero que haremos ser definir estos objetos como
globales en la clase de la ventana principal, para as poderlos usar
desde cualquier lado:



Aparecern subrayados ya que ser necesario indicar el import para las
clases Connection y Statement. Estos import son respectivamente:

java.sql.Connection

y

java.sql.Statement

Agrega los import correspondientes para eliminar los errores.

12. Una vez definidos los objetos conexin y sentencia, necesarios para el
acceso a la base de datos, prepararemos nuestro programa para que
pueda acceder a la base de datos MANEMPSA.MDB. Esto se har en el
constructor.

13. En primer lugar, aade al constructor una llamada a una funcin
PrepararBaseDatos:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

409 Entidad Clientes | By reycito2011



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

410 Entidad Clientes | By reycito2011

14. Crea el mtodo PrepararBaseDatos debajo del constructor y empieza a
programar lo siguiente:




El cdigo que acabas de programar es el primer paso a realizar para el
acceso a una base de datos: La Carga del Controlador.

Recuerda que el controlador le indica a Java que tipo de base de datos
usaremos: Access, MySQL, etc

El controlador que le indica al java que usaremos una base de datos de
Access viene definido a travs de la siguiente cadena de texto:

sun.jdbc.odbc.JdbcOdbcDriver


Y la forma de activar dicho controlador es a travs de la instruccin:

Class.forName(controlador).newInstance();

Donde controlador es una variable de cadena que contiene la cadena
anterior.


Bsicamente, lo que hacen estas dos lneas de cdigo, es preparar a
Java para poder usar Access.

En el caso de que se quisiera usar una base de datos realizada en otro
programa que no fuera Access, habra que cambiar la cadena de texto
correspondiente a su controlador.

Por ejemplo, para usar una base de datos creada con el gestor de base
de datos MySQL se usa la cadena: com.mysql.jdbc.Driver.

En nuestro caso siempre usaremos Access.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

411 Entidad Clientes | By reycito2011

Tambin puedes observar que es obligatorio encerrar el cdigo de la
carga del controlador entre try catch para capturar cualquier error
imprevisto.

15. Ahora aade el siguiente cdigo a continuacin del anterior:



El cdigo que acabas de aadir se corresponde con el segundo paso para
acceder a una base de datos: Crear el objeto Conexin.

El objeto conexin es el que efecta la conexin real con la base de datos. Se
podra decir que es el objeto que permite abrir la puerta del fichero de base de
datos para entrar en l. Para construir este objeto conexin (el cual ya est
declarado en la parte global de la clase) hacen falta tres datos:

El nombre del usuario que manipular la base de datos. En el caso de
Access no necesitamos indicar ningn nombre de usuario, por eso vers la
instruccin:

String user = ;

El password del usuario que manipular la base de datos. En el caso de
Access tampoco necesitaremos ningn password, por eso vers la
instruccin:

String password = ;

La DSN de la base de datos. DSN significa nombre del origen de datos y
es una cadena de texto algo compleja que contiene informacin sobre el
fichero de base de datos que queremos usar. La parte inicial de la cadena
de la DSN siempre ser igual para las bases de datos de Access:

"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="

Sin embargo, lo que nos interesa realmente de esta cadena es su parte final,
donde hay que indicar el camino del fichero de base de datos al que
accederemos. En nuestro caso, indicaremos el camino de MANEMPSA.MDB,
el fichero de la base de datos.

Observa como indicamos el camino del fichero: Base\\MANEMPSA.MDB

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

412 Entidad Clientes | By reycito2011

Base es la carpeta donde hemos guardado el fichero, dentro de nuestro
proyecto java, y MANEMPSA.MDB como ya sabes es el fichero de Access que
contiene la base de datos. Observa la necesidad de escribir dos barras.

En el cdigo podrs ver la creacin de la DSN:

String DSN = "jdbc:odbc:Driver={Microsoft Access Driver
(*.mdb)};DBQ="+
"Base\\MANEMPSA.MDB";

Finalmente se usa la instruccin

conexion=DriverManager.getConnection(DSN,user,password);

para crear la conexin. Ser necesario aadir un import para la clase
DriverManager.

Al igual que con el primer paso, es necesario rodear la creacin de la conexin
con un trycatch para capturar cualquier error inesperado que se pueda
producir en este paso.
16. Ahora aade el siguiente cdigo a continuacin del anterior:




Este cdigo que acabas de aadir se corresponde con el tercer paso necesario
para poder acceder a una base de datos: Creacin del objeto Sentencia.

El objeto sentencia ser el que nos permita ejecutar rdenes SQL sobre la
base de datos. Es decir, el objeto que nos permite actuar y manipular la base
de datos. Este objeto es vital, y es el objetivo de toda esta preparacin.

El objeto sentencia se crea a partir del objeto conexin creado en el paso
anterior, usando la siguiente instruccin:

sentencia=conexion.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);


Y como sucedi en los dos pasos anteriores, es necesario rodear esta
instruccin con un trycatch para capturar cualquier tipo de error inesperado
que se pudiera producir.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

413 Entidad Clientes | By reycito2011


17. As pues ya tenemos preparado nuestro programa para acceder a la
base de datos. Esta preparacin se realiza en el momento en que se
ejecuta el programa, ya que hemos introducido este cdigo en el
constructor.

Es cierto que este cdigo puede resultar bastante abstracto y complejo,
pero tiene la gran ventaja de que siempre es igual.

Para nuestros ejercicios, solo tendremos que cambiar el nombre de la
base de datos que se est usando en ese momento. El resto del cdigo
queda igual.

Observa:







18. El objetivo de todo este cdigo de preparacin para el acceso al fichero
de la base de datos es obtener un objeto llamado sentencia que nos
posibilitar la manipulacin de los datos de la base de datos, usando
rdenes SQL.

El mtodo PrepararBaseDatos
siempre ser igual, solo cambiar el
nombre de la base de datos a usar.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

414 Entidad Clientes | By reycito2011

En este ejercicio guiado usaremos el objeto sentencia para averiguar
informacin acerca de los trabajadores.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

415 Entidad Clientes | By reycito2011

REALIZAR CONSULTAS SQL USANDO EL OBJ ETO SENTENCIA


19. Cuando se pulse el botn Ver Datos de Trabajadores tendremos que
extraer los datos de la tabla trabajadores para poder mostrarlos. Para
ello, escribe el siguiente cdigo dentro del evento actionPerformed del
botn btnVerDatos:








Observa el cdigo:

ResultSet r = sentencia.executeQuery(select * from
trabajadores order by nombre);


El objeto sentencia se usa para dar rdenes a la base de datos. Esas
rdenes se dan usando el lenguaje de consulta SQL.

Se usa el mtodo executeQuery del objeto sentencia para ejecutar la
consulta SQL select * from trabajadores order by nombre.
Esta consulta extraer todos los datos de la tabla trabajadores
ordenados por nombre.

El mtodo executeQuery recibe como parmetro una cadena
representando la consulta SQL. No es necesario indicar el punto y coma
final de la consulta SQL.

El resultado de la consulta se guarda en un objeto del tipo ResultSet al
que se ha llamado simplemente r. Los objetos ResultSet almacenan el
resultado de una consulta SQL. (Ser necesario incluir el import
necesario para la clase ResultSet)

Y como puedes observar, es necesario rodear la ejecucin de una
consulta SQL con un trycatch para capturar errores inesperados al
realizar la consulta.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

416 Entidad Clientes | By reycito2011

LOS OBJ ETOS RESULTSET


20. Debes imaginarte el objeto ResultSet r como una tabla que contiene el
resultado de la consulta SQL que se ha ejecutado. En nuestro caso, la
consulta SQL que hemos ejecutado ha extrado toda la tabla
trabajadores. Por tanto nuestro ResultSet contiene toda la tabla
trabajadores.

El objeto r por tanto podra representarse as:

Trabajadores
DNI Nombre Apellidos Sueldo Fecha Matricula
BOF
21.123.123-
A
Ana Ruiz 1200 02/03/2002 3322-
ASR
22.333.444-
C
Francisco Lpez 1000 01/06/2006 1144-
BBB
12.321.567-
B
Juan Prez 1120 04/05/2002 4433-
ABB
EOF

21. La fila BOF significa comienzo de fichero y representa una fila anterior
al primer registro del ResultSet.

La fila EOF significa final de fichero y representa una fila posterior al
ltimo registro del ResultSet.

La flecha indica la posicin actual donde estamos situados dentro de la
tabla del ResultSet.

22. Aade la siguiente lnea al cdigo del actionPerformed:



El mtodo next del ResultSet har que avancemos una fila en el
ResultSet. Es decir, ahora estaremos situados en la primera fila del
ResultSet (la flecha avanza una posicin)

Trabajadores
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

417 Entidad Clientes | By reycito2011

DNI Nombre Apellidos Sueldo Fecha Matricula
BOF
21.123.123-
A
Ana Ruiz 1200 02/03/2002 3322-
ASR
22.333.444-
C
Francisco Lpez 1000 01/06/2006 1144-
BBB
12.321.567-
B
Juan Prez 1120 04/05/2002 4433-
ABB
EOF



23. Ahora que estamos situados en la posicin del primer trabajador (Ana),
podemos extraer informacin referente a sus campos. Aade el
siguiente cdigo al actionPerformed del botn:





Lo que se ha hecho primero es declarar una variable de cadena llamada
info.

Luego, a esta variable se le ha asignado una concatenacin de cadenas:

info="El trabajador se llama "+r.getString("nombre")+"
"+r.getString("apellidos")+
" y cobra "+r.getString("sueldo");


Lo interesante de esto es el mtodo getString del objeto ResultSet r. El
mtodo getString permite extraer una cadena con el valor del campo
indicado como parmetro.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

418 Entidad Clientes | By reycito2011

En nuestro caso:

r.getString(nombre) Extrae el nombre del trabajador
actual (Ana)
r.getString(apellidos) Extrae los apellidos del trabajador actual
(Ruiz)
r.getString(sueldo) Extrae el sueldo del trabajador
actual (1200)


Luego se muestra la cadena info en un simple JOptionPane.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

419 Entidad Clientes | By reycito2011

24. Ya puedes ejecutar el programa.




25. Sigamos haciendo cambios en el cdigo del botn para entender mejor
el funcionamiento de los ResultSet. Aade la siguiente lnea:




Pulsa el botn

Y aparecer
informacin sobre el
primer trabajador de la
base de datos
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

420 Entidad Clientes | By reycito2011

26. Se ha aadido un segundo next. Esto producir que la flecha avance
dos posiciones en el ResultSet, y por tanto se coloque en la segunda
fila:


Trabajadores
DNI Nombre Apellidos Sueldo Fecha Matricula
BOF
21.123.123-
A
Ana Ruiz 1200 02/03/2002 3322-
ASR
22.333.444-
C
Francisco Lpez 1000 01/06/2006 1144-
BBB
12.321.567-
B
Juan Prez 1120 04/05/2002 4433-
ABB
EOF


27. Esto quiere decir que si se ejecuta el programa se mostrar informacin
sobre Francisco Lpez. Comprubalo:



28. Los objetos ResultSet poseen diversos mtodos para cambiar la
posicin actual en la tabla del ResultSet. Dicho de otro modo: para
mover la flecha. Veamos algunos de estos mtodos (se supone que el
objeto ResultSet se llama r):

r.next(); Mueve la flecha a la siguiente fila
r.previous(); Mueve la flecha a la fila anterior
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

421 Entidad Clientes | By reycito2011

r.first(); Mueve la flecha a la primera fila
r.last(); Mueve la flecha a la ltima fila
r.beforeFirst() Mueve la flecha a la fila BOF
r.afterLast() Mueve la flecha a la fila EOF
r.absolute(n) Mueve la flecha a la fila n del ResultSet.
Las filas se empiezan a numerar por 1.

29. Haga el siguiente cambio en el actionPerformed simplemente para
experimentar:




En este caso la flecha se coloca en EOF (afterLast) y luego retrocede
una fila (previous). Por tanto, al ejecutar el programa se mostrarn los
datos del ltimo trabajador. Compruebalo.



Trabajadores
DNI Nombre Apellidos Sueldo Fecha Matricula
BOF
21.123.123-
A
Ana Ruiz 1200 02/03/2002 3322-
ASR
22.333.444-
C
Francisco Lpez 1000 01/06/2006 1144-
BBB
12.321.567-
B
Juan Prez 1120 04/05/2002 4433-
ABB
EOF


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

422 Entidad Clientes | By reycito2011

30. Otro experimento. Cambie ahora el cdigo de esta forma:




Este cdigo coloca la flecha en la fila 2 ( absolute(2) ), luego avanza
una fila (next), luego retrocede una fila (previous) y finalmente
retrocede una fila (previous)

As pues, finalmente, la flecha queda colocada en la primera fila. Por lo
tanto se muestran los datos del primer trabajador. Comprubalo.




Trabajadores
DNI
Nombr
e
Apellid
os
Sueld
o
Fecha
Matricu
la
BOF
21.123.12
3-A
Ana Ruiz 1200 02/03/20
02
3322-
ASR
22.333.44
4-C
Francis
co
Lpez 1000 01/06/20
06
1144-
BBB
12.321.56
7-B
Juan Prez 1120 04/05/20
02
4433-
ABB
EOF


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

423 Entidad Clientes | By reycito2011

31. Como ves, podemos movernos dentro del contenido del ResultSet
gracias a todos estos mtodos, para luego poder extraer los datos de la
fila correspondiente.

Ahora, estudiaremos la forma de recorrer todas las filas del ResultSet
para as extraer la informacin de todos sus registros.

32. Vamos a modificar nuestro cdigo para que se muestren todos los
trabajadores del ResultSet. Para ello, realiza el siguiente cambio:




En este cdigo se ha inicializado la variable info a la cadena vaca y
luego se ha aadido un bucle bastante interesante:

r.beforeFirst();
while (r.next()) {
info=info+r.getString("nombre")+"
"+r.getString("apellidos")+"
"+r.getString("sueldo")+"\n";
}

Analicemos este bucle:

- Lo primero que se hace es colocar explcitamente la flecha en la fila
BOF, es decir, antes del primer trabajador:

r.beforeFirst();

- Luego tenemos un bucle mientras que comienza as:

while (r.next()) {

El mtodo next intenta colocar la flecha en la siguiente fila, y si lo hace
bien, devuelve el valor verdadero. Cuando no se puede avanzar ms, el
mtodo next devolver falso.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

424 Entidad Clientes | By reycito2011


As pues, este while significa mientras se haya podido avanzar una fila,
haz lo siguiente. O dicho de otro modo, este bucle se repetir para cada
fila de la tabla del ResultSet.


- Si analizamos el contenido del bucle, bsicamente veremos una
concatenacin de cadenas dentro de la variable info. En cada vuelta
del bucle se concatenar el nombre, apellidos y sueldo de cada
trabajador.

info=info+r.getString("nombre")+"
"+r.getString("apellidos")+"
"+r.getString("sueldo")+"\n";

- Finalmente se visualiza la variable info en un JOptionPane.


33. Ejecuta el programa y comprueba su funcionamiento.




34. El bucle que acabas de programar es un cdigo clsico para manipular
un ResultSet. Siempre que quieras recorrer todas las filas del ResultSet
hars algo como esto:

r.beforeFirst();
while (r.next()) {
manipulacin de la fila
}
Al pulsar el botn

Aparecen los datos de todos
los trabajadores de la base
de datos.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

425 Entidad Clientes | By reycito2011



35. Se ha visto que para obtener un dato de la fila actual se usa el mtodo
getString indicando como parmetro el dato que se quiere obtener.

Por ejemplo:

r.getString(sueldo);

Obtiene el sueldo del trabajador sealado actualmente con la flecha.
Este sueldo se obtiene convertido en cadena.
36. Los ResultSet poseen otros mtodos para obtener los datos convertidos
en nmeros como son:

getInt(campo)

y

getDouble(campo)

para obtener el dato en entero o double, respectivamente.

Esto nos permite el realizar operaciones con los datos extrados del
ResultSet.


37. Como ejemplo de esto ltimo, realice la siguiente mejora al programa:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

426 Entidad Clientes | By reycito2011

En este nuevo cdigo se ha aadido una variable double acumuladora
llamada totalsu, donde sumaremos todos los sueldos.

Dentro del bucle, se van acumulando el sueldo de cada trabajador.
Observa el uso de getDouble para obtener el campo sueldo de forma
numrica, en vez de usar getString:

totalsu=totalsu+r.getDouble("sueldo");

Y finalmente usamos otro JOptionPane para ver la suma de los sueldos
calculada.

Ejecuta el programa y comprueba su funcionamiento.



38. Una vez finalizado el programa, es una buena costumbre cerrar la base
de datos que estamos manejando. Esto se hace cerrando la conexin
con la base de datos.

Para hacer esto se usa el mtodo close del objeto conexin.

Esto se har en el momento en que se finalice el programa, es decir, en
el evento windowClosing de la ventana principal:





Como ves, tambin hay que encerrar este cdigo entre trycatch para
evitar posibles errores.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

427 Entidad Clientes | By reycito2011



CONCLUSIN

Para crear un programa Java que pueda usar una base de datos ser
necesario realizar los siguientes pasos:

- Colocar el fichero de base de datos en una subcarpeta de la carpeta del
proyecto java.

- Preparar el acceso a la base de datos (en el constructor)

* Se crearn dos objetos: conexin (Connection) y sentencia
(Statement)
* Se cargar el controlador del tipo de base de datos a usar
* Se crear el objeto conexin indicando el fichero de la base de
datos.
* Se crear el objeto sentencia a partir del objeto conexin

- Se usar el objeto sentencia para ejecutar consultas SQL en la base de
datos.

- Las consultas SQL ejecutadas en la base de datos se almacenan en
objetos del tipo ResultSet


- Un objeto ResultSet tiene forma de tabla conteniendo el resultado de la
consulta SQL

* Los objetos ResultSet tienen mtodos para seleccionar el registro
de la tabla
* Los objetos ResultSet tienen mtodos que permiten extraer el
dato de un
campo en concreto.


EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS


Recapitulando

Para hacer una aplicacin java que acceda a una base de datos se tiene que

- Introducir la base de datos en una subcarpeta del proyecto.
- Preparar la base de datos desde el constructor.
- Usar el objeto sentencia cada vez que se quiera consultar la base de
datos o actuar sobre ella.
- Los resultados de las consultas ejecutadas sobre la base de datos se
recogern en objetos ResultSet que contendrn los datos devueltos por
la consulta.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

428 Entidad Clientes | By reycito2011

- Cerrar la conexin a la base de datos cuando ya no haya que usarla
ms.


Consultar la Base de Datos

En la hoja anterior se vio que se puede usar el objeto sentencia para ejecutar
una consulta SQL en la base de datos. Al hacer esto se consigue un objeto
ResultSet que contiene el resultado de la consulta.

El contenido del ResultSet tiene forma de tabla, y podemos extraer la
informacin colocndonos en la fila correspondiente del ResultSet y luego
usando los mtodos:

getString
getDouble
getInt

segn queramos extraer el dato en forma de cadena, de nmero real o nmero
entero.

En esta hoja guiada se insistir sobre la forma de manipular los datos
contenidos en un ResultSet


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

429 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1

PLANTEAMIENTO

Se quiere realizar una pequea aplicacin de base de datos que nos muestre
informacin sobre los servicios realizados en la empresa MANEMPSA. Para
ello, siga los pasos que se indican a continuacin:


39. Entre en NetBeans. Crea un nuevo proyecto llamado ServiciosBD.
Dentro de este proyecto crea un paquete principal llamado
paqueteprincipal y dentro de l un JFrame llamado ventanaprincipal:



40. En la parte superior de la ventana aade un botn con el texto Ver Datos
Servicios que se llame btnServicios.




41. Se pretende simplemente que al pulsar el botn btnServicios aparezcan
en un JOptionPane datos sobre los servicios almacenados en la base de
datos.



SITUACIN DEL FICHERO DE BASE DE DATOS

42. Como se vio en la hoja anterior, interesa colocar el fichero de la base de
datos que se va a usar en una subcarpeta de la carpeta de proyecto que
se est haciendo.

As pues, entre en la carpeta de proyecto ServiciosBD

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

430 Entidad Clientes | By reycito2011



43. Y dentro de ella crea una carpeta Base. Dentro de la carpeta Base copia
el fichero de base de datos MANEMPSA.MDB, el cual se encuentra
dentro de la carpeta Mis Documentos.





44. Ahora ya podemos volver al NetBeans y continuar con nuestro trabajo.


PREPARACIN DE LA APLICACIN J AVA PARA EL ACCESO A LA BASE
DE DATOS

45. Preparar nuestro proyecto para que permita el acceso a la base de datos
MANEMPSA.MDB es un proceso complejo, aunque afortunadamente
siempre se hace igual.

Solo tiene que aadir el siguiente cdigo a su ventana principal:





Copia aqu dentro
el fichero de base
de datos
MANEMPSA.MDB
Declara los objetos
globales conexin y
sentencia



Haz la llamada al mtodo
PrepararBaseDatos
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

431 Entidad Clientes | By reycito2011






REALIZAR CONSULTAS SQL USANDO EL OBJ ETO SENTENCIA

46. Ahora que hemos preparado nuestro proyecto para poder usar la base
de datos MANEMPSA.MDB, ya podemos programar el botn para
visualizar los servicios. Entra dentro del actionPerformed de este botn y
programa lo siguiente:

Recuerda que el mtodo PrepararBaseDatos
siempre ser igual, solo tienes que indicar aqu el
nombre de la base de datos a usar.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

432 Entidad Clientes | By reycito2011


Si observas el cdigo, lo que hace es ejecutar la consulta SQL

select * from servicios order by cantidad

la cual extrae todos los servicios almacenados en la tabla servicios
ordenados por cantidad de menor a mayor.

El resultado de esta consulta se almacena en un ResultSet y se usa un
bucle tpico que recorre el ResultSet y muestra el tipo de cada servicio y
la cantidad:

while (r.next()) {
info=info+r.getString("tipo")+"
"+r.getString("cantidad")+"\n";
}

Puedes ejecutar el programa para ver como funciona.


47. Aunque no es vital para el programa, aadamos el cierre de la conexin
de la base de datos en el windowClosing de nuestra ventana:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

433 Entidad Clientes | By reycito2011

EXTRAER FECHAS DEL RESULTSET

48. Se va a mejorar el programa de forma que se muestre de cada servicio
el tipo, la cantidad y la fecha en que se hizo. Por tanto, haz el siguiente
cambio en el cdigo del actionPerformed del botn btnServicios:





Simplemente estamos cambiando la concatenacin de la cadena info de
forma que aparezca la fecha de cada servicio, el tipo y la cantidad.


49. Ejecuta el programa y observa el resultado.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

434 Entidad Clientes | By reycito2011





50. Como se ha podido observar, las fechas extradas del ResultSet tienen
un formato distinto al que usamos normalmente.

Para mejorar la presentacin de las fechas extradas del ResultSet haz
los siguientes cambios en el cdigo:

Como se puede ver, las
fechas aparecen en orden
cambiado (ao-mes-dia)

Y adems incluyen el formato
de hora.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

435 Entidad Clientes | By reycito2011





El cdigo se ha mejorado de forma que la fecha aparezca en un formato
espaol correcto. Ejecuta el programa para comprobar el resultado:



Observa como ahora las
fechas aparecen
correctamente
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

436 Entidad Clientes | By reycito2011

51. Estudiemos el cdigo que acabamos de aadir:

Lo primero que se ha hecho es crear varias variables de cadenas para
contener el da, mes y ao de la fecha as como la fecha completa.

String cadfecha; //cadena para fechas
String caddia; //cadena para el dia
String cadmes; //cadena para el mes
String cadanio; //cadena para el ao

Dentro del bucle extraemos la fecha del ResultSet y la almacenamos en
la variable cadfecha:

cadfecha=r.getString("fecha");

Ahora mismo, la variable cadfecha contendr una cadena como la
siguiente:

2 0 0 5 - 1 2 - 2 1 - 0 0 : 0 0 : 0 0


Para extraer el ao de la cadena, extraemos los caracteres
comprendidos entre la posicin 0 y la posicin 3. Esto se hace usando el
mtodo substring de la siguiente forma:

cadanio=cadfecha.substring(0,4);

Para extraer el mes de la cadena, tendremos que extraer los caracteres
comprendidos entre la posicin 5 y la posicin 6. Esto se hace usando el
mtodo substring de la siguiente forma:

cadmes=cadfecha.substring(5,7);

Para extraer el dia de la cadena, tendremos que extraer los caracteres
comprendidos entre la posicin 8 y la posicin 9 de la cadena. Esto se
hace usando el mtodo substring de la siguiente forma:

caddia=cadfecha.substring(8,10);

Una vez extrados dia, mes y ao, de la cadena, podemos concatenarlos
formando una fecha en formato dia/mes/ao de la siguiente forma:

cadfecha=caddia+"/"+cadmes+"/"+cadanio;

As pues, finalmente tenemos una variable cadfecha que ser la que se
visualizar en el JOptionPane:

info=info+cadfecha+" "+r.getString("tipo")+" "+
r.getString("cantidad")+"\n";

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

437 Entidad Clientes | By reycito2011


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

438 Entidad Clientes | By reycito2011

PRESENTACIN DE COMAS DECIMALES

52. Ahora mejoraremos el programa para que los costes de los servicios
aparezcan con coma decimal, en vez de punto decimal:



Modifica el cdigo de la siguiente forma:

Haremos que aqu aparezcan
comas, en vez de puntos
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

439 Entidad Clientes | By reycito2011




Se ha aadido una variable de cadena llamada cadcoste que
almacenar el coste de cada servicio.

En el cdigo del bucle, recogemos la cantidad en dicha variable y luego
usamos el mtodo de cadena replace para reemplazar los puntos por
comas:

cadcoste=r.getString("cantidad");
cadcoste=cadcoste.replace(".",",");

Finalmente, mostramos la cadena de coste en la concatenacin:

info=info+cadfecha+" "+r.getString("tipo")+"
"+cadcoste+"\n";

Ejecuta el programa y observa el resultado:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

440 Entidad Clientes | By reycito2011





VALORES NULOS

53. Es posible que algn campo de algn registro de la tabla est vaco. Es
decir, que sea nulo. Si esto ocurre, entonces al extraer dicho dato de la
tabla usando getString aparecer el valor null en el JOptionPane.

54. Para comprobar esta circunstancia, agrega un nuevo botn a la ventana
principal con el texto Ver Datos de Clientes. Llmalo por ejemplo
btnClientes.

55. Al pulsar este botn aparecer el listado de clientes de la empresa.
Concretamente debe aparecer el nombre del cliente, el telfono 1 y el
telfono 2. Para ello aade el siguiente cdigo dentro del evento
actionPerformed del botn.


Ahora ya tenemos las comas
decimales
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

441 Entidad Clientes | By reycito2011



Este cdigo es prcticamente igual que el anterior. Simplemente ejecuta
una consulta SQL usando el objeto sentencia que permite extraer el
contenido de la tabla clientes, y luego recorre el ResultSet mostrando los
campos nombre, telfono 1 y telfono 2 en un JOptionPane.

56. Ejecuta el programa ahora y prueba a pulsar este nuevo botn. Observa
el resultado. Cada vez que un cliente no tenga un telfono, aparecer el
valor null en el JOptionPane:



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

442 Entidad Clientes | By reycito2011

57. Vamos a arreglar esto de forma que aparezca el texto no tiene en vez
de la cadena null. Modifique el cdigo como se indica:




Como puedes ver, lo que se hace ahora es comprobar si el valor
extrado del ResultSet es null, y en ese caso, se concatena la cadena no
tiene. En caso contrario se concatena el valor del campo.




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

443 Entidad Clientes | By reycito2011


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

444 Entidad Clientes | By reycito2011

CONCLUSIN

A travs del objeto sentencia podemos ejecutar una consulta SQL en una
base de datos.

El resultado de la consulta se almacena en un objeto del tipo ResultSet.

Al extraer el valor de un campo fecha desde el objeto ResultSet
observaremos que tiene el siguiente formato:

Ao Mes Dia Hora : Minutos : Segundos

As pues puede ser necesario realizar cambios en esta cadena.

Al extraer el valor de un campo numrico real, obtendremos un nmero
con punto decimal. Quizs sea necesario cambiar este punto por una
coma decimal.

Cuando un campo est vaco, al intentar extraer su valor obtendremos el
valor null.


EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS


Recapitulando. Ejecucin de consultas desde la aplicacin.

Para ejecutar una consulta sobre la base de datos desde tu aplicacin java se
tiene que ejecutar una instruccin usando el objeto sentencia de la siguiente
forma:

ResultSet r = sentencia.executeQuery(consulta_sql);

La consulta_sql es una cadena que tiene forma de consulta SQL bien escrita
(sin fallos). Por ejemplo:

String consulta;
consulta=select * from trabajadores;
ResultSet r = sentencia.executeQuery(consulta);

En este cdigo que se acaba de mostrar, se crea una cadena llamada consulta.
Se le asigna a esta cadena una instruccin SQL para extraer todos los
trabajadores, y finalmente se ejecuta dicha instruccin SQL usando el objeto
sentencia.

La cadena consulta puede ser construida a travs de concatenaciones de
cadenas. Observa atentamente este ejemplo. Es parecido al anterior pero tiene
una ligera diferencia:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

445 Entidad Clientes | By reycito2011


//Supongamos que txtTabla es un cuadro de texto

String consulta;
consulta=select * from + txtTabla.getText();
ResultSet r = sentencia.executeQuery(consulta);


En este caso, la cadena consulta es la concatenacin de

select * from

con

lo que contenga el cuadro de texto txtTabla - es decir, txtTabla.getText()


La gran ventaja de esto, es que el usuario podr escribir el nombre de una
tabla cualquiera dentro del cuadro de texto txtTabla y al ejecutarse este cdigo
se extraer el contenido de dicha tabla.

Es decir, el usuario podr decidir lo que quiere consultar. El usuario afecta a la
construccin de la consulta SQL, y por tanto, tiene cierto control sobre esta
consulta.


La construccin de consultas SQL a partir de la concatenacin de cadenas y
datos proporcionados por el usuario es algo muy usado en los programas de
base de datos. En esta hoja guiada se insistir en esta idea.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

446 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1

PLANTEAMIENTO

Se quiere realizar una aplicacin de base de datos que nos muestre
informacin sobre los trabajadores de la empresa MANEMPSA.

Esta aplicacin le dar al usuario la capacidad de elegir la informacin que
quiere extraer de la base de datos. Es decir, el usuario tendr cierto control
sobre las consultas que se realicen.


58. Entre en NetBeans. Crea un nuevo proyecto llamado TrabajadoresBD.
Dentro de este proyecto crea un paquete principal llamado
paqueteprincipal y dentro de l un JFrame llamado ventanaprincipal:



59. Aade a la ventana un JTextPane y un botn de momento:


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

447 Entidad Clientes | By reycito2011


El botn se llamar btnTodos y el JTextPane se llamar txtPanel.




60. Para que este programa pueda trabajar con la base de datos
MANEMPSA tendr que prepararlo haciendo lo siguiente:

a. Crear la subcarpeta Base y copiar en ella el fichero de base de
datos MANEMPSA.MDB que tiene en la carpeta Mis Documentos.

b. Aadir al programa los objetos conexin (Connection) y sentencia
(Statement) como globales.

c. Crear el procedimiento PrepararBaseDatos y llamarlo desde el
constructor.

d. Cerrar la conexin desde el evento windowClosing

Realice estos cuatro pasos que se han indicado antes de continuar.

61. Ya se puede programar el botn btnTodos. Se pretende que al pulsar
este botn aparezca en el panel txtPanel el contenido de la tabla
trabajadores. Para ello, programe el siguiente cdigo dentro del
actionPerformed del botn btnTodos:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

448 Entidad Clientes | By reycito2011




Si analiza este cdigo, ver que es igual al que hemos realizado en
hojas anteriores. Bsicamente lo que hace es lo siguiente:

- Ejecuta la consulta select * from trabajadores order by
sueldo

- Luego extrae del ResultSet los campos nombre, apellidos, sueldo y
fecha.

- Hay que indicar que al campo sueldo se le cambia el punto decimal
por la coma decimal.

- Por otro lado, la fecha se transforma para que tenga el formato
dia/mes/ao

- Finalmente se muestra el resultado de la consulta en el JTextPane:
txtPanel. (Antes de mostrarlo se borra todo lo que hubiera en el
panel)


62. Ejecuta el programa y prueba el funcionamiento de este botn:


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

449 Entidad Clientes | By reycito2011







63. Se va a mejorar el programa. Aada un cuadro de texto llamado
txtSueldo y luego tres botones llamados respectivamente btnMayor,
btnMenor y btnIgual. La parte inferior de la ventana quedar as:



64. Se pretende que estos botones funcionen de la siguiente forma:

a. El usuario introducir un sueldo en el cuadro de texto txtSueldo.
b. Luego, si pulsa el botn Igual, aparecer en el panel todos los
trabajadores que tengan un sueldo igual al introducido.
c. En cambio, si pulsa el botn Mayor, aparecer en el panel todos
los trabajadores que tengan un sueldo mayor que el introducido.
Al pulsar el botn, se
muestran los datos de
todos los trabajadores.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

450 Entidad Clientes | By reycito2011

d. Y si pulsa el botn Menor, aparecer en el panel todos los
trabajadores que tengan un sueldo menor que el introducido.

Se empezar programando el botn Igual.



65. Programe en el actionPerformed del botn btnIgual lo siguiente. (Nota:
El cdigo siguiente es prcticamente igual al anterior, solo se hace un
pequeo cambio. Puede copiar y pegar y luego hacer la modificacin
que se indica)



Estudiemos detenidamente el cdigo remarcado:

String consulta;
consulta = select * from trabajadores where sueldo =
+txtSueldo.getText();
ResultSet r = sentencia.executeQuery(consulta);

Aqu se crea una variable de texto llamada consulta y luego se concatena en
ella la cadena:
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

451 Entidad Clientes | By reycito2011


select * from trabajadores where sueldo =

con

lo que contenga el cuadro de texto sueldo es decir txtSueldo.getText()

Si el cuadro de texto del sueldo contuviera un 1000, entonces la cadena
resultante sera:

select * from trabajadores where sueldo = 1000

Es decir, se construye una consulta que busca los sueldos de 1000 euros.

66. Prueba a ejecutar el programa. Escribe un valor 1000 en el cuadro de
texto y luego pulsa el botn Igual. El resultado ser que aparecen solo
los trabajadores que tengan 1000 de sueldo.




67. Programa ahora el botn Mayor que de la siguiente forma (El cdigo es
prcticamente igual al anterior, as que puedes usar copiar y pegar. Se
indica con una flecha la pequea diferencia)

Al pulsar el botn
Igual se construye
una consulta usando
el contenido del
cuadro de texto
txtSueldo.

Al ejecutarse la
consulta se muestran
los trabajadores de
1000 euros.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

452 Entidad Clientes | By reycito2011




Como se puede observar, el cdigo es igual. Simplemente cambia el
operador en la cadena que se concatena. Ahora se usa un mayor que.

Es decir, si el usuario introdujera un 1000 en el cuadro de texto del
sueldo, el resultado de la concatenacin en la variable consulta sera la
siguiente cadena:

select * from trabajadores where sueldo > 1000


68. Prueba a ejecutar el programa introduciendo el valor 1000 en el sueldo y
luego pulsando el botn Mayor que. El resultado ser que aparece en el
panel de texto los trabajadores que cobran ms de 1000 euros.

69. Como prctica, programe el botn Menor que de forma que muestre
aquellos trabajadores que cobren menos de la cantidad introducida en el
cuadro de texto txtSueldo.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

453 Entidad Clientes | By reycito2011

70. Vamos a seguir mejorando el programa. Aada ahora el siguiente
cuadro de texto y los siguientes botones:



El cuadro de texto se llamar txtNombre mientras que el botn Igual a
se llamar btnNombreIgual y el botn Contiene a se llamar
btnContiene.


71. Estos botones funcionarn de la siguiente forma:

a. El usuario introducir un nombre en el cuadro de texto txtNombre.

b. Si luego pulsa el botn Igual a, entonces aparecern todos
aquellos trabajadores que tengan exactamente dicho nombre.

c. Si en cambio pulsa el botn Contiene a, entonces aparecern
todos aquellos trabajadores cuyo nombre contenga la palabra que
se haya escrito en el cuadro de texto.

72. Empezaremos programando el botn Igual a. Para ello, escriba el
siguiente cdigo dentro del botn (este cdigo es parecido a los
anteriores, puede usar copiar y pegar y luego realizar las modificaciones
pertinentes)

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

454 Entidad Clientes | By reycito2011



Observa la modificacin del cdigo. Puedes ver que la consulta SQL se
consigue concatenando tres cadenas (se han puesto en color para facilitar
la comprensin):

Primera cadena: select * from trabajadores where nombre =
Segunda cadena: lo que contenga el cuadro de texto:
txtNombre.getText()
Tercera cadena:

Supongamos que el cuadro de texto contiene la palabra Ana, el resultado
de la concatenacin sera:

select * from trabajadores where nombre = Ana


Es decir, el resultado de la concatenacin sera una consulta SQL que
muestra aquellos trabajadores que tengan de nombre Ana.

NOTA:

Recuerda que cuando se especifica un valor de tipo texto en una consulta
SQL, es necesario que est rodeado de comillas simples ()
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

455 Entidad Clientes | By reycito2011


Esa es la razn por la que se tienen que concatenar dos


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

456 Entidad Clientes | By reycito2011

73. Ejecuta el programa y prueba a escribir en el cuadro de texto del nombre
Ana. Luego pulsa el botn Igual a




74. Ahora programaremos el botn Contiene a de forma que el usuario
escriba un texto en el cuadro del nombre, y al pulsar el botn Contiene a
aparezcan todos aquellos trabajadores cuyo nombre contenga el texto
escrito.

Por ejemplo, si el usuario introduce el texto an en el cuadro, al pulsar
Contiene a aparecern los trabajadores que se llamen: Juan, Antonio,
Antonia, Manolo, Ana, etc (todos contienen el texto an)


75. Para ello programe lo siguiente en el actionPerformed del botn
Contiene a (es un cdigo muy parecido al anterior, solo tiene que
realizar una pequea modificacin)

Se escribe Ana en el
cuadro de texto y al
pulsar el botn Igual
a se construye una
consulta SQL que
muestra a los
trabajadores con el
nombre Ana.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

457 Entidad Clientes | By reycito2011



En este caso, para crear la consulta se concatenan tres cadenas (se indican en
color para facilitar la comprensin)

Primera cadena: select * from trabajadores where nombre like
%
Segunda cadena: lo que contenga el cuadro de texto:
txtNombre.getText()
Tercera cadena: %

Supongamos que escribimos en el cuadro de texto del nombre la palabra an, el
resultado de la concatenacin sera el siguiente:

select * from trabajadores where nombre like %an%

La condicin nombre like %an% significa que contenga la palabra an.

NOTA:

Cuando se estudiaron las consultas SQL, se vio que el operador like
funcionaba a travs de asteriscos. Es decir, la forma correcta de indicar la
condicin anterior sera la siguiente:

nombre like *an*
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

458 Entidad Clientes | By reycito2011


Sin embargo, hay que decir que el asterisco se debe usar solamente cuando
estamos manipulando una base de datos de Access desde dentro. En el caso
de que queramos acceder a ella desde una aplicacin java se usarn
porcentajes % en vez de asteriscos.


76. Ejecuta el programa y prueba a escribir en el cuadro de texto del nombre
el texto fra. Luego pulsa el botn Contiene a y comprueba el resultado.
Deben aparecer todos aquellos trabajadores cuyo nombre contenga el
texto fra. Por ejemplo, Francisco.




77. Sigamos mejorando el programa. Aade estos cuadros de texto y estos
botones:


Se escribe fra, se
pulsa el botn
Contiene a, y
entonces el
programa construye
una consulta que
muestra los
trabajadores cuyo
nombre contenga
fra.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

459 Entidad Clientes | By reycito2011






txtDia txtMes txtAnio btnAnterior btnDespues
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

460 Entidad Clientes | By reycito2011

78. El objetivo de estos elementos aadidos es el siguiente:

a. El usuario introducir una fecha (da, mes y ao) en los cuadros
de texto txtDia, txtMes, txtAnio.

b. Luego, si pulsa el botn Anterior, aparecern los trabajadores que
hayan entrado en la empresa antes de la fecha indicada.

c. Si pulsa el botn Despus, en cambio, aparecern los
trabajadores que hayan entrado en la empresa despus de la
fecha indicada.

79. Empezaremos programando el botn Anterior. Accede a su
actionPerformed e incluye el siguiente cdigo (es un cdigo similar al
anterior, solo tienes que realizar un pequeo cambio):





Presta mucha atencin al cdigo remarcado. En l, se construye una consulta
que permite mostrar aquellos trabajadores cuya fecha de entrada en la
empresa sea anterior a la indicada en los cuadros de texto.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

461 Entidad Clientes | By reycito2011

Esto se consigue concatenando varias cadenas (se indican a continuacin en
distintos colores para facilitar la comprensin)


Primera cadena: select * from trabajadores where fecha < #
Segunda cadena: lo que contiene el cuadro de texto del mes: txtMes.getText()
Tercera cadena: /
Cuarta cadena: lo que contiene el cuadro de texto del da: txtDia.getText()
Quinta cadena: /
Sexta cadena: lo que contiene el cuadro de texto del ao: txtAnio.getText()
Sptima cadena: #

Por ejemplo, supongamos que:

- en el cuadro txtDia se introdujo un 20.
- en el cuadro txtMes se introdujo un 12.
- En el cuadro txtAnio se introdujo un 2005.

Entonces, la cadena resultante de la concatenacin ser:

select * from trabajadores where fecha < #12/20/2006#


Es decir, la cadena resultante es una consulta SQL que busca los trabajadores
cuya fecha de entrada en la empresa sea anterior al 20 del 12 del 2006


NOTA:

Recuerda que para que Access entienda las fechas al hacer una consulta SQL,
es necesario indicarlas en el formato mes/dia/ao.

Por otro lado, recuerda que las fechas deben estar rodeadas por almohadillas #


80. Ejecuta el programa y prueba a introducir una fecha en las casillas
correspondientes. Luego pulsa el botn Anterior y observa como
aparecen los trabajadores que entraron antes de la fecha indicada.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

462 Entidad Clientes | By reycito2011




81. Como ejercicio se propone que programe el botn Despus. Al pulsar
este botn, se mostrarn los trabajadores que hayan entrado antes de la
fecha indicada en los cuadros de texto. El cdigo es prcticamente igual
al cdigo del botn Anterior.


Introduce un da,
mes y ao en los
cuadros
correspondientes.

Al pulsar el botn
Anterior, el
programa
mostrar los
trabajadores que
hayan entrado
antes de esa
fecha.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

463 Entidad Clientes | By reycito2011

CONCLUSIN

A travs del objeto sentencia podemos ejecutar una consulta SQL en una
base de datos.

Esta consulta SQL viene expresada como una cadena.

Se puede construir una consulta SQL a travs de la concatenacin de
varias cadenas. Estas cadenas pueden ser datos introducidos por el
usuario en cuadros de textos u otros controles.

Al hacer que el usuario pueda participar en la construccin de la consulta
aportando sus propios datos, le damos la posibilidad de que l decida la
informacin que se quiere extraer de la base de datos. De esta manera se
consigue que el programa sea ms potente.

A tener en cuenta lo siguiente acerca de las consultas SQL ejecutadas
desde una aplicacin java para acceder a una base de datos de Access:

- Los valores tipo texto se indicarn entre comillas simples
- El operador like se usa con porcentajes (%) en vez de con asteriscos (*)
- Las fechas van rodeadas por almohadillas (#)
- Las fechas tienen que indicarse con el formato mes/dia/ao


EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS


Recapitulando. Consultas de seleccin. Consultas de Accin.

Al estudiar SQL, vimos que existan dos tipos de instrucciones.

- Consultas de seleccin (SELECT)

Estas consultas permiten extraer datos de la base de datos. Dicho de
otro modo, permiten visualizar informacin de la base de datos que
cumpla un criterio.

Estas consultas no afectan a la base de datos, simplemente muestran
informacin sobre la propia base de datos.

- Consultas de accin. (INSERT, DELETE, UPDATE)

Estas consultas realizan una accin sobre la base de datos. Esta accin
puede ser:

o Insertar un nuevo registro en una tabla (INSERT)
o Borrar un registro o registros de una tabla (DELETE)
o Modificar los datos de un registro o registros de la tabla
(UPDATE)
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

464 Entidad Clientes | By reycito2011



Ejecucin de consultas de seleccin y de consultas de accin.

Hasta ahora se han realizado programas java que ejecutaban consultas de
seleccin sobre la base de datos.

Recuerda que para ejecutar estas consultas se usa el mtodo executeQuery
del objeto sentencia y el resultado de la consulta se almacena en un objeto
ResultSet:

ResultSet r = sentencia.executeQuery(select . . .);


En esta hoja guiada veremos la ejecucin de consultas de accin sobre la base
de datos desde la aplicacin java. Este tipo de consultas se ejecutan usando el
mtodo executeUpdate del objeto sentencia, y no devuelven un resultado
concreto, ya que simplemente actan sobre la base de datos modificando de
alguna manera su contenido.

As pues, para realizar un alta en la base de datos se usar:

sentencia.executeUpdate(insert . . .);

Para realizar una modificacin en la base de datos se usar:

sentencia.executeUpdate(update . . . );

Para realizar una eliminacin en la base de datos se usar:

sentencia.executeUpdate(delete . . . );




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

465 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1

PLANTEAMIENTO

Se quiere realizar una aplicacin de base de datos que manipule los datos de
los trabajadores de la base de datos MANEMPSA. Esta aplicacin permitir ver
el listado de trabajadores y adems permitir introducir nuevos trabajadores.

82. Entre en NetBeans. Crea un nuevo proyecto llamado
GestionTrabajadores. Dentro de este proyecto crea un paquete principal
llamado paqueteprincipal y dentro de l un JFrame llamado
ventanaprincipal:



83. Aade a la ventana un JTextPane y un botn de momento:



El botn se llamar btnTrabajadores y el JTextPane se llamar panelTexto.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

466 Entidad Clientes | By reycito2011





84. Para que este programa pueda trabajar con la base de datos
MANEMPSA tendr que prepararlo haciendo lo siguiente:

a. Crear la subcarpeta Base y copiar en ella el fichero de base de
datos MANEMPSA.MDB que tiene en la carpeta Mis Documentos.

b. Aadir al programa los objetos conexin (Connection) y sentencia
(Statement) como globales.

c. Crear el procedimiento PrepararBaseDatos y llamarlo desde el
constructor.

d. Cerrar la conexin desde el evento windowClosing

Realice estos cuatro pasos que se han indicado antes de continuar.

85. Ya se puede programar el botn btnTrabajadores. Se pretende que al
pulsar este botn aparezca en el panel panelTexto el contenido de la
tabla trabajadores.

Para ello, en el actionPerformed del botn btnTrabajadores programe lo
siguiente:




86. Como puede ver, es una llamada a un mtodo al que se le ha dado el
nombre MostrarTodos. Este mtodo se encargar de mostrar todos los
trabajadores en el panelTexto.

Programe el mtodo MostrarTodos de la siguiente forma:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

467 Entidad Clientes | By reycito2011




El cdigo de este mtodo no debe resultarle ya desconocido.

Bsicamente lo que hace es ejecutar una consulta SQL que recoge todos los
datos de la tabla trabajadores y luego muestra dichos datos en el panel de la
ventana.

Se muestra el listado procurando que las fechas aparezcan con el formato dia-
mes-ao, que los sueldos aparezcan con la coma decimal y que si el campo
matrcula fuera nulo o la cadena vaca , entonces aparezca el texto sin
coche.

La razn por la que se ha programado este cdigo en un mtodo aparte
llamado MostrarTodos en vez de hacerlo directamente en el actionPerformed
del botn se entender ms adelante, cuando avancemos en el ejercicio
guiado.


87. Ejecute el programa y pruebe el botn btnTrabajadores. Compruebe que
realiza su cometido.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

468 Entidad Clientes | By reycito2011



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

469 Entidad Clientes | By reycito2011

88. Ahora que ya tenemos un programa capaz de visualizar a los
trabajadores, aada los siguientes elementos a la ventana principal:




89. El objetivo de estos elementos es el siguiente:

El usuario introducir los datos de un nuevo trabajador en las casillas
indicadas.

Luego, al pulsar el botn de Alta, se introducir en la tabla trabajadores
los datos del nuevo trabajador y aparecer en el panel la lista
actualizada de trabajadores incluyendo al nuevo que se ha aadido.

Para ello tendrs que programar en el botn Alta lo siguiente:


Panel: panelAlta

Cuadros de Texto:

txtDNI

txtNombre

txtApellidos

txtSueldo


txtDia
txtMes
txtAnio

txtMatricula

Botn: btnAlta
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

470 Entidad Clientes | By reycito2011



Analicemos este cdigo detenidamente.

Lo primero que hay que tener en cuenta es que se realiza una concatenacin de cadenas
dentro de la variable consulta.

Observa el uso de += para concatenar. Ten en cuenta que es lo mismo poner
esto:

consulta += +txtDNI.getText()+,;

que poner esto:

consulta = consulta + +txtDNI.getText()+,;

Solo que el uso de += acorta las instrucciones.

Si se analiza la concatenacin de las cadenas, se observar que el resultado
es una instruccin SQL del tipo INSERT INTO. Es decir, una instruccin SQL
que permite la insercin de un nuevo registro en la tabla trabajadores.

Por ejemplo, supongamos que introducimos los siguientes valores en los
cuadros de texto:

txtDNI 11.111.111-A
txtNombre Mara
txtApellidos Ruiz
txtSueldo 1100
txtDia 10
txtMes 4
txtAnio 2001
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

471 Entidad Clientes | By reycito2011

txtMatricula 4433RET

La concatenacin en la variable consulta resultara lo siguiente (en azul los
valores de los cuadros de texto, en rosa las cadenas que se concatenan):

insert into trabajadores values (11.111.111-
A,Mara,Ruiz,1100,#4/10/2001#,4433RET)


Es decir, se sigue la misma estrategia que en la hoja anterior. Se concatenan trozos de
cadenas y datos introducidos por el usuario hasta conseguir una cadena con forma de
instruccin SQL.

En este ejemplo, la instruccin SQL construida por concatenacin es una
instruccin INSERT INTO que permite introducir en la tabla trabajadores los
datos de un nuevo trabajador.

El objeto que se encarga de ejecutar dentro de la base de datos la instruccin
SQL recin construida es el objeto sentencia:

sentencia.executeUpdate(consulta);

Como se puede observar, para ejecutar instrucciones SQL de accin ya no se
usa el mtodo executeQuery, sino que se usa el mtodo executeUpdate.

Una vez ejecutada la introduccin del nuevo registro en la base de datos, se
llama al procedimiento MostrarTodos el cual se encarga de mostrar todo el
contenido de la tabla trabajadores en el panel de texto. Gracias a este mtodo,
veremos como se rellena el panel y observaremos al nuevo registro recin
introducido.

La razn de que se programara aparte el mtodo MostrarTodos para mostrar el
listado completo de trabajadores ha sido debido a la intencin de llamar a este
mtodo desde otros lugares del programa. Es decir, la intencin ha sido
centralizar cdigo y evitar su repeticin.

Hay que tener en cuenta que todo este cdigo est rodeado de un try ... catch
para evitar cualquier error inesperado. Ten en cuenta que pueden producirse
errores fcilmente si introducimos valores incorrectos en los cuadros de texto.




90. Finalmente ejecute el programa y compruebe su funcionamiento
aadiendo varios trabajadores a la tabla:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

472 Entidad Clientes | By reycito2011


Introduce datos y
pulsa el botn
Alta.


En la parte
superior aparecer
el listado completo
incluyendo al
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

473 Entidad Clientes | By reycito2011


CONCLUSIN

Se pueden ejecutar instrucciones SQL del tipo INSERT INTO (insertar
registros) usando el objeto sentencia.

Para este tipo de instrucciones hay que usar el mtodo executeUpdate.

Normalmente, ser necesario construir una cadena de consulta a travs
de la concatenacin de subcadenas y datos introducidos por el usuario
en cuadros de texto.

Este tipo de instrucciones SQL no devuelven ningn ResultSet, ya que no
extraen datos de las tablas, sino que modifican el contenido de stas.

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS


Consultas de Accin. Bajas.

En la hoja guiada anterior se vio como se podan ejecutar consultas SQL de
accin del tipo INSERT INTO (para insertar registros en las tablas de la base
de datos)

En esta hoja guiada se practicar con otras consultas SQL de accin.
Concretamente con las del tipo DELETE (usadas para eliminar registros de las
tablas de la base de datos)

Al igual que ocurre con las consultas INSERT INTO, las consultas DELETE
haya que ejecutarlas usando el mtodo executeUpdate del objeto sentencia.

sentencia.executeUpdate(delete . . . );

Al ejecutar estas consultas se cambiar el contenido de las tablas de la base
de datos y no se devolver ningn ResultSet.




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

474 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1

PLANTEAMIENTO

Se mejorar el proyecto realizado en la hoja anterior de forma que no solo
admita la insercin de nuevos trabajadores en la tabla trabajadores de la base
de datos MANEMPSA, sino que tambin permite eliminar a trabajadores de la
tabla.


1. Entre en NetBeans. Abre el proyecto llamado GestionTrabajadores que
se program en la hoja anterior.

2. Aade en la parte inferior de la ventana un nuevo panel:





3. La mejora que se pretende hacer es la siguiente:

a. El usuario introducir en el cuadro de texto txtDNIEliminar el DNI
del trabajador que quiere eliminar.

b. Al pulsar el botn Eliminar el trabajador con dicho DNI se
eliminar de la tabla.

c. Antes de eliminar al trabajador, se le pedir al usuario una
confirmacin, para evitar un borrado accidental.

d. Si el DNI introducido no se correspondiera con ningn trabajador
de la tabla, entonces se mostrar un mensaje indicndolo.

Panel: panelBajas

Cuadro de texto: txtDNIEliminar

Botn: btnEliminar
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

475 Entidad Clientes | By reycito2011

4. Para hacer esto, entre en el actionPerformed del botn Eliminar y
programe lo siguiente:




Se va a analizar este cdigo. Estdielo con detenimiento:

Lo primero interesante que encontrar es la construccin de una consulta de
seleccin (SELECT) usando la tpica concatenacin de cadenas:

consulta="select * from trabajadores where
DNI='"+txtDNIEliminar.getText()+"'";
ResultSet r=sentencia.executeQuery(consulta);

Esto se hace para extraer aquellos trabajadores que tengan el DNI introducido
en el cuadro de texto txtDNIEliminar. La idea es saber si existe en la tabla
algn trabajador con dicho DNI. Al ejecutar esta consulta, el ResultSet r se
llenar con trabajadores que tengan ese DNI.

Observe el cdigo que viene a continuacin:

if (!r.first()) {
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

476 Entidad Clientes | By reycito2011


Este if significa: si no puedo colocarme en el primer elemento
del ResultSet r.

Si no es posible colocarse en el primer elemento del resultado de la consulta
ser porque no hay un primer elemento, o dicho de otra forma, porque el
ResultSet est vaco, o dicho de otra forma ms, porque no se encontr a
nadie que tuviera el DNI indicado.

Si esto fuera as, no existe un trabajador con dicho DNI y por tanto no puede
ser borrado. As pues se muestra un mensaje con un JOptionPane indicando
dicha circunstancia.

En caso contrario, existe ese trabajador y por tanto podemos borrarlo. Observa
el contenido del else:

resp=JOptionPane.showConfirmDialog(null,"Confirma el
borrado?",

"Borrar",JOptionPane.YES_NO_OPTION);
if (resp==JOptionPane.YES_OPTION) {

Este trozo de cdigo le pregunta al usuario si quiere borrar realmente al
trabajador. Si la respuesta es s (YES_OPTION) se efectuar el borrado tal
como se indica a continuacin:

consulta="delete from trabajadores where
DNI='"+txtDNIEliminar.getText()+"'";
sentencia.executeUpdate(consulta); //se ejecuta la
eliminacion
MostrarTodos(); //y se muestra la tabla de nuevo


Como puede observar, se construye a travs de una concatenacin, una
consulta de accin SQL del tipo DELETE, que nos permitir borrar el trabajador
con el DNI introducido.

Luego se ejecuta dicha instruccin usando el mtodo executeUpdate del objeto
sentencia (recuerde que usar siempre executeUpdate para ejecutar consultas
de accin: altas, eliminacin y modificacin)

Finalmente se llama de nuevo al mtodo que creamos en la hoja anterior que
muestra todo el contenido de la tabla trabajadores, y de esta forma podremos
comprobar el borrado del trabajador.

En caso de que el usuario no haya confirmado el borrado, el cdigo muestra un
mensaje Borrado cancelado por el usuario.

Por otro lado, todo este cdigo es susceptible de sufrir errores inesperados, por
lo que est rodeado por un try ... catch.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

477 Entidad Clientes | By reycito2011





5. Ejecute el programa y pruebe a eliminar trabajadores de la tabla. Se
recomienda que pruebe a introducir DNIs inexistentes, para ver que
ocurre. Pruebe tambin la confirmacin del borrado: responda a veces
que s y otras veces que no.




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

478 Entidad Clientes | By reycito2011


Introduzca el DNI del trabajador
que quiere borrar y luego pulse
Eliminar.

Al hacerlo el listado se actualizar
y ya no mostrar el trabajador con
dicho DNI ya que habr sido
borrado.

Si el DNI no existiera el borrado no
se producira y mostrara un
mensaje de error.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

479 Entidad Clientes | By reycito2011


CONCLUSIN

Se pueden ejecutar instrucciones SQL del tipo DELETE (borrar registros)
usando el objeto sentencia.

Para este tipo de instrucciones hay que usar el mtodo executeUpdate.

Normalmente, ser necesario construir una cadena de consulta DELETE a
travs de la concatenacin de subcadenas y datos introducidos por el
usuario en cuadros de texto.

Este tipo de instrucciones SQL no devuelven ningn ResultSet, ya que no
extraen datos de las tablas, sino que modifican el contenido de stas.

Para realizar borrados ser necesario habitualmente el comprobar que los
registros a borrar existen en la tabla. Esto se har ejecutando una
consulta SELECT y comprobando si el ResultSet resultante contiene
algn registro, usando el mtodo first.

Tambin se recomienda pedir confirmacin al usuario antes de realizar
borrados en las tablas.

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS


Consultas de Accin. Modificaciones.

Las consultas SQL de accin son:

- INSERT INTO (permiten introducir nuevos registros en las tablas)
- DELETE (permiten eliminar registros de las tablas)
- UPDATE (permiten modificar los registros de las tablas)

Estas consultas SQL se ejecutan desde el programa a travs del mtodo
executeUpdate propio del objeto sentencia.

Estas instrucciones SQL afectan al contenido de la base de datos y no
devuelven ningn resultado. Es decir, no extraen datos, y por tanto no
devuelven un ResultSet.

En las hojas anteriores se ha visto como ejecutar consultas INSERT INTO y
DELETE. En esta hoja guiada veremos como ejecutar consultas de accin de
modificacin: UPDATE.




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

480 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1

PLANTEAMIENTO

Se mejorar el proyecto realizado en la hoja anterior de forma que no solo
permita aadir y borrar trabajadores de la tabla trabajadores de la base de
datos MANEMPSA, sino que tambin permita realizar modificaciones en los
datos de los trabajadores de dicha tabla.


91. Entre en NetBeans. Abre el proyecto llamado GestionTrabajadores que
se program en la hoja anterior.

92. Modifique la ventana principal aadiendo un nuevo panel con los
siguientes componentes:





Nuevo panel
El panel se llamar
panelModificar

El botn es btnBuscar

Los cuadros de texto se
llaman respectivamente:

txtModDNI
txtModNombre
txtModApellidos
txtModSueldo
txtModDia
txtModMes
txtModAnio
txtModMatricula

El botn es btnModificar
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

481 Entidad Clientes | By reycito2011






93. La mejora que se pretende hacer es la siguiente:

a. El usuario introducir en el cuadro de texto txtModDNI el DNI del
trabajador cuyos datos se quieren modificar.

b. Al pulsar el botn Buscar, el resto de cuadros de texto se
rellenarn con los datos del trabajador al que pertenece dicho
DNI. (Si dicho DNI no existiera, se mostrara un mensaje de error)

c. Cuando aparezcan los datos del trabajador en los cuadros de
texto, el usuario podr realizar las modificaciones pertinentes.

d. Al pulsarse el botn Efectuar Modificacin se modificarn los
datos en la tabla.


94. Primero programaremos el botn de bsqueda. Entre en el
actionPerformed de este botn y programe lo siguiente:



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

482 Entidad Clientes | By reycito2011

Estudiemos atentamente el cdigo anterior:




Lo primero que hace el cdigo es construir una consulta de seleccin que
busque a todos los trabajadores que tengan el DNI introducido en el cuadro de
texto txtModDNI.

Ejecuta la consulta y almacena el resultado en un tpico ResultSet. Luego
comprueba a travs del siguiente if si no existe un trabajador con dicho DNI en
el ResultSet:

if (!r.first()) {

En ese caso muestra un mensaje de error indicando que no se ha encontrado
dicho trabajador.

En caso contrario muestra los datos del trabajador encontrado en los cuadros
de texto. Para ello, se extrae del ResultSet cada campo y se coloca en el
cuadro de texto correspondiente. Por ejemplo:

txtModNombre.setText(r.getText(nombre));

Recoge el valor del campo nombre, y lo sita en el cuadro de texto
txtModNombre.

En el caso de la fecha de entrada del trabajador, se extrae la fecha y luego se
extrae de la cadena el da, el mes y el ao, situando cada dato en su cuadro de
texto correspondiente.

cadefe = r.getString("fecha");
caddia=cadefe.substring(8,10);
cadmes=cadefe.substring(5,7);
cadanio=cadefe.substring(0,4);
txtModDia.setText(caddia);
txtModMes.setText(cadmes);
txtModAnio.setText(cadanio);

Recuerda que cuando se extrae una fecha de un ResultSet, su formato es:

ao-mes-dia-hora:minutos

Por ejemplo: 2001-12-23-00:00

As pues, si el DNI introducido pertenece a uno de los trabajadores de la tabla,
sus datos aparecern en los cuadros de texto cuando se pulse el botn Buscar.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

483 Entidad Clientes | By reycito2011

95. Ejecuta el programa y comprueba su funcionamiento. Escribe un DNI en
el cuadro del DNI de bsqueda y pulsa Buscar.




96. Se supone que cuando aparezcan los datos del trabajador en los
cuadros de texto el usuario los modificar segn le interese. Luego, al
pulsar el botn Efectuar Modificacin los nuevos datos sern
actualizados en la tabla.


97. Para hacer esto, entre en el actionPerformed del botn Efectuar
Modificacin y programe lo siguiente:


Se introduce un DNI y
luego se pulsa Buscar.

Si existe un trabajador con
ese DNI, sus datos
aparecern en los cuadros
de texto.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

484 Entidad Clientes | By reycito2011




Se va a analizar este cdigo. Estdielo con detenimiento:

Debe observar que lo primero que se hace en este cdigo es crear una
consulta de actualizacin (UPDATE) a travs de una concatenacin de
cadenas.

Si observa la concatenacin, ver que el resultado es una instruccin SQL de
tipo UPDATE en la que los datos que se actualizan son precisamente los datos
introducidos en los cuadros de texto del panel de modificacin.

Por ejemplo, si estos fueran los valores de los cuadros de texto del panel de
modificacin:

txtModDNI 11.111.111-A
txtModNombre Juan
txtModApellidos Perez
txtModSueldo 1100
txtModDia 4
txtModMes 12
txtModAnio 2001
txtModMatricula 1234-ABC

La instruccin ya construida por concatenacin sera la siguiente:

update trabajadores
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

485 Entidad Clientes | By reycito2011

set nombre=Juan,apellidos=Perez,sueldo=1100,fecha=#12/4/2001#,
matricula=1234-ABC
where dni=11.111.111-A

Esta instruccin SQL de tipo UPDATE incluye una clusula WHERE con una
condicin de forma que solo se modifica aquel trabajador que tenga el DNI
introducido en el cuadro de texto txtModDNI.

Una vez construida la consulta UPDATE, esta se ejecuta usando el objeto
sentencia y luego se muestra el contenido de la tabla trabajadores en el panel a
travs de una llamada al mtodo MostrarTodos.

Todo este cdigo est rodeado de un try...catch para evitar errores
inesperados.


98. Comprueba el funcionamiento del programa ejecutndolo. Debes
introducir un DNI y pulsar el botn Buscar para que se rellenen los
cuadros de texto con los datos del trabajador.

Luego cambia algn dato de los que han aparecido en los cuadros de
texto y pulsa el botn Efectuar Modificacin.

Si observas el panel de texto deber aparecer la lista completa de
trabajadores y en ella podrs observar la modificacin que se ha
realizado en el trabajador correspondiente.






21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

486 Entidad Clientes | By reycito2011








Se introduce un DNI y se le
da a Buscar.

Los cuadros de texto se
rellenan con los datos del
trabajador.

Se realiza la modificacin
que se quiera en los
cuadros de texto.

Finalmente se pulsa
Efectuar Modificacin para
que se realice la
modificacin.

En el panel aparecer la
lista actualizada de los
trabajadores.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

487 Entidad Clientes | By reycito2011


CONCLUSIN

Se pueden ejecutar instrucciones SQL del tipo UPDATE (modificar
registros) usando el objeto sentencia.

Para este tipo de instrucciones hay que usar el mtodo executeUpdate.

Normalmente, ser necesario construir una cadena de consulta UPDATE a
travs de la concatenacin de subcadenas y datos introducidos por el
usuario en cuadros de texto.

Este tipo de instrucciones SQL no devuelven ningn ResultSet, ya que no
extraen datos de las tablas, sino que modifican el contenido de stas.

Es una buena idea dar alguna opcin de bsqueda que permita encontrar
al registro a modificar y que sus datos aparezcan en varios cuadros de
texto, de forma que el usuario tenga ms facilidad a la hora de realizar los
datos.

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS


Tablas (JTable)

Como se ha estudiado en las hojas guiadas anteriores, se pueden extraer
datos de la base de datos a travs de consultas SQL de tipo SELECT. Los
datos extrados se almacenan en objetos de tipo ResultSet.

Luego, solo hay que analizar el contenido del objeto ResultSet para extraer los
datos que contiene y trabajar con ellos.

En las hojas anteriores hemos extrado los datos del ResultSet y los hemos
presentado en un JOptionPane o en un JTextPane. Sin embargo, una mejor
opcin para presentar el contenido de un ResultSet es usar objetos del tipo
JTable, ya que estos objetos tienen forma de tabla.

En esta hoja guiada se estudiarn los objetos JTable (sin tener en cuenta a las
bases de datos) Una vez que entendamos el funcionamiento de los objetos
JTable, los usaremos en posteriores hojas guiadas para presentar dentro de
ellos el contenido de consultas SQL.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

488 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1



1. Crear un nuevo proyecto en NetBeans. En la ventana principal de dicho
proyecto agregue un objeto JTable:



El nombre del objeto JTable ser simplemente tabla. Debes tener en cuenta
que los objetos JTable se aaden siempre dentro de un panel de
desplazamiento JScrollPane:




2. El objeto tabla que se acaba de introducir tiene por defecto cuatro
columnas con los nombres Ttulo 1, Ttulo 2, Ttulo 3 y Ttulo 4, y
contiene cuatro filas vacas. Puede ejecutar el programa para ver el
funcionamiento del objeto tabla. Pruebe a introducir algn dato en las
celdas de la tabla...
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

489 Entidad Clientes | By reycito2011




3. Aprenderemos ahora a configurar determinados aspectos de la tabla que
vamos a usar. Para ello aada al constructor una llamada a un mtodo
PrepararTabla que programaremos a continuacin.




4. Programa ahora el mtodo PrepararTabla de la siguiente forma:



Haz doble clic para
introducir datos en
las celdas...
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

490 Entidad Clientes | By reycito2011


La primera lnea del cdigo define un array de String con los ttulos de la tabla,
es decir, con las columnas de la tabla.

A continuacin, se construye un objeto del tipo DefaultTableModel, o dicho de
otra manera, un modelo de tabla. El objeto m est declarado como variable
global.

MODELOS (recordatorio)

Hay que recordar que existen objetos en java que contienen un objeto modelo,
encargado de contener los datos del objeto. Un ejemplo de ello son las listas y
los combos (cuadros desplegables)

Para definir los datos contenidos en el objeto, primero haba que definir el
modelo y luego asignar el modelo al objeto.

El caso de las tablas es igual. Para introducir datos en la tabla primero hay que
configurar su objeto modelo (que ser de la clase DefaultTableModel) y luego
asignrselo a la tabla.

En el cdigo, se define como global un objeto llamado m, de tipo
DefaultTablaModel. Luego, al construir el objeto se deben indicar dos
parmetros: null y el vector de ttulos de columnas:

DefaultTableModel m = new DefaultTableModel(null,titulos);

El valor null hace que la tabla aparezca vaca en un principio, mientras que el
vector ttulos define las columnas que tendr la tabla.

Una vez construido de esta forma el objeto modelo m, este se asigna al objeto
tabla:

tabla.setModel(m);

La razn por la que se ha declarado el objeto modelo m como global es que
ser usado en otros mtodos del programa.


5. Ejecuta el programa y observa el resultado:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

491 Entidad Clientes | By reycito2011



Como puedes observar, se ha creado una tabla vaca con cinco columnas
correspondientes al vector de ttulos.

6. Vamos a aadir un botn a la ventana con el texto Nueva Fila, al cual
llamaremos btnNueva:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

492 Entidad Clientes | By reycito2011


7. Dentro del botn btnNueva programa lo siguiente




Este cdigo aadir una nueva fila en blanco a la tabla. Estudiemos cada lnea:

La primera lnea recoge el modelo de la tabla a travs del mtodo getModel. El
modelo es recogido en la variable global m que creamos anteriormente.
Observa como es necesario realizar un cast (en rojo) a la hora de asignar el
modelo a la variable m:

m = (DefaultTableModel) tabla.getModel();

El resultado de esta instruccin es que volvemos a tener disponible el modelo
de la tabla en la variable m, y por tanto, podemos manipular los datos
contenidos en la tabla a travs de esta variable.

Por ejemplo, se usar el modelo m para aadir una fila en blanco en la tabla.
Para ello, basta con crear un vector de cadenas de 5 elementos (ya que hay
cinco columnas):

String filavacia[]=new String[5];

Y luego, a travs del mtodo addRow (aadir fila), aadir una fila
correspondiente a los valores del vector:

m.addRow(filavacia);

Debido a que el vector est vaco, la fila que se aade est vaca tambin. Si el
vector contuviera algn dato, estos datos apareceran en la fila que se aade
(esto se ver a continuacin)


7. Ejecuta el programa y pulsa varias veces el botn Nueva Fila.
Observars como se van aadiendo filas vacas a la tabla.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

493 Entidad Clientes | By reycito2011




8. Para entender bien el funcionamiento de la insercin de filas en la tabla,
aada otro botn llamado btnNuevoElemento con el texto Nuevo
Elemento:




9. En este botn programe lo siguiente:



Puedes observar que el cdigo es parecido al anterior, solo que en este caso
se aade una fila correspondiente a un vector relleno de datos. Esto quiere
decir que cuando se aada esta fila al modelo aparecer con los datos del
vector.

Pulsa el botn y se
aadirn filas en
blanco...
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

494 Entidad Clientes | By reycito2011






10. Ejecuta el programa y comprueba su funcionamiento, observars que al
pulsar el nuevo botn aparecen filas rellenas.




11. Sigamos experimentando con la tabla. Ahora aadiremos un botn
btnEliminar con el texto Eliminar Fila:



12. Este botn eliminar la fila que est seleccionada en ese momento. Para
ello programe en este botn el siguiente cdigo:

Cuando se pulsa el
botn Nuevo Elemento
aparecen filas ya
rellenas.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

495 Entidad Clientes | By reycito2011





Estudiemos este cdigo. En primer lugar usamos un mtodo que poseen los
objetos JTable llamado getSelectedRow que nos dice el nmero de la fila que
est seleccionada en este momento.

Si no hubiera ninguna fila seleccionada, el mtodo getSelectedRow devuelve el
valor 1. Esto lo usamos en el if que viene a continuacin para mostrar un
mensaje de error diciendo que es necesario seleccionar la fila que se va a
borrar.

En el caso de que haya alguna fila seleccionada (es decir, que no se haya
devuelto el valor 1) entonces efectuamos el borrado.

Para borrar recogemos el modelo de la tabla y usamos un mtodo llamado
removeRow para borrar la fila seleccionada (la cual se pasa como parmetro)


13. Ejecuta el programa y aade varias filas. Luego prueba a seleccionar
alguna y pulsar el botn Eliminar. Observa tambin lo que sucede
cuando intentas eliminar una fila cuando no hay ninguna seleccionada.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

496 Entidad Clientes | By reycito2011




Al pulsar eliminar
fila se eliminar la
fila que est
seleccionada de la
tabla.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

497 Entidad Clientes | By reycito2011

14. Sigamos aprendiendo nuevas cualidades de las tablas. Aada lo
siguiente a su ventana:







15. Lo que se pretende es lo siguiente: El usuario introducir un valor en la
fila y la columna, por ejemplo: Fila 3, columna 4, y al pulsarse el botn
Ver Valor aparecer en la etiqueta Valor el contenido de la casilla
situada en la posicin 3, 4 (fila 3 columna 4)

As pues programe lo siguiente en el botn Ver Valor:




Estudiemos el cdigo.

Primero, se recogen los valores introducidos en los cuadros de texto de la fila y
columna y se convierten a enteros:

fila = Integer.parseInt(txtFila.getText());
col = Integer.parseInt(txtColumna.getText());

txtFila txtColumna btnVerValor etiValor
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

498 Entidad Clientes | By reycito2011

Luego, se extrae el modelo de la tabla y se usa un mtodo llamado getValueAt.
Este mtodo permite extraer el valor de una casilla de la tabla, indicando la fila
y columna de esa celda. El resultado lo hemos almacenado en una variable
valor de tipo cadena. Es necesario realizar un cast (en rojo):

valor = (String) m.getValueAt(fila,col);

Finalmente, una vez extrado el valor de la celda de la posicin fila, col este se
coloca en la etiqueta etiValor.

Este cdigo es susceptible de dar error, por ejemplo si el usuario introduce
unos valores de fila y columna incorrectos. Por eso ha sido incluido dentro de
un try...catch.


16. Ejecuta el programa y aade varias filas. Introduce algunos valores en
las filas. Luego prueba a introducir un valor de fila y columna y pulsa el
botn Ver Valor:




17. Sigamos experimentando. Aade lo siguiente a la ventana:

Se introdujo la
posicin: 2, 1.

Por tanto se quiere ver
el valor de la casilla 2,1
(tanto las filas como las
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

499 Entidad Clientes | By reycito2011


btnIntroducir txtNuevoValor
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

500 Entidad Clientes | By reycito2011

18. Se pretende lo siguiente. El usuario introducir un valor de fila y de
columna en los cuadros de texto correspondientes. Luego, el usuario
introducir un valor en el cuadro de texto txtNuevoValor. Finalmente
pulsar el botn btnIntroducir.

El resultado ser que se introduce el valor escrito en la posicin de la
tabla indicada por la fila y columna introducida.

Para hacer esto, programe lo siguiente dentro del botn btnIntroducir:




Estudiemos el cdigo detenidamente.

Lo primero que se hace es extraer de los cuadros de texto la fila, columna y el
valor. La fila y columna son convertidas a enteros.

fila = Integer.parseInt(txtFila.getText());
col = Integer.parseInt(txtColumna.getText());
valor = txtNuevoValor.getText();

Luego se extrae (como siempre) el modelo de la tabla y se usa un mtodo suyo
llamado setValueAt que permite introducir un valor en una celda de la tabla.
Concretamente, se introduce el valor escrito por el usuario en la celda con fila y
columna indicadas:

m=(DefaultTableModel) tabla.getModel();
m.setValueAt(valor,fila,col);

Este cdigo es susceptible de tener errores de ejecucin (por ejemplo que el
usuario introduzca un valor equivocado en la fila y columna) por eso est
rodeado de un try...catch.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

501 Entidad Clientes | By reycito2011


19. Ejecuta el programa. Aade varias filas en blanco. Luego introduce un
valor para la fila y la columna y escribe un valor que quieras introducir. Al
pulsar el botn Introducir dicho valor aparecer en la celda
correspondiente:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

502 Entidad Clientes | By reycito2011




Introduce una fila y
columna.

Luego introduce un dato.

Y al pulsar el botn
Introducir el resultado es
que el dato se introduce
en la celda indicada por la
fila y columna.

Recuerda que las filas y
columnas empiezan a
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

503 Entidad Clientes | By reycito2011


CONCLUSIN

Existe una clase llamada J Table que permite crear objetos con forma de
tabla.

Estos objetos son ideales para mostrar el contenido de las tablas de una
base de datos, aunque pueden ser usados de forma independiente
tambin para mostrar cualquier tipo de datos.

Los objetos J Table contienen un modelo de datos de tipo
DefaultTableModel.

Cada vez que se quiera trabajar con una tabla ser necesario construir su
modelo y asignrselo a la tabla.

Cada vez que se quiera modificar de alguna forma los datos de una tabla,
ser necesario acceder a su modelo y trabajar con l.

A travs del modelo de una tabla podemos aadir nuevas filas a la tabla,
eliminar filas, extraer datos de las celdas de la tabla o aadir datos a las
celdas de la tabla.

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS


Representacin de Tablas en un JTable

En la hoja guiada anterior vimos que existe un tipo de objeto llamado JTable
que nos permite introducir tablas en nuestras aplicaciones.

Estos objetos son ideales para mostrar el contenido de una tabla de la base de
datos o del resultado de una consulta.

Recuerda que para extraer datos de la base de datos realizamos una consulta
SQL de tipo SELECT cuyo resultado se almacena en un objeto ResultSet.

Un ResultSet bsicamente es una tabla almacenada en memoria (y por tanto
no visible) Sin embargo, en esta hoja guiada veremos como trasladar el
contenido de un ResultSet a un JTable para que el usuario pueda visualizar los
datos de forma cmoda.

El proceso ser bsicamente el siguiente:






Base de Datos
ResultSet JTable
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

504 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1



20. Crear un proyecto java y prepararlo para que pueda acceder a la base
de datos MANEMPSA.MDB:

a. Crear una subcarpeta Base y copiar dentro de ella el fichero de
base de datos MANEMPSA.MDB

b. Declarar los dos objetos globales: conexin y sentencia.

c. Programar el mtodo PrepararBaseDatos de forma que el
programa acceda a la base de datos y se construyan los objetos
conexin y sentencia.

d. Programar el evento windowClosing de la ventana principal de
forma que se cierre la conexin.


21. Una vez hecho esto, aade a la ventana principal un objeto JTable y
llmalo simplemente tabla.

22. Aade en la parte inferior un botn llamado btnTrabajadores. La ventana
principal quedar as:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

505 Entidad Clientes | By reycito2011

23. Agregaremos al proyecto un objeto modelo de tabla
(DefaultTableModel) llamado m que sea global. Tambin aadiremos en
el constructor una llamada a un mtodo PrepararTabla y programaremos
dicho mtodo de la siguiente forma:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

506 Entidad Clientes | By reycito2011




Si observas el cdigo, vers que en el mtodo PrepararTabla se crea un
vector de cadenas con cuatro elementos pero que no contiene nada.

Luego se crea el modelo de tabla a partir de este vector vaco.

Y se asigna finalmente a la tabla.

El resultado de esto es que la tabla aparecer vaca y sin ttulos (En
realidad, como ttulos aparecen letras: A, B, C, etc)


24. Ejecuta el programa para ver su aspecto de momento.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

507 Entidad Clientes | By reycito2011




25. Bien, ahora programaremos el botn btnTrabajadores de forma que al
pulsarlo se muestre el contenido de la tabla Trabajadores. Programe lo
siguiente:



Estudiemos el cdigo detenidamente.

Lo primero que se hace es extraer el contenido de la tabla Trabajadores de la
base de datos, ejecutando una consulta SQL usando el objeto sentencia. El
resultado de dicha consulta se almacenar en un objeto ResultSet llamado r.
Debido a que
hemos asignado un
vector de ttulos sin
contenido, las
columnas tienen
como ttulo letras.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

508 Entidad Clientes | By reycito2011


ResultSet r = sentencia.executeQuery("select * from
trabajadores");

A continuacin, se extraer informacin del ResultSet y se introducir en la
tabla. Lo primero que se hace es crear el modelo de la tabla definiendo la
cabecera. Observa el cdigo.

String titulos[] =
{"DNI","Nombre","Apellidos","Sueldo","Fecha","Matrcula"};
m=new DefaultTableModel(null,titulos);
tabla.setModel(m);

Como ves, lo que hacemos es definir un vector de cadenas con los ttulos
correspondientes a los campos de la tabla, y luego usamos este vector para
crear el modelo de la tabla.

Finalmente asignamos el modelo creado a la tabla.


26. Ejecute el programa de momento. Observe como al pulsar el botn
Trabajadores la cabecera de la tabla pasa a contener los campos
indicados en el vector ttulos.




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

509 Entidad Clientes | By reycito2011

27. Ahora ya solo nos queda recoger todo el contenido del ResultSet y
mostrarlo en la tabla. Para ello, modifique el cdigo del actionPerformed
del botn Trabajadores para que quede como sigue:




Si estudiamos el cdigo, veremos que se extrae la tabla trabajadores entera
introducindola en un ResultSet llamado r, a travs de una instruccin SELECT
de SQL.

Luego construimos un modelo de tabla (DefaultTableModel) llamado m usando
un vector de ttulos, que se corresponde a los campos de la tabla trabajadores.

Una vez hecho esto, creamos un vector de seis elementos, correspondiente a
los seis datos que contiene cada fila, y empezamos a recorrer el ResultSet
usando el tpico:

while (r.next()) {

En cada vuelta del bucle tomamos los valores de la fila del ResultSet y los
almacenamos en el vector (en la posicin correspondiente)

Luego se aade el vector que se ha construido al modelo de la tabla.

As pues, en cada vuelta se aadir un registro ms al modelo m. Estos
registros son extrados del ResultSet.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

510 Entidad Clientes | By reycito2011

Cuando el bucle ha terminado, el modelo de la tabla contiene exactamente lo
mismo que el ResultSet. Es decir, contiene la tabla trabajadores, ya que este
fue el resultado de la consulta SQL ejecutada.

Ya solo tenemos que asignar el modelo de la tabla al JTable correspondiente,
es decir, a la tabla, con lo que esta visualizar los datos del modelo.

Todo este proceso se rodea con un try...catch para evitar errores inesperados.

28. Para entender el cdigo anterior aqu tienes un pequeo grfico
explicativo:


Base de Datos ResultSet Vector Modelo de Tabla JTable


i. De la base de datos extraemos datos a un ResultSet.
(Esto se hace ejecutando una consulta SQL de tipo
SELECT a travs del objeto sentencia)

ii. Del ResultSet extraemos los datos a un modelo de tabla.
(Esto se hace recorriendo el ResultSet y almacenando
cada registro en un vector)

iii. Almacenamiento del vector en el modelo de tabla. (Cada
vector extraido del ResultSet se inserta como fila en el
modelo de tabla)

iv. Se asigna el modelo de tabla al objeto JTable. (Al hacer
esto el objeto JTable muestra el contenido del modelo)


29. Ejecute el programa y observe el resultado al pulsar el botn
Trabajadores. Como ve, el objeto tabla muestra entonces el contenido
de la tabla Trabajadores.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

511 Entidad Clientes | By reycito2011


30. Si observa la tabla ver que la fecha aparece en el formato estndar de
almacenamiento:

Ao-mes-dia hora:min:seg

Y que los sueldos aparecen con punto decimal.

Mejore estos detalles haciendo los siguientes cambios en el botn
Trabajadores:
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

512 Entidad Clientes | By reycito2011



Como se puede observar, antes de almacenar los sueldos en el modelo
de la tabla se reemplazan el punto decimal por una coma.

Y en el caso de la fecha, se extrae de la cadena el ao, mes y da y se
concatenan en un formato ms habitual: dia/mes/ao.

31. Ejecuta ahora el programa y observa como se muestran las fechas y los
sueldos:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

513 Entidad Clientes | By reycito2011



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

514 Entidad Clientes | By reycito2011


CONCLUSIN

El proceso a seguir para mostrar una tabla de una base de datos en un
JTable es el siguiente:

- Realizar una consulta SELECT para extraer los datos de la tabla de la
base de datos. El resultado se almacenar en un ResultSet.

- Recorrer el ResultSet almacenando cada una de sus filas en un vector
y luego traspasando este vector a un modelo de tabla.

- Una vez que el modelo de tabla est relleno, asignar el modelo a un
JTable.


EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS


Gestin de una tabla

En la hoja guiada anterior se vio como mostrar el contenido de una tabla de la
base de datos en un JTable de la aplicacin java.

Se puede aprovechar esta idea de forma que todas las operaciones que
realicemos sobre una tabla se vean inmediatamente reflejadas en el JTable de
la aplicacin java.

Por ejemplo, si eliminamos un registro sera interesante que automticamente
viramos la tabla actualizada en el JTable.

En esta hoja guiada se mejorar la aplicacin de la hoja guiada anterior,
dotndola de opciones para la gestin de la tabla Trabajadores.







21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

515 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1


1. Abrir la aplicacin de la hoja guiada anterior.

2. El primer objetivo ser hacer que al ejecutar el programa aparezca
automticamente el contenido de la tabla Trabajadores en el JTable.
Para ello, realice los siguientes cambios en el cdigo del programa:





3. Crea el mtodo MostrarTrabajadores:




4. Copia en l el cdigo del actionPerformed del botn btnTrabajadores:

Aade una llamada a un mtodo
MostrarTrabajadores, en el
constructor del programa.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

516 Entidad Clientes | By reycito2011


5. Lo que produce esta modificacin del cdigo es que al ejecutarse el
programa se ejecute el mtodo MostrarTrabajadores con lo que se
ejecutar el cdigo que hicimos en la hoja anterior para mostrar los
datos de la tabla trabajadores en el JTable.

Ejecuta el programa y comprueba el resultado.


6. Puesto que la tabla trabajadores se muestra al empezar el programa, la
existencia del botn Trabajadores no tiene sentido, as pues elimina el
botn Trabajadores de la ventana.


7. Aade ahora en la parte inferior un panel llamado panelAcciones y un
botn Eliminar Trabajador llamado btnEliminar:



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

517 Entidad Clientes | By reycito2011


8. Se pretende que el usuario seleccione uno de los trabajadores de la
tabla y al pulsar el botn Eliminar dicho trabajador se elimine de la base
de datos. Esta eliminacin por supuesto se ver reflejada en el JTable.

Para ello, programe en el botn Eliminar lo siguiente:



Estudiemos con detenimiento el cdigo programado.

Lo primero que se hace es recoger la fila seleccionada de la tabla usando el
mtodo getSelectedRow. Si el valor devuelto es 1 entonces es que no hay
ninguna fila seleccionada. El programa avisa de esta circunstancia.

Si se seleccion a un trabajador, entonces podemos borrar. Pero antes, es
interesante pedir confirmacin. Esto es lo que se hace con el
JOptionPane.showConfirmDialog.

Si el usuario acepta la eliminacin del trabajador, entonces la llevamos a cabo.
Observa el proceso:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

518 Entidad Clientes | By reycito2011

- Extraemos del modelo del JTable el dni del trabajador seleccionado (este
dni se encuentra en la fila seleccionada filsel- columna 0 la primera
columna-):

m = (DefaultTableModel) tabla.getModel();
dni = (String) m.getValueAt(filsel,0);

- Ahora se construir una instruccin de accin SQL del tipo DELETE para
que se elimine el trabajador con el dni extrado. Esto se hace concatenando
y ejecutando la instruccin SQL a travs del objeto sentencia:

sentencia.executeUpdate("delete from trabajadores where
dni='"+dni+"'");

- Y finalmente se llama al procedimiento MostrarTabla para que se extraiga
de la base de datos y muestre de nuevo la tabla trabajadores. Esto
actualizar el JTable, y se podr ver que el trabajador ha sido eliminado.

- Todo esto est dentro de un try...catch para capturar errores inesperados.



9. Ejecuta el programa y prueba a eliminar algn trabajador. Observa como
el JTable se actualiza cuando se produce la eliminacin.


10. Ahora aade otro botn llamado btnNuevo:




11. Cuando se pulse el botn Nuevo se pretende que aparezca un
formulario donde se puedan introducir los datos de un nuevo trabajador.
Esto se conseguir aadiendo un cuadro de dilogo a nuestro proyecto.
Para ello, agrega un JDialog al proyecto. Este dilogo se llamar
dialogoNuevo.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

519 Entidad Clientes | By reycito2011




12. Haga doble clic en el Inspector sobre el dialogoNuevo para disearlo.
Debe quedar como sigue, con los nombres que se indican a
continuacin:




13. La idea es la siguiente. Cuando el usuario pulse el botn Nuevo,
aparecer este cuadro de dilogo. El usuario introducir los datos del
nuevo trabajador y pulsar Aceptar, y entonces estos datos se
introducirn en la tabla trabajadores.

Si el usuario pulsa Cancelar, entonces no se har nada.

El JTable se actualizar para mostrar el resultado de la insercin del
nuevo trabajador.

As pues, entre en el actionPerformed del botn btnNuevo y programe lo
siguiente:

txtNuevoDni

txtNuevoNombre

txtNuevoApellidos

txtNuevoSueldo

txtNuevoDia txtNuevoMes txtNuevoAnio

txtNuevoMatricula


btnNuevoAceptar

btnNuevoCancelar
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

520 Entidad Clientes | By reycito2011



Este cdigo empieza asignando un tamao al cuadro de dilogo
dialogoNuevo.

Luego, se define el dialogoNuevo como Modal. Esto significa que hasta
que no se termine de trabajar con este cuadro de dilogo no se podr
continuar usando el programa principal.

Luego se muestra dicho cuadro de dilogo.

Y finalmente se actualiza el JTable por si se hubiera introducido un
nuevo trabajador.





14. Ahora programemos los botones del cuadro de dilogo dialogoNuevo.
Empecemos por el botn Cancelar:





Como ves, tan sencillo como descargar el cuadro de dilogo. El botn Cancelar
debe limitarse a quitar de la pantalla el cuadro de dilogo dialogoNuevo.


15. Y finalmente se programar el botn Aceptar del cuadro de dilogo.
Recuerda que este botn es el que introduce en la base de datos a un
nuevo trabajador. Programa dentro de este botn lo siguiente:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

521 Entidad Clientes | By reycito2011



Vamos a analizar detenidamente este cdigo.

Lo primero que puedes observar es un conjunto de lneas que copian el
contenido de los cuadros de texto en variables de cadena. Al hacer esto,
cambiamos la coma decimal por punto decimal en el caso del sueldo y
configuramos la fecha en el formato que entiende SQL: mes/dia/ao.

Luego, con estas variables, se construye por concatenacin una instruccin
SQL de tipo INSERT que permita introducir los datos del nuevo trabajador en la
tabla trabajadores.

Se ejecuta dicha instruccin SQL. Y se cierra el cuadro de dilogo.

Por supuesto, es necesario un try...catch para evitar problemas inesperados.

16. Ejecuta el programa y prueba a introducir nuevos trabajadores.


17. Nuestro programa ya puede hacer altas y bajas. Solo queda que pueda
realizar modificaciones. Para ello aade un nuevo botn a la ventana,
llamado btnModificar:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

522 Entidad Clientes | By reycito2011




18. Se pretende que el usuario seleccione en la tabla el trabajador cuyos
datos quiere modificar, y luego pulse este botn para efectuar la
modificacin.

Al pulsar este botn debe aparecer un cuadro de dilogo donde el
usuario pueda cambiar fcilmente los datos.

Ese cuadro de dilogo ser muy parecido al que hemos hecho antes, as
que bsicamente solo tendrs que hacer una copia de dicho cuadro de
dilogo y modificarlo un poco. A continuacin se explica como hacerlo.


19. Haz clic con el derecho sobre el cuadro de dilogo dialogoNuevo y
activa Copiar :







20. Luego activa Pegar sobre Otros Componentes:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

523 Entidad Clientes | By reycito2011



21. Aparecer un nuevo cuadro de dilogo que es una copia del anterior.
Este cuadro tendr como nombre dialogoNuevo1.




22. Sin embargo, le cambiaremos el nombre para que sea ms acorde con
su funcin. Le llamaremos dialogoModificar. Cmbiale el nombre:




23. Vamos a modificar un poco el diseo del dialogoModificar. Haz doble clic
sobre l y realiza las siguientes modificaciones en el diseo:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

524 Entidad Clientes | By reycito2011




24. Empezaremos programando el botn Modificar. Al pulsar este botn se
debe mostrar el cuadro de dilogo anterior relleno con los datos del
trabajador que se quiere modificar. Se supone que el usuario ha
seleccionado a este trabajador en la tabla anteriormente.

Entra en el actionPerformed del botn Modificar y programa lo siguiente:

Cambia el ttulo. Ahora es Modificar
Trabajador

Los nombres para los cuadros de texto y
botones sern:

txtModDni (Desactiva su propiedad editable)

txtModNombre

txtModApellidos

txtModSueldo

txtModDia txtModMes txtModAnio

txtModMatricula
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

525 Entidad Clientes | By reycito2011



Estudiemos el cdigo.

Primero se comprueba el nmero de la fila seleccionada. Si no hubiera ninguna
se muestra un mensaje de error, ya que es necesario modificar la fila del
trabajador que se quiere modificar.

En el caso de que haya una fila seleccionada, se extraen los datos del modelo
del JTable y se almacenan en varias variables de cadena.

Una vez hecho esto, esas mismas variables se almacenan en los cuadros de
texto del cuadro de dilogo dialogoModificar.

Y finalmente se prepara el cuadro de dilogo dialogoModificar y se muestra en
la pantalla. Una vez realizada la modificacin (no programada an) se
muestran los trabajadores en la tabla llamando al mtodo MostrarTrabajadores.


25. Puedes comprobar el funcionamiento del programa de momento. Prueba
a seleccionar una fila de la tabla y al pulsar el botn Modificar.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

526 Entidad Clientes | By reycito2011





Selecciona...

Y luego pulsa
modificar.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

527 Entidad Clientes | By reycito2011




26. Lo bueno que tiene el rellenar el cuadro de dilogo dialogoModificar con
los datos del trabajador que se quiere modificar es que no tenemos que
escribir todos los datos, y solo modificar el campo que nos interese.

El usuario realizar los cambios en los cuadros de textos ya rellenos y
luego pulsar el botn Aceptar para que se produzca la modificacin.

Si se pulsa Cancelar no sucede nada. Simplemente se cerrar el cuadro
de dilogo.


27. Se empezar programando el botn Cancelar. Este botn debe limitarse
a cerrar el cuadro de dilogo dialogoModificar:




28. Ahora nos centraremos en el botn Aceptar. Este botn debe realizar la
modificacin, introduciendo todos los datos de los cuadros de texto en la
tabla trabajadores.
El resultado es que
aparece el cuadro de
dilogo
dialogoModificar ya
relleno con los datos
del trabajador que se
seleccion.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

528 Entidad Clientes | By reycito2011


El cdigo siguiente tomar como referencia el DNI del trabajador que se
est modificando. Es importante que este DNI no cambie, ya que
entonces estaramos modificando los datos de otro trabajador.

Esta es la razn por la que el cuadro de texto txtModDni se ha
configurado como no editable, para evitar que el usuario pueda
cambiarlo accidentalente.

Programa el siguiente cdigo en el botn Aceptar:



Estudiemos el cdigo.

Lo primero que se hace es recoger en variables los datos introducidos en
los cuadros de texto.

Luego, con estas variables, se construye una instruccin SQL del tipo
UPDATE que permite modificar los datos del trabajador con el dni indicado
en el cuadro de dilogo.

Finalmente se cierra el cuadro de dilogo.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

529 Entidad Clientes | By reycito2011

Todo este cdigo es susceptible de sufrir fallos por lo que est rodeado de
un try...catch.


29. Ejecuta el programa y comprueba el funcionamiento de la actualizacin
de trabajadores. Prueba a realizar varias actualizaciones. Observa como
el JTable se actualiza con las nuevas modificaciones realizadas.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

530 Entidad Clientes | By reycito2011


CONCLUSIN

La ms simple de las aplicaciones de base de datos debe ser capaz de
realizar las siguientes operaciones sobre una tabla:

- Altas
- Bajas
- Modificaciones

Es muy interesante que la aplicacin muestre en pantalla continuamente
un JTable con el contenido de la tabla de la base de datos sobre la que se
est trabajando.

El JTable nos permite visualizar los datos de la tabla y seleccionar
rpidamente el registro que queramos manipular.

Para la insercin de nuevos registros en la tabla se recomienda la
creacin de un cuadro de dilogo que muestre un formulario donde el
usuario pueda introducir los datos del nuevo registro cmodamente.

Para la modificacin de un registro, se recomienda la creacin de otro
cuadro de dilogo que muestre los datos del registro que se quiere
modificar.

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS


Filtrados sobre una tabla

En la hoja guiada anterior se realiz una pequea aplicacin de base de datos
que permita realizar altas, bajas y modificaciones sobre la tabla trabajadores
de la base de datos MANEMPSA.

En todo momento se mostraba en un JTable el listado de trabajadores de la
empresa.

La eliminacin y modificacin de un trabajador se poda realizar simplemente
haciendo clic sobre la fila del trabajador correspondiente en el JTable y luego
activando el botn Eliminar o Modificar.

Sin embargo, en el momento en que tengamos una gran cantidad de
trabajadores almacenados en la tabla, puede resultar un poco complicado
encontrar al trabajador en concreto que se quiere eliminar o modificar.

Aparte, puede ser necesario a veces ver solo determinados registros de la tabla
y no toda la tabla entera.

Se hace necesario pues aadir al programa ciertas opciones de filtrado que nos
permitan visualizar en el JTable solo aquellos registros que ms nos interesen.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

531 Entidad Clientes | By reycito2011


En esta hoja guiada se mejorar el programa de la hoja anterior de forma que
permita al usuario ciertas opciones de filtrado.







21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

532 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1


30. Abrir la aplicacin de la hoja guiada anterior.

31. Primero debes aadir un botn btnFiltar a la ventana:



32. Al pulsar este botn aparecer un cuadro de dilogo que contenga
opciones de filtrado, de forma que el usuario pueda decidir qu
trabajadores quiere ver.

Por lo tanto, tendr que aadir un nuevo cuadro de dilogo (JDialog) y
asgnele el nombre dialogoFiltrar.



33. Haz doble clic sobre este dilogo y diselo de la siguiente forma:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

533 Entidad Clientes | By reycito2011



NOTA: Los dos combos del cuadro de dilogo deben contener los
siguientes elementos:

= > < >= <= <>

Es decir, cuando se desplieguen aparecer esto:


txtFiltrarDni

txtFiltrarNombre

txtFiltrarApellidos

comboSueldo

txtFiltrarSueldo

comboFecha

txtFiltrarDia txtFiltrarMes txtFiltrarAnio

txtFiltrarMatricula

btnFiltrarAceptar

btnFiltrarVerTodos

btnFiltrarCancelar

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

534 Entidad Clientes | By reycito2011



34. La idea es la siguiente. Cuando el usuario pulse el botn Filtrar, se
mostrar este cuadro de dilogo. Entonces el usuario introducir las
condiciones de bsqueda y pulsar Aceptar, y entonces se visualizarn
en el JTable aquellos registros que cumplan la condicin.

Si el usuario pulsa el botn Ver Todos, entonces se mostrarn en el
JTable todos los trabajadores.

Si el usuario pulsa el botn Cancelar, entonces el cuadro de dilogo de
filtrado se cierra sin ms.


35. Empezaremos programando el botn Filtrar de la ventana principal.
Introduzca en l el siguiente cdigo:



Lo nico que hace este cdigo es asignar un tamao al cuadro de
dilogo, configurarlo como modal, y finalmente presentarlo en pantalla.


36. Ejecute el programa si quiere ver el funcionamiento de este botn.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

535 Entidad Clientes | By reycito2011



37. Programemos ahora el botn Cancelar del cuadro de dilogo de filtrado.
La programacin de este botn es muy sencilla:



Como puede ver consiste simplemente en cerrar el cuadro de dilogo de
filtrado.


38. Se programar ahora el botn Aceptar, pero antes, es necesario
entender como funcionar el cuadro de dilogo de filtrado.

El usuario introducir los datos que quiere buscar. Ten en cuenta que no
tiene por qu rellenar todas las casillas. Adems, puede hacer uso de los
combos asignados a los campos sueldo y fecha. Por ejemplo,
supongamos que el usuario introdujera los siguientes datos:

Se pulsa el botn
Filtrar y aparece el
cuadro de dilogo de
filtrado.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

536 Entidad Clientes | By reycito2011



Si en este momento el usuario pulsara el botn Aceptar, se tendran que
mostrar aquellos trabajadores que cumplan todas las siguientes condiciones:
que tengan de nombre J uan, que ganen ms de 2000 euros de sueldo y
que conduzcan un coche cuya matricula contenga la cadena CA.

Las casillas que estn vacas no se tendrn en cuenta a la hora de hacer el
filtrado.

Si el usuario introduce una cadena en un campo de tipo texto, se buscar a
todos aquellos trabajadores que contengan dicha cadena. Por ejemplo, si
introduzco Juan en el nombre, el programa buscar a los trabajadores cuyo
nombre contenga la palabra Juan. De esta manera la bsqueda ser mucho
ms cmoda, al no tener que introducir el texto completo, y producir ms
resultados (se encontrarn a los que se llamen Juan, Juan Antonio,Juana,
etc.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

537 Entidad Clientes | By reycito2011

39. El botn Aceptar tendr que construir una consulta SELECT que incluya
estas condiciones, y luego ejecutarla. Finalmente tendr que mostrar el
resultado de la consulta en el JTable.

El cdigo de este botn ser largo, as que veamos poco a poco como
programarlo. Empiece programando lo siguiente dentro del botn
Aceptar:



Como puede ver, empezamos recogiendo el contenido de los cuadros de texto en
distintas variables. Tambin recogemos los valores seleccionados en los combos del
sueldo y fecha.

En el caso de la fecha, recogemos de los cuadros de texto el da, mes y ao y los
concatenamos para formar una fecha que Access pueda aceptar: mes/dia/ao.

En el caso del sueldo cambiamos la coma decimal (ya que suponemos que el usuario
introducir el valor en formato espaol) por el punto, para que no haya problemas a
la hora de ejecutar la consulta SQL.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

538 Entidad Clientes | By reycito2011

40. Siga programando en el botn Aceptar de la siguiente forma:


........... cdigo anterior...........




Es necesario estudiar muy detenidamente el cdigo que tenemos programado
hasta ahora antes de continuar.

Se han aadido dos variables:

- La variable sql es una variable de cadena que contendr la instruccin
SELECT que efectuar el filtrado (la consulta)

- La variable ncond (nmero de condiciones) es una variable numrica
que va contando cuantas condiciones hay. Ten en cuenta que habr una
condicin cada vez que un cuadro de texto est relleno con algn dato.

Esta variable es muy importante, ya que nos permite saber si tenemos
que concatenar una condicin con where o con and. Ten en cuenta
que la primera condicin que se aade vendr precedida por where,
pero las dems estarn precedidas por and.

La primera condicin que se aade a la instruccin SELECT tendr que
tener esta forma (en rojo):

select * from trabajadores where condicion1

Agrega estas dos variables
en la parte inicial del mtodo.
Y en la parte
final del mtodo
aade el
siguiente
cdigo...
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

539 Entidad Clientes | By reycito2011

La condicin 2, condicin 3, etc llevan el and delante. Por ejemplo, la segunda
condicin tendra esta forma (en azul):

select * from trabajadores where condicion1 and
condicion2

Si aadiramos una tercera condicin tambin llevara el and (en
verde):

select * from trabajadores where condicion1 and
condicion2 and condicion3

Etc.

Resumiendo, la primera condicin vendr antecedida de where, mientras que el
resto de las condiciones vendrn antecedidas del and.


Si se observa el cdigo aadido al final del mtodo, en l se empieza
construyendo el comienzo de la consulta SELECT: select * from trabajadores
y luego se aaden condiciones segn si el cuadro de texto correspondiente
est vaco o no.

Cada vez que se encuentra un cuadro de texto no vaco, se aade una
condicin y se aumenta en 1 el contador de condiciones, es decir, la variable
ncond.

Observa como cuando se aade una condicin, se comprueba con un if el
nmero de condiciones (ncond) para saber si hay que concatenar la condicin
con el where o con el and.

Debes observar tambin como nos decantamos por el uso de LIKE ya que este
es ms verstil. Y se recuerda una vez ms que cuando usemos LIKE desde
java en vez de asteriscos usaremos el smbolo tanto por ciento (%)

Estudia bien este cdigo para entenderlo. Solo se ha indicado las posibles
condiciones para el DNI y para el Nombre. Sin embargo ser necesario aadir
ms if para el resto de los campos.


41. Aada al final del cdigo anterior el siguiente cdigo:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

540 Entidad Clientes | By reycito2011




Este cdigo comprueba si hay algn dato en el cuadro de texto apellidos, y, si es as,
entonces crea una condicin para filtrar por apellidos.

Se incrementa el contador de condiciones en uno y si estamos ante la
primera condicin esta se concatena usando where, y si no, esta se
concatena usando and.







42. Aada al final del cdigo anterior el siguiente cdigo:



Este es el cdigo que aade una condicin para el sueldo (suponiendo que haya algn
dato en el cuadro de texto del sueldo)

Como en los casos anteriores, se suma uno al contador de condiciones
y, si estamos ante la primera condicin se concatena con where, y si
no, se concatena con and.

Hay que destacar aqu que, al ser el sueldo un campo numrico, no se
usa LIKE, sino que se usa el operador que el usuario haya escogido
dentro del combo del sueldo. Recuerda que ese operador puede ser uno
de los siguientes: =, >, <, >=, <= , <>


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

541 Entidad Clientes | By reycito2011


43. Aada al final del cdigo anterior el siguiente cdigo:



Este es el cdigo que aade una condicin para la fecha (suponiendo que haya algn
dato en los cuadros de texto correspondientes a las fechas)

Aqu hay que tener en cuenta que los valores de los cuadros de texto del da, mes y
ao se concatenan dentro de una variable fecha usando la / como separador. Si los
cuadros de texto dia, mes y ao estuvieran vacos, la variable fecha contendra la
cadena //. Por eso preguntamos si la variable fecha es distinta de // para saber si
es necesario aadir una condicin para la fecha.

Como en los casos anteriores, se suma uno al contador de condiciones y
se comprueba si estamos ante la primera condicin. En este caso se
concatena la condicin usando where y en caso contrario se concatena
la condicin usando and.

Observa que para crear la condicin se usa el operador que el usuario
haya elegido en el combo de la fecha, el cual puede ser uno de los
siguientes: =, >, <, >=, <= , <>

Ya que estamos manejando fechas recuerda que hay que aadir las
almohadillas en la condicin.






44. Aada el siguiente cdigo al final del cdigo anterior.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

542 Entidad Clientes | By reycito2011




En este caso tenemos la construccin de la condicin correspondiente a la matrcula
del coche del trabajador. Por supuesto, esta condicin solo se construye si se ha
escrito algo en el cuadro de texto de la matrcula.

Como en los casos anteriores se suma uno al contador de condiciones y
si estamos ante la primera condicin entonces la condicin se construir
usando where, y en caso contrario aadiremos esta condicin usando
and.

Como en los dems campos de tipo texto, para construir esta condicin
se ha preferido usar LIKE junto con los % (asteriscos en Access), que da
ms posibilidades de bsqueda.


45. El resultado final de todo este largo cdigo es que la variable sql
contendr una instruccin SELECT que realizar un filtrado sobre la
tabla trabajadores de la base de datos de forma que se extraigan a los
trabajadores que cumplan las condiciones indicadas por el usuario en el
cuadro de dilogo de filtrado.

Lo que hay que hacer ahora es ejecutar dicha instruccin SELECT. Y
como ya sabe, esto se hace a travs del objeto sentencia. Programe lo
siguiente a continuacin del cdigo anterior:



En este cdigo se ejecuta la consulta creada y el resultado se introduce
en un ResultSet r.

Ahora hay que mostrar el contenido del ResultSet r en el JTable de la
ventana principal.

Como ve, el cdigo da un error. Esto es debido a que es obligatorio
rodear el cdigo con un try...catch, ya que es susceptible de error. (Esto
se har ms adelante)

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

543 Entidad Clientes | By reycito2011


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

544 Entidad Clientes | By reycito2011

46. Ahora mostraremos el ResultSet r en el JTable, as que aada el
siguiente cdigo a continuacin:




Este cdigo ya debe resultar conocido, ya que se us tambin en el
mtodo MostrarTrabajadores, encargado de mostrar toda la tabla
trabajadores en el JTable.

Si observa este cdigo ver que lo que hace es definir un vector de
ttulos para el JTable. A partir de este vector de ttulos se crea el modelo
del JTable (DefaultTableModel)

Luego se recorre el ResultSet r, que contiene ahora mismo el resultado
del filtrado realizado, y se extrae cada fila almacenndola en un vector al
que se ha llamado fila.

Cada fila extrada se introduce en el modelo m de la tabla.

Finalmente cuando se han traspasado todas las filas desde el ResultSet
r al modelo m, se asigna dicho modelo al JTable. Esto quiere decir que
el JTable debera mostrar ya el resultado del filtrado.

La razn de que aparezcan tantos errores es porque an no hemos
aadido el try...catch. Esto lo haremos al final.


47. El cdigo programado hasta ahora analiza los datos introducidos en el
cuadro de dilogo de filtrado y construye una consulta SELECT que
extrae los trabajadores que cumplan las condiciones indicadas. Estos
datos se muestran finalmente en un JTable. Lo nico que queda por
hacer es cerrar el cuadro de dilogo.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

545 Entidad Clientes | By reycito2011

Aade por tanto el siguiente cdigo:





48. Todo el cdigo programado en el botn Aceptar es bastante delicado y
pude dar gran cantidad de errores, por lo que ser necesario rodearlo
dentro de un try...catch:




.... resto del cdigo...




49. El cdigo que se acaba de programar es un poco enrevesado y largo,
pero le da al programa una potencia tremenda, ya que permite al usuario
realizar fcilmente bsquedas y filtrados en la tabla trabajadores.

Ejecuta el programa y haz lo siguiente:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

546 Entidad Clientes | By reycito2011





Pulsa Filtrar para ver el
cuadro de dilogo de filtrado.




Queremos buscar a los
trabajadores que tengan una
a en el nombre y cobren
menos de 1500 euros.
(Recuerda activar el combo)


Pulsa Aceptar para ver el
resultado.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

547 Entidad Clientes | By reycito2011

50. Como habr podido observar en este ejemplo, se pueden realizar
bsquedas en la tabla trabajadores gracias al cdigo programado. Esto
es muy til sobre todo en el momento en que la tabla contenga muchos
registros.

Pruebe a ejecutar ms veces el programa y realice varios filtrados.


51. Solo queda por programar el botn Ver Todos del cuadro de dilogo de
filtrado. Al pulsar este botn se pretende que se visualicen todos los
registros de la tabla trabajadores. El cdigo de este botn es bastante
sencillo:





Como ves aprovechamos el mtodo ya programado
MostrarTrabajadores que se encarga de mostrar todos los trabajadores
en el JTable. Luego solo tenemos que descargar el cuadro de dilogo de
filtrado.


52. Ejecuta el programa y prueba lo siguiente:

- Haz el filtrado que quieras sobre la tabla trabajadores. Acepta y observa
el filtrado en la tabla.
- Vuelve a filtrar pero esta vez pulsa el botn Ver Todos. Observars
como vuelven a verse todos los trabajadores en la tabla.

Ejemplo:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

548 Entidad Clientes | By reycito2011







Se acaba de realizar un
filtrado, la tabla muestra
solo los trabajadores que
cumplen la condicin...
Pulsa Ver Todos para
volver a ver todos los
trabajadores.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

549 Entidad Clientes | By reycito2011



Y el resultado ser que se
quita el filtrado y se vuelven
a mostrar todos los
trabajadores
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

550 Entidad Clientes | By reycito2011


CONCLUSIN

Las tablas que tengan muchos datos son incmodas de manejar, por lo
que resulta muy interesante aadir al programa ciertas opciones de
filtrado. Estas opciones permitirn visualizar solo aquellos registros que
cumplan determinadas condiciones.

Las opciones de filtrado consistirn bsicamente en la construccin de
una consulta SELECT a travs de concatenaciones de cadenas.

Una vez construida la cadena SELECT segn el filtrado que quiera hacer
el usuario, se tendr que ejecutar dicha consulta y se tendr que mostrar
el resultado. Normalmente en un JTable.

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS


Ordenacin y clculos

Se van a aadir ciertas mejoras al programa que se viene realizando en las
ltimas hojas guiadas. En esta hoja programaremos ciertas opciones de
ordenacin as como realizaremos determinados clculos sobre la tabla
trabajadores.









21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

551 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1


1. Abrir la aplicacin de la hoja guiada anterior.

2. Vamos a modificar el cuadro de dilogo de filtrado de forma que no solo
sea capaz de filtrar, sino que tambin permita que el listado que se ha
filtrado aparezca ordenado segn un campo.

Para ello, aada lo siguiente al dilogo de filtrado:



NOTA N1: El combo cboCamposOrdenacion contendr los siguientes
elementos: (Sin Ordenacin), DNI, Nombre, Apellidos, Sueldo, Fecha,
Matricula:




panelOrdenacion

cboCamposOrdenacion

radioASC

radioDESC

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

552 Entidad Clientes | By reycito2011

NOTA N2: Es necesario aadir un ButtonGroup al programa, al que
llamaremos grupoOrdenacion. Los botones de opcin radioASC y radioDESC
deben pertenecer a dicho grupo.




3. La idea es la siguiente. Cuando el usuario quiera hacer un filtrado podr
indicar que el listado aparezca ordenado por algn campo,
seleccionndolo en el combo de ordenacin. Tambin puede indicar la
forma de ordenacin (ascendente o descendente) a travs de los
botones de opcin.

Al pulsar Aceptar el listado de trabajadores no solo saldr filtrado, sino que tambin
saldr ordenado.

Para ello tendremos que realizar modificaciones en el cdigo del botn
Aceptar. Aade el siguiente cdigo en el actionPerformed del botn
Aceptar (justo antes de la ejecucin de la consulta):



Estudiemos el cdigo. Lo primero que se hace es extraer el valor del combo
desplegable de los campos de ordenacin.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

553 Entidad Clientes | By reycito2011

Si este combo no contiene el valor (Sin ordenacin) significar que se
desea realizar una ordenacin por el campo seleccionado. As pues se
concatena a la variable sql la clusula order by con el campo que se ha
seleccionado en el combo.

Se controla tambin la forma de ordenacin teniendo en cuenta el botn
de opcin que est activado, y segn esto, se aade la cadena ASC o
DESC para ordenar ascendentemente o descendentemente.
4. Ejecuta el programa y prueba a hacer un filtrado eligiendo un campo
para ordenar y observa el resultado:




En este ejemplo se pretende
visualizar a todos los trabajadores
que contengan una a en su
nombre...
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

554 Entidad Clientes | By reycito2011

5. Una ventaja de esto es que se puede mostrar el listado completo de
trabajadores ordenado por el campo que se quiera siempre y cuando no
se indique ninguna condicin:




En este ejemplo apareceran todos
los trabajadores, ya que no se ha
indicado ninguna condicin.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

555 Entidad Clientes | By reycito2011

6. Ahora vamos a aadir una nueva mejora al programa. La idea es que se
visualice junto al JTable de trabajadores los siguientes datos: el nmero
de trabajadores que se muestra y la media de los sueldos.

Para ello, aade las siguientes modificaciones en el diseo de la ventana principal:




7. Ahora programaremos un mtodo que sea capaz de calcular el nmero
de trabajadores y el sueldo medio a partir del contenido de un ResultSet.

Este mtodo recibir un ResultSet como parmetro, y lo que har ser
analizar el contenido de este ResultSet para calcular y luego mostrar el
nmero de trabajadores y el sueldo medio.

Accede al cdigo de tu programa y aade el siguiente procedimiento:

Etiquetas con borde:


etiNumeroTrab


etiSueldoMedio
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

556 Entidad Clientes | By reycito2011



Este cdigo bsicamente toma el ResultSet pasado como parmetro y lo
recorre aumentando en uno la variable ntrab cada vez que se pasa al
siguiente trabajador.

Por otro lado se calcula la suma de los sueldos de los trabajadores del
ResultSet.

Una vez terminado el bucle solo hay que dividir la suma de los sueldos
entre el nmero de trabajadores para obtener la media, y estos datos se
colocan en las etiquetas correspondientes.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

557 Entidad Clientes | By reycito2011

8. Interesa que cada vez que se muestren todos los trabajadores en el
JTable se realicen estos clculos, as pues debe aadir la siguiente lnea
en el mtodo MostrarTrabajadores.



Esa lnea es una llamada al mtodo que acabamos de programar, y har que
despus de que se presenten en el JTable todos los trabajadores se rellenen
las etiquetas de los clculos.


9. Tambin interesa que cuando se realice un filtrado aparezca el nmero
de trabajadores y el sueldo medio correspondiente al listado que se
acaba de filtrar. Para ello debes aadir la siguiente lnea al cdigo del
botn Aceptar del cuadro de dilogo de filtrado:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

558 Entidad Clientes | By reycito2011


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

559 Entidad Clientes | By reycito2011


De nuevo se realiza la llamada al mtodo de los clculos justamente despus de
colocar en la tabla el listado de trabajadores, en este caso filtrado.


10. Ejecuta el programa y observa como al iniciar el programa ya aparecen
en las etiquetas los clculos (ya que el constructor llama al mtodo
MostrarTrabajadores que a su vez llama al mtodo HacerCalculos)

Tambin puedes comprobar como al hacer un filtrado se muestran los
clculos correspondientes al listado filtrado, ya que en el botn Aceptar
del dialogo de filtrado se hace una llamada al mtodo HacerCalculos.





Al iniciarse el programa
aparece el listado
completo de
trabajadores y se
calcula el nmero de
trabajadores y el sueldo
medio...
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

560 Entidad Clientes | By reycito2011


Si se hace un filtrado
(en este ejemplo se
visualizan los
trabajadores con menos
de 1000 de sueldo) los
clculos se
correspondern con el
listado filtrado...
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

561 Entidad Clientes | By reycito2011


CONCLUSIN

Todo programa de gestin de datos de una tabla debera tener opciones
de ordenacin para mostrar los datos de la tabla ordenados como el
usuario quiera.

La opcin de ordenacin puede estar situada junto a las opciones de
filtrado para permitir de esta manera que los filtrados aparezcan
ordenados segn le interese al usuario.

Suele ser habitual que al lado del JTable aparezcan ciertos clculos
estadsticos relativos a la tabla.

EJERCICIO GUIADO. JAVA. INFORMES DE BASE DE DATOS


Informes

Toda aplicacin de base de datos necesita imprimir documentos tales como
listados, fichas, grficos, etc. Estos documentos se rellenan con datos tomados
directamente desde la base de datos. A estos documentos se les denomina de
forma general informes.

Para crear estos documentos es necesario usar algn programa de creacin de
informes. Estos programas permiten definir la estructura general del informe
(sin tener en cuenta los datos)

Una vez creado el informe, este se enlaza con nuestra aplicacin, de forma que
cuando el usuario pulse la opcin de imprimir, el informe se rellene con los
datos de la base de datos y luego sea enviado a la impresora.

Para la creacin de informes para nuestras aplicaciones usaremos un
programa gratuito llamado IReport. El fichero de instalacin para este
programa lo encontrar en la subcarpeta Herramientas de la carpeta
compartida.

Para descargar las ltimas versiones de este programa puede acudir a la
pgina http://www.jasperforge.org/sf/projects/ireport

En esta hoja guiada se vern las ideas bsicas de manejo del programa
IReport.








21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

562 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1. INSTALACIN DE IREPORT


1. En primer lugar copie el fichero de instalacin del programa IREPORT a
su ordenador, e instale el programa.

2. Una vez instalado, ejectelo. La pantalla principal del IReport es la
siguiente (es relativamente parecida a la pantalla principal de NetBeans):


















En esta zona
aparecern los
informes que se
estn diseando.
Aqu aparecern
los distintos
elementos que
forman el informe.
En esta parte
aparecern las
propiedades del
objeto seleccionado.
Aqu tendremos un
listado con los
campos de las
tablas que
podremos incluir en
el informe, entre
otras cosas.
Esta es la zona de
diseo, donde se
definen las
caractersticas del
informe.
Y aqu tenemos la
salida, lugar donde
aparecen los
mensajes informativos
y de error.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

563 Entidad Clientes | By reycito2011

3. Cierre el programa IReport. Lo usaremos ms adelante.


EJERCICIO GUIADO N 2. CREACIN DE UN DSN


Definicin de DSN

DSN significa Data Source Name, es decir, Nombre del origen de datos.

Un DSN define cierta informacin sobre una base de datos, como por ejemplo
el tipo de base de datos que es y donde se encuentra almacenada en el
ordenador.

Toda esta informacin se agrupa bajo un nombre, y ese nombre precisamente
es lo que se denomina un DSN.

Cuando un programa necesita acceder a una base de datos en concreto, solo
hay que indicarle el nombre del DSN que tiene la informacin de dicha base de
datos. De esta forma, el programa sabe acceder a la base de datos.

El IReport es un programa que necesita saber el DSN de la base de datos que
va a manejar, por eso es necesario aprender a crear DSNs para base de datos
si queremos usar IReport.

En este ejercicio guiado n 2 aprenderemos los pasos a seguir para crear un
DSN para una base de datos. En nuestro caso, crearemos un DSN para la
base de datos MANEMPSA.


1. Para crear un DSN acceda al Panel de Control.

2. Dentro del Panel de Control active el icono Herramientas
Administrativas.



3. Dentro de Herramientas Administrativas active el icono Orgenes de
datos.



4. En la pestaa DSN de Usuario pulse el botn Agregar para aadir un
nuevo DSN.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

564 Entidad Clientes | By reycito2011




5. Ahora hay que indicar el tipo de la base de datos a la que asignaremos
el DSN. En nuestro caso, como la base de datos MANEMPSA es una
base de datos de Access, tendremos que escoger Microsoft Access
Driver (*.mdb) y pulsamos Finalizar.




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

565 Entidad Clientes | By reycito2011



6. Ahora seleccionaremos el fichero de la base de datos MANEMPSA
haciendo clic en el botn Seleccionar:




7. Usando la ventana de exploracin que aparece, busca la base de datos
MANEMPSA que se encuentra en Mis Documentos. Seleccinala y
pulsa Aceptar.




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

566 Entidad Clientes | By reycito2011

8. Esta es toda la informacin que necesitaremos para crear el DSN de la
base de datos MANEMPSA. Ahora ya solo queda darle un nombre al
DSN. El nombre ser BaseEjemplo. Escribe el nombre del DSN en la
casilla correspondiente:




9. Pulsa Aceptar las veces que sea necesario y el DSN BaseEjemplo habr
sido creado. Esto quiere decir, que un programa determinado podr
acceder a la base de datos MANEMPSA simplemente indicndole el
DSN BaseEjemplo.

Este es el caso del programa IReport. Como vers en los pasos
siguientes, tendremos que usar el DSN BaseEjemplo que acabamos de
crear para poder realizar informes sobre la base de datos MANEMPSA.

10. Una vez creado un DSN para una base de datos, este se queda
almacenado en el ordenador. Esto significa que no necesitaremos volver
a crear un DSN para la base de datos MANEMPSA.

11. El DSN se queda almacenado en el ordenador hasta que el propio
usuario lo borre. Para practicar, veremos como borrar el DSN que
acabamos de crear (aunque finalmente no lo borraremos porque lo
usaremos ms adelante). Para ello entre en Panel de Control,
Herramientas Administrativas, Orgenes de Datos:





21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

567 Entidad Clientes | By reycito2011

12. En la pantalla que aparece ver el listado de DSNs que tiene creadas
ahora mismo en el ordenador actual. Entre ellas ver la DSN llamada
BaseEjemplo. Para eliminarla solo tienes que seleccionarla y pulsar el
botn Quitar.

Aparecer un mensaje preguntndole si quiere borrar el DSN. Debe
responder NO ya que usaremos el DSN a continuacin. (Si lo borrara no
sera algo grave. Simplemente se tendra que crear de nuevo con los
pasos indicados antes)





21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

568 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 3. CONEXIN DE IREPORT CON UNA BASE DE
DATOS


1. Para poder crear informes con datos de una base de datos, es necesario
realizar una conexin entre el programa iReport y la base de datos. Este
proceso se tendr que realizar antes de crear cualquier informe sobre
dicha base de datos, y solo hace falta hacerlo una vez. Para este
proceso, se usar el DSN de la base de datos.

En este ejercicio guiado conectaremos el programa iReport con la base
de datos MANEMPSA.

Para ello entre otra vez en el programa iReport.


2. Para crear esta conexin, active la opcin Datos Conexiones / Fuentes
de Datos




3. Debe activar el botn Nuevo para crear una nueva conexin...

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

569 Entidad Clientes | By reycito2011




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

570 Entidad Clientes | By reycito2011

4. Para base de datos de Access, debes activar la opcin Conexin Base
de Datos JDBC y pulsar Prximo.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

571 Entidad Clientes | By reycito2011

5. Ahora le daremos un nombre a la conexin que realizaremos con la
base de datos MANEMPSA. El nombre ser simplemente: Conexin
con MANEMPSA.





21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

572 Entidad Clientes | By reycito2011

6. Lo siguiente es indicar el controlador (driver) de la base de datos. Para
las bases de datos de Access el controlador que tendremos que indicar
es sun.jdbc.odbc.JdbcOdbcDriver





21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

573 Entidad Clientes | By reycito2011

7. Y finalmente hay que indicar el DSN que le hemos asociado a la base de
datos MANEMPSA. Como vio en el ejercicio anterior, el DSN que se
cre tena de nombre BaseEjemplo.

Tiene que cambiar la palabra DSNAME por BaseEjemplo:



Quedara as:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

574 Entidad Clientes | By reycito2011

8. Finalmente, activaremos la opcin Salvar el password para evitar que se
nos pida constantemente una contrasea para acceder a la base de
datos (La casilla de la contrasea password- se deja en blanco ya que
la base de datos MANEMPSA no tiene contrasea)



9. Se acaba de establecer una conexin entre el informe que estamos
haciendo y la base de datos MANEMPSA. Es muy interesante
comprobar que todos los pasos que hemos seguido son correctos. Para
ello, pulse el botn Prueba, y si todo ha ido bien, debe aparecer un
mensaje indicndolo:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

575 Entidad Clientes | By reycito2011



10. La conexin con la base de datos MANEMPSA est ya configurada. Solo tiene
que pulsar el botn Salvar para que quede guardada.

11. Al pulsar el botn Salvar volver a la pantalla inicial. En ella podr observar que
se ha creado una conexin (la conexin con MANEMPSA) Siguiendo estos
mismos pasos puede crear todas las conexiones que quiera con las bases de datos
de su ordenador.

Una vez creada una conexin, esta se queda guardada y podr ser usada para la
creacin de informes sobre la base de datos con la que conecta.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

576 Entidad Clientes | By reycito2011





12. Cierra el cuadro de conexiones. Ya tenemos el programa iReport
preparado para la creacin de informes con la base de datos
MANEMPSA.


Conexin
creada.
Listado de
conexiones
a base de
datos (solo
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

577 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 4. CREACIN RPIDA DE INFORMES

1. Ahora que tenemos configurado el iReport para acceder a la base de
datos MANEMPSA, podemos crear informes con los datos de esta base
de datos.

En este ejercicio guiado se crear simplemente un informe que muestre
un listado de los trabajadores de la empresa.

2. Una forma rpida de crear un informe es a travs de la opcin Mago de
Informes que se encuentra dentro de la opcin del men Fichero.
Actvela.



3. La opcin Mago de Informes muestra un asistente donde tendr que
indicar algunos datos necesarios para crear el informe. Lo primero que
tiene que indicar es la base de datos sobre la que quiere realizar el
informe. Para ello debe elegir la conexin correspondiente a dicha base
de datos:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

578 Entidad Clientes | By reycito2011


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

579 Entidad Clientes | By reycito2011

4. Hasta el momento solo hemos configurado una conexin en el iReport
(la conexin con MANEMPSA), as que ser la nica que aparezca al
desplegar el listado de conexiones.

5. Una vez elegida la base de datos (indicando su conexin
correspondiente) tenemos que extraer de ella los datos que queremos
que aparezcan en el informe (listado) Y para ello tendremos que hacerlo
indicando una consulta SQL de tipo SELECT.

Ya que queremos hacer un listado con todos los trabajadores de la base de datos
tendremos que introducir una consulta SELECT que extraiga a dichos trabajadores:



6. Ya podemos ir al siguiente paso del asistente pulsando el botn
Prximo.

7. En este nuevo paso tendremos que indicar los campos que queremos
que aparezcan en el listado. Para ello solo tendremos que seleccionar
cada campo y pulsar el botn > para aadirlo. En nuestro ejemplo debes
aadir los campos: DNI, Nombre, Apellidos y Sueldo nicamente.

Nota:

El botn > aade de uno en uno.
El botn >> los aade todos.
El botn < quita un campo del informe.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

580 Entidad Clientes | By reycito2011

El botn << los quita todos.




8. Una vez elegidos los campos puede pulsar el botn Prximo para ir al
siguiente paso.

9. En este nuevo paso se tendr que elegir una forma de agrupamiento
para el informe. En este ejemplo no se estudiar el agrupamiento en
informes as que pulse simplemente el botn Prximo otra vez.

10. El siguiente paso es la distribucin del informe. Es decir, la forma de
colocar los datos. Existen dos posibilidades:

- En columnas. Esta distribucin crea fichas individuales de cada
registro (en nuestro ejemplo de cada trabajador)

- Tabulada. La distribucin tabular presenta el tpico listado con una
cabecera.

Para nuestro ejemplo escogeremos la distribucin Tabulada. Dentro de
la distribucin Tabulada se pueden elegir entre algunas variantes.
Dejaremos activado el formato ClassicT.xml



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

581 Entidad Clientes | By reycito2011



11. Active el botn Prximo para acceder al quinto y ltimo paso del
asistente. En este paso iReport le felicita porque acaba de crear el
informe. Aqu solo tiene que pulsar el botn Terminar.




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

582 Entidad Clientes | By reycito2011




12. Una vez finalizado el asistente, volveremos a la pantalla principal de
iReport. En ella, ver como ha aparecido el diseo del informe que
acaba de crear.






En prximas hojas guiadas se estudiar la forma de modificar el diseo y de
crear un informe desde cero.

13. Vamos a guardar el informe. Para ello activa la opcin Fichero
Guardar. El nombre que le daremos al informe ser trabajadores:

Diseo del informe
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

583 Entidad Clientes | By reycito2011




14. Ahora que est guardado, vamos a ver como quedara el listado. Para
ello active la opcin Construir Ejecutar informe (usando la conexin
activa) o bien el botn de la barra de herramientas con el mismo
nombre:







21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

584 Entidad Clientes | By reycito2011


15. Al hacer esto aparecer por fin el listado que ha creado. Este listado
aparece en una ventana nueva y tendr un aspecto similar al siguiente:




Como puede observar, aparecen los campos que indic en el asistente. El informe es
tabulado (es decir, tiene forma de listado) y en l aparecen los trabajadores que tenga
en su base de datos MANEMPSA.

Debe tener en cuenta que si ha cambiado el contenido de la base de
datos MANEMPSA entonces es posible que le aparezcan otros
trabajadores.

Observe como el ttulo del listado no es muy adecuado. Lo cambiaremos
a continuacin.


16. Cierre la ventana del informe (no la del iReport) y volver a la pantalla
principal de iReport.

17. Haga doble clic sobre el ttulo del informe y cmbielo por Listado de
Trabajadores:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

585 Entidad Clientes | By reycito2011




18. Vuelva a visualizar el resultado del informe:




19. Ahora el informe tendr mejor aspecto:





20. Acabamos de crear nuestro primer informe. Un listado con los datos de
los trabajadores. Ya puede cerrar el programa iReport. Guarde todos los
cambios.






21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

586 Entidad Clientes | By reycito2011


CONCLUSIN

Todo programa de gestin de datos de una tabla debera tener opciones
de ordenacin para mostrar los datos de la tabla ordenados como el
usuario quiera.

La opcin de ordenacin puede estar situada junto a las opciones de
filtrado para permitir de esta manera que los filtrados aparezcan
ordenados segn le interese al usuario.

Suele ser habitual que al lado del JTable aparezcan ciertos clculos
estadsticos relativos a la tabla.

EJERCICIO GUIADO. JAVA. INFORMES DE BASE DE DATOS


Diseo de Informes

En la hoja anterior se aprendi a realizar un informe usando el mago de
informes. Este asistente crea un informe predefinido a partir de los campos de
la tabla que indiquemos.

El mago de informe es una forma rpida de crear informes, aunque el resultado
quizs no sea exactamente lo que buscbamos. Es posible que nos interese
cambiar los colores, el tipo de letra, el formato de los nmeros, etc.

En la hoja guiada anterior vimos un ejemplo de esto. Una vez creado el
informe, se tuvo que cambiar el ttulo ya que el ttulo incluido por defecto no era
el adecuado.

En esta hoja guiada se aprendern algunas tcnicas para modificar un informe
una vez que haya sido creado con el mago de informes. Veremos como
modificar las propiedades de cada elemento del informe.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

587 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1. CREACIN Y MODIFICACIN DE UN INFORME


En este ejercicio guiado se crear un informe usando el mago de informes.
Concretamente, se crear un informe que muestre el listado de los coches de
la empresa MANEMPSA. Luego, una vez creado dicho listado, lo
modificaremos.

1. Abra el programa iReport.

2. Active la opcin Fichero Mago de Informes.



3. Aparecer el asistente para la creacin de informes. En el primer paso
tiene que elegir la conexin correspondiente a la base de datos
MANEMPSA (que es donde se encuentra la tabla coches)



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

588 Entidad Clientes | By reycito2011

4. Ahora tendremos que escribir la consulta SELECT para extraer el listado
completo de coches. Haremos que este listado se presente ordenado
por marca. Para ello, introduzca la siguiente instruccin SQL:



5. Pulsa el botn Prximo para pasar al siguiente paso del asistente.

6. En este paso tendremos que indicar los campos que nos interesa que
aparezcan en el listado. Estos campos sern los siguientes: matrcula,
marca, modelo y ao.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

589 Entidad Clientes | By reycito2011



7. Pulse el botn Prximo para pasar al siguiente paso del asistente:

8. Estamos en el paso 3 del asistente. En este paso hay que indicar el
agrupamiento del informe. En nuestro ejemplo no usaremos
agrupamiento as que pulse simplemente el botn Proximo.

9. En el paso 4 del asistente tendremos que elegir la distribucin del
informe. Escogeremos una distribucin tabulada y de tipo ClassicT.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

590 Entidad Clientes | By reycito2011



10. Active Prximo para ir al 5 y ltimo paso del asistente y pulse Terminar.

11. Acabamos de crear el informe. Observe su diseo.



12. Ahora es conveniente guardarlo para evitar problemas. Pulse la opcin
Fichero Guardar y gurdelo con el nombre listadocoches en la carpeta
Mis Documentos.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

591 Entidad Clientes | By reycito2011




13. Acaba de crear un informe con forma de listado. Para ver el resultado
debe pulsar el botn Ejecutar informe (usando la conexin activa)



14. Ahora podr ver el informe creado, el cual debe tener el siguiente
aspecto (tenga en cuenta que los elementos del listado pueden variar
dependiendo de los datos que tenga almacenado en su tabla)




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

592 Entidad Clientes | By reycito2011

15. Ya tenemos el informe creado. Este informe tiene su formato (tipos de
letras, colores, etc) que puede que sea suficiente para nuestras
necesidades. Pero, y si quisiramos cambiar las caractersticas del
informe? En los puntos siguientes veremos como cambiar el aspecto del
listado. De momento cierre la ventana del listado para volver a la
pantalla de diseo.
16. Empezaremos cambiando el ttulo del informe. Para ello haremos doble
clic sobre el ttulo y escribiremos Listado de Coches:






17. Puede cambiar el aspecto de cada elemento del informe
seleccionndolo con un clic y luego modificando sus propiedades, las
cuales aparecern en la parte derecha de la ventana. Por ejemplo,
seleccione en la cabecera del listado el campo matrcula:





18. En la zona de propiedades (parte derecha) active por ejemplo la
propiedad negrilla y el tipo de letra Comic Sans:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

593 Entidad Clientes | By reycito2011




19. Si observa el elemento seleccionado (Matrcula en la cabecera)
observar que est ahora en negrita y con el tipo de letra Comic:



20. Selecciona ahora el ttulo, por ejemplo (solo tienes que hacer un clic
sobre l)



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

594 Entidad Clientes | By reycito2011

21. Ahora activa las siguientes propiedades:








Activa la propiedad primer plano (en el botn
con los tres puntos) y escoge un color verde.

Activa la propiedad fondo y escoge un color
amarillo.
Pon un tamao de 28, y negrilla.

Activa la itlica (cursiva) y el subrayado.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

595 Entidad Clientes | By reycito2011

22. Si observas el ttulo del informe, vers que tendr el siguiente aspecto
ahora:



23. Vamos a colocar el recuadro del ttulo a la izquierda. Para ello, haz clic
sobre el ttulo y sin soltar el botn del ratn arrstralo a la parte izquierda
del informe, para que quede as:



24. Visualiza el informe para ver el resultado:



25. El informe tendr el siguiente aspecto:



Como ve, hemos cambiado la forma y
posicin del ttulo.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

596 Entidad Clientes | By reycito2011





26. Vamos a solucionar el problema del campo Matrcula. Cierra la ventana
del listado y en la ventana de diseo haz que el campo matrcula tenga
un tamao de letra de 10:




27. Si ahora visualizas el listado de nuevo, vers como s aparece el campo
matrcula:




28. Sigamos cambiando cosas en el diseo del informe. Ahora vas a
seleccionar el campo matrcula correspondiente no a la cabecera, sino al
listado de datos:





Observa. No aparece el campo matrcula!, Esto es debido
a que es demasiado grande y no cabe aqu.
Este cuadro se corresponde al conjunto de datos
de la columna matrcula.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

597 Entidad Clientes | By reycito2011



29. Haz que sus propiedades sean las siguientes:

Negrita: Activado
Tamao de letra: 8
Tipo de letra: Courier New
Primer Plano: Azul




30. Una vez cambiadas las propiedades, si visualizas el informe, deber
tener el siguiente aspecto:








31. As pues, el diseo del informe que haya creado con el mago de
informes puede ser modificado luego. Bsicamente solo tiene que
seleccionar el elemento a modificar y luego cambiar sus propiedades.

Debe tener en cuenta que los elementos del diseo pueden cambiarse
de lugar y que pueden cambiarse de tamao.

En la parte superior de la ventana de iReport tiene una barra de
herramientas que puede usar tambin para realizar cambios en los
elementos:





32. Ha terminado de realizar el informe. Puede cerrar iReport y guardar los
cambios si hiciera falta.
Si observas el listado vers que todos los datos de la
columna matrcula tiene ahora las propiedades
asignadas.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

598 Entidad Clientes | By reycito2011



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

599 Entidad Clientes | By reycito2011


CONCLUSIN

La forma ms sencilla de crear un informe con iReport es a travs del
mago de informes.

Una vez creado el informe, puede realizar modificaciones en su diseo
seleccionando cada elemento y cambiando sus propiedades en la zona de
propiedades.

Tambin puede mover y cambiar de tamao los distintos elementos del
informe.

De esta forma, puede crear rpidamente un listado para luego
personalizarlo.

EJERCICIO GUIADO. JAVA. INFORMES DE BASE DE DATOS


Creacin de un informe desde cero

En hojas anteriores hemos visto que la forma ms rpida de crear un informe
es usando el mago de informes de iReport. Luego, con el informe resultante,
solo tenamos que cambiar las propiedades de cada elemento del informe.

En esta hoja veremos como crear un informe empezando desde cero, lo que
nos servir adems para entender las distintas zonas en que se divide un
informe.

La creacin de informes desde cero es algo tedioso y lento, aunque por otro
lado nos da total libertad a la hora de distribuir cada elemento en el informe.

En muchos casos tendr que crear los informes desde cero, ya que el cliente le
insistir en usar un determinado formato para los listados, las facturas y todos
aquellos documentos que deben imprimirse desde el programa. Insistir en
mantener los colores propios de la empresa (la imagen corporativa) y dems
caractersticas propias de la empresa. Para hacer esto a veces lo mejor es
crear el informe desde el principio.

En esta hoja se ver un ejemplo de creacin de informe desde cero.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

600 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1. CREACIN DE UN INFORME DESDE CERO


1. Entre en iReport

2. Nuestro objetivo ser crear un informe que muestre el listado de
servicios realizados por el trabajador Juan Prez, cuyo nmero de DNI
es 12.321.567-B.

3. Para ello, active la opcin Fichero Nuevo Documento.



4. El nombre del informe ser serviciosjuan:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

601 Entidad Clientes | By reycito2011

5. Al pulsar OK, observar que aparece un informe en blanco:



6. Este informe est dividido en zonas, cada una con un cometido distinto
(lo iremos estudiando a medida que realicemos el informe)

7. En la barra de herramientas debe indicar la conexin a la base de datos
que quiere usar. En nuestro caso la conexin se llama Conexin con
Manempsa.





8. Ahora hay que indicar la consulta SQL que nos permita acceder a los
datos necesarios para el informe. Esto se tiene que hacer activando la
opcin Datos Consulta de Informe:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

602 Entidad Clientes | By reycito2011





9. En la ventana que aparece tendr que introducir la siguiente consulta
SQL:

select * from trabajadores, servicios
where trabajadores.dni=servicios.dni and
trabajadores.dni=12.321.567-B
order by servicios.fecha









Si en la parte inferior aparece el
listado de campos seleccionados
en la consulta, entonces es
indicativo de que todo va bien.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

603 Entidad Clientes | By reycito2011

10. Pulsa OK. Acabamos de indicarle al informe que estamos realizando la
base de datos de donde tomaremos los datos y la consulta para extraer
dichos datos. Si observa la parte izquierda de la ventana del iReport,
ver una opcin Campos:



11. Pulse en el + para visualizar el listado de campos disponibles. Ver
todos los campos seleccionados en la consulta SQL que acaba de
introducir.



12. Nos interesa que en el listado de los servicios de Juan aparezca el
nmero, el tipo de servicio y la cantidad. Para ello, tendr que aadir
estos datos a la zona de Detalle (Detail).

La zona de detalle es la zona en la que aparecern los datos del listado,
y por tanto es all donde tiene que aadir los campos a mostrar.

Arrastra el campo nmero desde la zona de campos a la zona de detalle:


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

604 Entidad Clientes | By reycito2011




13. Haz lo mismo con los otros campos que queremos mostrar: el tipo y la
cantidad: El detalle quedar as:



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

605 Entidad Clientes | By reycito2011

14. Visualice el informe resultante. iReport le pedir que guarde el
informe. Llmelo serviciosjuan.

15. Una vez guardado ver como queda el informe que acaba de hacer:




16. No est muy conseguido, pero solo acabamos de empezar. Recuerde
que la zona de Detalle (Detail) es el sitio donde colocar los campos del
listado de datos.

17. Nuestra zona de Detalle es muy grande, por eso los datos salen tan
separados. Puede achicar una zona haciendo clic en la lnea de
separacin y arrastrando. Pruebe a hacerlo hasta que la zona de Detalle
quede as (es posible que necesite mover los campos):

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

606 Entidad Clientes | By reycito2011







18. Si visualiza ahora el informe ver que tiene mejor aspecto (los servicios
de Juan aparecen ms unidos):


Clic en la lnea de separacin y
arrastra.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

607 Entidad Clientes | By reycito2011




19. Ahora sera interesante que el listado tuviera una cabecera. Para ello,
haz clic en el botn de la barra de herramientas llamado Texto Esttico y
luego haz clic en la zona del informe llamada Column Header y arrastre
el ratn:






20. Haz doble clic sobre el recuadro que ha aparecido y escriba dentro de l
N Servicio.



21. La zona del informe llamada Encabezado de Columna (Column Header)
es la zona donde colocar los encabezamientos del listado. Acabamos
de colocar el encabezamiento de la columna nmero. Ahora repita el
proceso para colocar los otros dos encabezados de columnas:


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

608 Entidad Clientes | By reycito2011



22. Para destacarlos un poco (ya que son los encabezados), haremos que
estn en negrita y que su tamao sea un poco ms grande (para ello
use las propiedades de dichos elementos) El resultado debe ser similar
al siguiente:





23. Visualiza el informe y observa el resultado:



24. Ya tiene un mejor aspecto, pero an puede mejorarse ms. A travs del
botn Lnea puede dibujar lneas en el informe. Dibuje una lnea en la
zona del Encabezado de Columna:

botn lnea

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

609 Entidad Clientes | By reycito2011



NOTA: Para que la lnea le salga recta puede dibujarla teniendo pulsada la tecla
Maysculas.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

610 Entidad Clientes | By reycito2011

25. Visualice el informe:




26. Ahora vamos a colocar un ttulo al informe. El ttulo del informe se coloca
en la zona Ttulo (Title). En nuestro caso vamos a colocar el ttulo Ficha
de Servicios. Para introducir un texto tendr que usar el botn Texto
esttico que ya us antes:




Haga clic en este botn y luego haga clic y arrastre en la zona del Ttulo.
Se crear un recuadro:




27. Haz doble clic sobre ese recuadro y escribe Ficha de Servicios.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

611 Entidad Clientes | By reycito2011




28. Ahora asigna al ttulo las siguientes propiedades:

a. Un tamao de letra de 24
b. Agranda el cuadro de forma que ocupe prcticamente toda la
zona de ttulo.
c. Centra el ttulo en el recuadro.
d. Subryalo.
e. Asigna un color de fondo gris claro.
f. Desactiva la opcin transparente.

Si todo va bien, su ttulo tiene que haber quedado as:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

612 Entidad Clientes | By reycito2011

29. Visualice el listado. Su aspecto debe ser ms o menos el siguiente:




30. Ahora introduciremos algunos datos del trabajador (en nuestro caso de
Juan Prez) La zona que usaremos ser el Encabezado de Pgina
(pageHeader)

Debe saber que en el encabezado de pgina se colocan aquellos datos
que deban aparecer en la parte superior de todas las pginas.

La diferencia entre Ttulo y Encabezado de Pgina es que lo que escriba
en el ttulo aparecer en la parte superior de la primera pgina (y
ninguna ms), mientras que lo que escriba en el encabezado de pgina
aparecer en la parte superior de todas las pginas del listado.

31. Vamos a empezar agrandando la zona del Encabezado de Pgina. Esto
se hace fcilmente arrastrando la lnea lmite inferior de la zona:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

613 Entidad Clientes | By reycito2011






32. Ahora que tenemos ms espacio en el encabezado de pgina vamos a
dibujar en l un recuadro. Esto lo puede hacer usando el botn
Rectngulo de la barra de herramientas:




Solo tiene que activar este botn y hacer clic y arrastrar en el encabezado. Intente
que quede as:

Haz clic en esta lnea y
arrastra hacia abajo.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

614 Entidad Clientes | By reycito2011



33. Ahora aada los siguientes cuadros de texto esttico dentro del recuadro
que acaba de hacer:





Recuerde que estos cuadros de texto se hacen usando el botn Texto
esttico de la barra de herramientas:


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

615 Entidad Clientes | By reycito2011


En el ejemplo, se ha asignado un tamao de letra de 12, y adems se ha puesto en
negrita el texto del primer cuadro.


34. Ahora, para que salgan los datos propios del empleado, aadiremos los
campos nombre, apellidos y DNI. Empezaremos por aadir el campo
DNI. Esto se hace arrastrando desde la zona de campos:




35. Haga lo mismo con el campo Apellidos y el campo Nombre. El informe
quedar as:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

616 Entidad Clientes | By reycito2011




36. Ahora se cambiarn algunas propiedades de los campos que hemos
aadido:

a. Asigne un tamao de 12
b. El DNI debe aparecer en negrita.
c. Agrande los cuadros de los campos.

El resultado ser el siguiente:





37. Visualice el resultado del informe. Debe tener el siguiente aspecto:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

617 Entidad Clientes | By reycito2011




Como puede ver, en la ficha del empleado aparecen sus datos reales.


38. Y ya para terminar agregaremos un logotipo al informe. Dicha imagen se
colocar en la zona del Encabezado de Pgina, al lado del recuadro.
Para ello, tendr que usar el botn de la barra de herramientas imagen:



Haga clic en este botn y luego haga clic y arrastre hasta crear un
rectngulo en la zona del Encabezado de Pgina. Debe quedar as:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

618 Entidad Clientes | By reycito2011




39. La imagen del logotipo aparecer en el recuadro que acabamos de
hacer. Es necesario que se copie el fichero de la imagen en la misma
carpeta que donde est guardado el informe. En nuestro caso, en la
carpeta Mis Documentos.

Usaremos la imagen nenfares.jpg que se suele encontrar en la carpeta
Mis Imgenes como logotipo para el informe. As pues, copie el fichero
nenfares.jpg desde la carpeta Mis Imgenes a la carpeta Mis
Documentos.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

619 Entidad Clientes | By reycito2011

40. Una vez copiado el fichero de la imagen en la misma carpeta que el
informe, tenemos ahora que usar la propiedad del cuadro de imagen
llamada Expresin Imagen, en ella tendr que escribir el nombre del
fichero de imagen entre comillas dobles:




41. Ya tiene asociada la imagen con el cuadro de imagen. Ya solo queda
visualizar el informe. Su aspecto ser parecido al siguiente:


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

620 Entidad Clientes | By reycito2011






42. Ha podido observar en este ejemplo los pasos bsicos a seguir para
crear un informe desde cero. Como puede ver, es una forma ms
trabajosa de crear un informe, pero a cambio disponemos de ms
libertad a la hora de disear el informe.


43. Para finalizar con esta hoja guiada, veamos para que sirve cada una de
las zonas del informe:






Ttulo (title)
Aqu se coloca el ttulo del
informe. Aparecer en la parte
superior de la primera pgina
Encabezado de Pgina
(pageHeader)
Lo que se coloque aqu
aparecer en todas las pginas,
en la parte superior.
Encabezado de columna
(columnHeader)
Se usa para colocar el texto del
encabezado del listado (los
nombres de cada columna)
Detalle (detail)
Aqu aparecern todos los datos
del listado. Por tanto, aqu se
suelen colocar los campos que
se quieren visualizar.
Pie de columna (columnFooter)
Lo que se coloque aqu aparecer
siempre debajo del listado de
datos, en todas las pginas.
Pie de Pgina (pageFooter)
Lo que se coloque aqu aparecer
en la parte inferior de todas las
pginas (menos en la ltima). Ideal
para colocar nmeros de pgina.
Pie de la ltima pgina (lastPageFooter)
Es un pie especial, ya que solo aparece en la
parte inferior de la ltima pgina.
Resumen (summary)
Aparece cuando finaliza el listado de
datos (en la ltima pgina) Esta zona se
usa para colocar clculos estadsticos,
como suma de cantidades o cuentas y
promedios, etc... que deban aparecer al
final.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

621 Entidad Clientes | By reycito2011


CONCLUSIN

iReport permite la creacin de informes desde cero, lo que da ms
versatilidad a la hora de disear el listado.

Es necesario indicar la conexin a la base de datos y la consulta SQL
para extraer los datos que aparecern en el informe.

El informe se divide en zonas, y los elementos se colocarn en dichas
zonas segn donde queramos que aparezcan dichos elementos en el
informe final.

Para introducir texto en el informe se usar la opcin texto esttico.

Si se quiere que aparezca un dato de la base de datos, entonces habr
que introducir un campo.

Tambin se pueden colocar lneas, recuadros, imgenes, etc.

Todos los elementos colocados pueden ser modificados a travs de sus
propiedades.


EJERCICIO GUIADO. JAVA. INFORMES DE BASE DE DATOS


Clculos

Es muy habitual que un informe no solo muestre datos de las tablas de la base
de datos, sino que tambin muestre clculos realizados con esos datos.

Para hacer esos clculos se puede usar la potencia de SQL por un lado.
Podemos generar esos clculos directamente en la consulta SQL, con lo cual
solo tendremos que mostrar los resultados en el informe como si fueran otros
campos.

Por otro lado tambin podemos realizar los clculos directamente en el informe.

En esta hoja se ver como crear un informe con clculos. Adems se
aprendern algunos conceptos nuevos en lo que se refiere a presentacin de
datos y uso de las zonas del informe.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

622 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1. CREACIN DE UN INFORME CON CLCULOS


1. Entra en iReport.

2. Vamos a crear un informe desde cero donde aparezca el listado de
servicios realizados. Interesa en principio que aparezca la fecha del
servicio el tipo del servicio y la cantidad cobrada.

Para ello active la opcin Fichero Nuevo Documento.

3. Asigne el nombre informeservicios al informe.

4. Indique ahora que usar la conexin con la base de datos MANEMPSA.
Para ello puede elegir la Conexin con MANEMPSA en el desplegable
de conexiones, en la parte superior derecha de la ventana:




5. Ahora que hemos elegido la conexin, ahora indicaremos la consulta SQL que
nos permita extraer los datos que queremos mostrar en el informe. Para ello,
activa la opcin Datos Consulta de Informe.

6. En la pantalla que aparece debes introducir la siguiente consulta SQL:

select * from servicios order by fecha

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

623 Entidad Clientes | By reycito2011



7. Acepta la pantalla anterior. Ya podemos empezar a disear el informe.
Empezaremos por poner un ttulo. El ttulo ser Listado de Servicios. Agrande
la letra del ttulo y cntrelo.




8. Ahora aadiremos los textos de la cabecera. En la zona de Encabezado
de columna (columnHeader) aadiremos los siguientes cuadros de texto
esttico:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

624 Entidad Clientes | By reycito2011

9. Ahora para definir los datos del listado, tendremos que aadir campos a
la zona del detalle (detail). Debes arrastrar los campos fecha, tipo y
cantidad:




10. La zona del detalle es demasiado grande, as que reduzca su tamao
arrastrando la lnea de separacin:









11. Visualice el listado. IReport le pedir que guarde antes de visualizar.
Guarde el listado con el nombre informeservicios en Mis Documentos.

12. El listado tendr la siguiente forma:

Arrastra la lnea del
detalle.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

625 Entidad Clientes | By reycito2011




13. Observe como la fecha muestra tambin la hora. Antes de continuar,
cambiaremos el formato de la columna de la fecha para que esto no
suceda. Para ello seleccione el campo Fecha:





14. Vamos a modificar una de las propiedades llamada Patrn. Haz clic en
el botn con tres puntos de esta propiedad:




15. Esta propiedad permite cambiar la forma en que se presentan nmeros,
fechas y dems tipos de datos en el informe.

Elige en la zona de categoras la categora Date (Fecha) y luego escoge
el patrn con forma dia/mes/ao:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

626 Entidad Clientes | By reycito2011



Aplica los cambios.

16. Vuelve a visualizar tu listado. Ahora vers como las fechas aparecen
correctamente.

Recuerda esta propiedad, ya que la usars muchas veces. Sobre todo con fechas
y nmeros. En el caso de los nmeros, se puede usar para decidir algunas
caractersticas como los dgitos decimales o si mostrar el punto separador de
miles.


17. Vamos a mejorar el listado aadiendo dos lneas. Una lnea justamente
debajo de la cabecera y otra en la parte del pie de columna
(columnFooter):


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

627 Entidad Clientes | By reycito2011



18. La lnea de la cabecera separar esta de los datos. Por otro lado, la
lnea del pie de columna aparecer en la parte inferior del listado en
todas las pginas. Visualiza el listado:




19. La zona del pie de pgina pageFooter es ideal para colocar en ella el
nmero de pgina del listado. (Tenga en cuenta que el listado puede ser
muy largo y tener varias pginas)

Lo que introduzca en la zona pageFooter aparecer en la parte inferior
de cada pgina en todas las pginas del listado excepto en la ltima
pgina. En el caso de la ltima pgina la zona que hace esta funcin es
la zona llamada lastPageFooter (ltimo pie de pgina)

Para que la zona pageFooter afecte a todas las pginas del informe
incluyendo la ltima, es necesario ocultar la zona lastPageFooter.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

628 Entidad Clientes | By reycito2011


Veamos como se hace esto:

20. Haga clic con el botn derecho del ratn sobre la zona lastPageFooter y
elija Propiedades de banda.





21. Aparecer un cuadro de opciones donde se podr elegir el tamao de la
zona. En nuestro caso indicaremos un cero y aplicaremos. Luego
cerraremos el cuadro de opciones.





22. Se podr observar entonces como hemos ocultado la zona
lastPageFooter. Al hacer esto, la zona pageFooter tendr control sobre
todas las pginas incluyendo la ltima.


23. Ahora arrastra el elemento especial Pgina X de Y desde la librera
hasta el pie de pgina. Observa:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

629 Entidad Clientes | By reycito2011



24. La Librera contiene una serie de campos especiales que muestran
cosas como el nmero de la pgina o la fecha actual. Elementos que
suelen ser muy comunes en los informes.

25. Aprovecha la Librera para agregar en la parte derecha del pie la fecha
actual. Arrastra el elemento Fecha actual a la zona del pie. Entonces
vers como aparece un cuadro donde tendrs que elegir el formato de la
fecha. Elige el formato completo.




26. El pie tiene que haber quedado ms o menos as:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

630 Entidad Clientes | By reycito2011





27. Ahora visualice el informe y observe la parte inferior (si cambia el zoom
al 50% podr tener una vista global del informe):




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

631 Entidad Clientes | By reycito2011


Ver que en la parte inferior aparece el nmero de la pgina y la fecha en el
formato indicado.

28. Supongamos ahora que nos interesa tener una columna IVA en la que
aparezca el 16% de IVA de cada una de las cantidades.
Desgraciadamente, este campo no existe en la tabla servicios, de la que
hemos extrado los datos. Sin embargo, es posible crear este campo
directamente en la consulta SQL realizando el clculo.

Active la opcin Datos Consulta del Informe para acceder a la consulta
que introducimos al principio.



29. Cambie la consulta por la siguiente instruccin SELECT (respete
maysculas y minsculas):

select Fecha, Tipo, Cantidad, Cantidad*0.16 as IVA from
servicios order by fecha





Esta consulta SELECT muestra la Fecha, Tipo y Cantidad de los servicios, pero
adems, ver que realiza un clculo: multiplica el campo Cantidad por 0.16 y le
asigna al resultado del clculo el nombre IVA.

Es decir, se crea un nuevo campo (campo calculado) llamado IVA y creado a
partir del producto del campo Cantidad por 0.16

select Fecha, Tipo, Cantidad, Cantidad*0.16 as IVA from
servicios order by fecha
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

632 Entidad Clientes | By reycito2011







Los campos calculados es una caracterstica del lenguaje SQL que aprovecharemos para
realizar clculos con los campos de las tablas.


30. Pulse Ok y observe la zona de campos. Ver como ha aparecido un
nuevo campo llamado IVA. Tan solo tiene que agregarlo a la zona de
detalle como si fuera un campo ms.




31. Por supuesto, sera interesante aadir un texto esttico en el
encabezado de columnas:




32. Visualice el informe resultante:

Clculo que se realiza
Nombre del campo calculado
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

633 Entidad Clientes | By reycito2011




33. Para hacer otro ejemplo de campos calculados, entre en la consulta del
informe y modifique la instruccin SQL de forma que quede as:

select Fecha, Tipo, Cantidad, Cantidad*0.16 as IVA,
IVA+Cantidad as Total
from servicios order by fecha

En este caso, se est aadiendo otro campo calculado (en rojo) llamado Total. Este
campo es la suma del IVA y la Cantidad. Es decir, es el total con Iva.

34. Al pulsar Ok observar en la zona de campos este nuevo campo.
Aproveche esto para agregar una nueva columna con los totales con iva:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

634 Entidad Clientes | By reycito2011




35. Visualice el informe. Debe tener este aspecto:






36. Hemos aprendido a agregar campos calculados a partir de otros
campos, y aadirlos al listado. Ahora aprenderemos a realizar clculos
de totales, o clculos resumen.

Por ejemplo, sera interesante calcular la suma de todas las cantidades,
todos los IVA y todos los totales ms IVA.

Estos totales suelen aparecer en la parte final del listado. En la zona
llamada Resumen (summary)

37. Empezaremos agregando en la zona summary una lnea corta:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

635 Entidad Clientes | By reycito2011



38. Para agregar un total (una suma) se usa el elemento Total de la Librera.
Haga clic en l y arrstrelo a la zona del resumen.




39. Aparecer un cuadro de dilogo donde tendr que indicar el campo que
quiere sumar. Elija el campo Cantidad y acepte.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

636 Entidad Clientes | By reycito2011




40. Aparecer un nuevo recuadro en el resumen. Colquelo al mismo nivel
que la columna de la cantidad.





41. Haga el mismo proceso para calcular la suma del IVA y del Total. Al
final, el diseo de la zona resumen debe tener el siguiente aspecto:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

637 Entidad Clientes | By reycito2011




42. Los elementos situados en la zona del resumen aparecen al final del
listado. Visualice el informe y observe la parte final del listado.



43. El informe est terminado. Gurdelo y cirrelo.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

638 Entidad Clientes | By reycito2011



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

639 Entidad Clientes | By reycito2011


CONCLUSIN

SQL permite la creacin de campos calculados a partir de otros campos
en una consulta SELECT.

Esta caracterstica es muy til por ejemplo en el caso de los informes, ya
que nos permite mostrar clculos en ellos.

iReport, adems, proporciona la posibilidad de realizar sumas totales de
campos.

Recuerde tambin el uso de las distintas zonas del informe:

- Title Ttulo: Usado para colocar el ttulo del informe. Aparece en la
primera pgina nicamente.

- pageHeader Encabezado de pgina: En el se coloca aquello que deba
aparecer en la parte superior de todas las pginas.

- columnHeader Encabezado de columna: Usado para colocar la
cabecera del listado.

- Detail Detalle: Usado para colocar los datos (campos)

- columnFooter Pie de Columna: En el se coloca aquello que deba
aparecer en la parte inferior del listado en todas las pginas.

- pageFooter Pie de pgina: En esta zona se coloca aquello que deba
aparecer en la parte inferior de todas las pginas (menos la ltima, si
est activado el lastPageFooter) Se usa para colocar el nmero de
pgina.

- lastPageFooter Ultimo pie de pgina: Es el pie de pgina de la ltima
pgina. Si se desactiva, entonces es sustituido por el pageFooter.

- Summary Resumen: Usado para colocar clculos de totales. Aparece
al final del listado.

EJERCICIO GUIADO. JAVA. INFORMES DE BASE DE DATOS


Informes Agrupados

Un informe agrupado se puede definir como varios listados en un mismo
informe. Los elementos de cada listado tienen una caracterstica en comn, o,
dicho de otra forma, pertenecen a un mismo grupo.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

640 Entidad Clientes | By reycito2011

Por ejemplo, si tuviera un listado de trabajadores, podra mostrar dicho listado
agrupado segn profesin, y entonces tendramos el listado de albailes, el
listado de profesores, el listado de policas, el listado de bomberos, etc...

Es decir, el listado de trabajadores se dividira en grupos segn las distintas
profesiones de los trabajadores.

En esta hoja guiada se ver como realizar este tipo de listados.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

641 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1. CREACIN DE UN INFORME AGRUPADO


1. Entra en iReport.

2. Crearemos un informe en el que aparezca el listado de servicios
realizados. Usaremos el mago de informes para hacer este listado.

Para ello active la opcin Fichero Mago de informes.

3. La conexin a usar ser Conexin con MANEMPSA. Y la consulta SQL
ser la siguiente:

select * from servicios order by tipo

(Nota: observe que hemos ordenado la consulta por tipo. Luego ver por
qu)

Pulse el botn Prximo.

4. Los campos a aadir al listado sern: Nmero, Fecha, Tipo y Cantidad.

Pulse el botn Prximo.

5. Ahora ya estamos en el paso tercero del asistente. En este paso tendremos que
indicar la forma de agrupar el listado. En el desplegable grupo 1 indique el
campo tipo. Esto significa que el listado saldr agrupado por tipo de servicio.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

642 Entidad Clientes | By reycito2011


Pulse Prximo.

6. Elija una disposicin Tabulada del tipo Classic_T. Pulse Prximo y Terminar.

7. Aparecer el diseo del informe que acaba de crear. Observe que entre las zonas
tpicas del informe ha aparecido una nueva zona de agrupamiento:




8. Visualice el informe y observe el resultado (al visualizarlo iReport le pedir que
lo guarde. Gurdelo con el nombre serviciosagrupados):

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

643 Entidad Clientes | By reycito2011




Como ve, aparecen varios sub-listados. Un listado con los servicios de electricidad, otro
con los servicios de fontanera, y otro con los servicios de limpieza. Tenemos un
informe en grupos.

NOTA: Es obligatorio que la consulta del informe est ordenada segn el campo por el
que vayamos a agrupar. Esta es la razn por la que la consulta se orden por tipo.

9. Ahora se mejorar un poco el listado que se ha hecho. En primer lugar
modifique el patrn del campo fecha, de forma que aparezca en formato da-
mes-ao:



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

644 Entidad Clientes | By reycito2011



10. Tambin puede resultar interesante modificar el patrn de la Cantidad, de forma
que aparezca con dos decimales:






11. Finalmente asigne el ttulo Listado de Servicios al informe. Este debe tener
ahora el siguiente aspecto al visualizarlo:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

645 Entidad Clientes | By reycito2011




NOTA:

Es posible agregar distintos niveles de agrupamiento a un informe. Usando el
ejemplo del inicio de esta hoja, podramos tener un listado de trabajadores
agrupado por profesiones y por estado civil. En este caso, aparecera un grupo
por cada profesin, y, cada grupo, estara a su vez subdividido en grupos
segn el estado civil.

Por ejemplo, el grupo de bomberos podra tener el siguiente aspecto:

Bomberos

Casados
----
----
Solteros
----
----
Etc...

Para hacer esto basta con indicar varios campos en el paso de agrupamiento
del asistente mago de informes. Pero tenga en cuenta que tendr que ordenar
la consulta SELECT segn dichos campos.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

646 Entidad Clientes | By reycito2011

En el ejemplo de los trabajadores, la consulta podra tener este aspecto:

select * from trabajadores order by profesin, estado

Se anima al alumno que experimente con esta posibilidad.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

647 Entidad Clientes | By reycito2011


CONCLUSIN

Un informe agrupado es aquel en que los registros aparecen en distintos
grupos.

Los elementos de un grupo tienen la misma caracterstica.

Se puede decir que un informe agrupado consiste en una serie de sub-
listados.

Para crear los grupos se toma como referencia el valor de un determinado
campo.

La mejor forma de crear un informe agrupado usando iReport es a travs
del mago de informes, ya que este asistente muestra un paso donde se
puede elegir el campo segn el que se quiere agrupar.

No olvide que cuando quiera agrupar un listado por un campo es
obligatorio que la consulta SELECT del informe ordene el listado por el
campo por el que se quiere agrupar.

EJERCICIO GUIADO. JAVA. INFORMES DE BASE DE DATOS


Conexin con Informes desde Java

Una vez creados los informes con iReport, tendremos que acceder a ellos
desde nuestra aplicacin Java.

En esta hoja guiada veremos los pasos bsicos necesarios para mostrar un
informe desde una aplicacin Java.

Nota: En esta hoja guiada se usar el informe creado en la hoja anterior,
llamado serviciosagrupados.




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

648 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1. CREACIN DEL INFORME COMPILADO


44. Entra en iReport y abra el informe serviciosagrupados (se encontrar en
la carpeta Mis Documentos)

Los ficheros que contienen un informe son ficheros del tipo .jrxml. As
pues, en la carpeta Mis Documentos encontrar el fichero
serviciosagrupados.jrxml, que es el que tiene que abrir.




(Nota: Si le echa un vistazo a la carpeta Mis Documentos, ver tambin un
fichero llamado serviciosagrupados.bak. Este fichero es simplemente una
copia de seguridad que se crea automticamente al guardar el informe.)

45. Vamos a ver el aspecto del informe. Pulse el botn:

Ya sabe que este botn, llamado Ejecutar informe (usando conexin
activa), permite visualizar el informe relleno con los datos de la base de
datos, segn la consulta SQL que haya usado.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

649 Entidad Clientes | By reycito2011





46. Sin embargo, este botn no solo sirve para visualizar el informe final,
sino que adems acta como compilador, generando un fichero del tipo
.jasper.

Los ficheros .jasper son informes compilados, de forma que puedan ser
usados en aplicaciones java.

Cada vez que ha visualizado un informe, ha generado sin darse cuenta
un fichero .jasper, con el nombre del informe que estaba visualizando.
En nuestro ejemplo, acabamos de generar un fichero
serviciosagrupados.jasper

47. Los ficheros .jasper generados se suelen almacenar dentro de la carpeta
del programa iReport, sin embargo, nosotros configuraremos el
programa iReport para que los ficheros compilados se almacenen
directamente en la carpeta Mis Documentos, de forma que estn ms
accesibles.

Para ello, active la opcin Opciones Opciones:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

650 Entidad Clientes | By reycito2011




48. En el cuadro de opciones que aparece active la pestaa Compilador.




49. En el primer recuadro que aparece se tiene que indicar el directorio donde
aparecern los ficheros compilados. Para ello, pulse el botn Explorar y
seleccione la carpeta Mis Documentos.

Si todo va bien, el resultado ser parecido al siguiente:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

651 Entidad Clientes | By reycito2011




50. Pulse el botn Grabar. A partir de ahora cada vez que visualice un informe el
fichero compilado se guardar en la carpeta Mis Documentos. Lo vamos a
comprobar. Vuelva a visualizar su informe:

51. Acuda a la carpeta Mis Documentos y compruebe que en ella hay ahora un
fichero serviciosagrupados.jasper. Este es el fichero del informe compilado.
Este fichero ser el que usar para visualizar informes desde java.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

652 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 2. CONEXIN CON UN INFORME DESDE JAVA


1. Entra en NetBeans y crea un nuevo proyecto Java. El proyecto se
llamar PruebaInformes y contendr un paqueteprincipal. Este paquete
a su vez contendr una ventanaprincipal.



2. Crea la carpeta Base dentro de la carpeta del proyecto y copia en ella la
base de datos MANEMPSA.

3. Prepara tu proyecto para que pueda acceder a la base de datos
MANEMPSA (ya sabes, crear el objeto conexin, sentencia, etc...)

4. Para que nuestro programa sea capaz de presentar informes, crearemos
una carpeta llamada Informes dentro de la carpeta del proyecto. Y
dentro de dicha carpeta copiaremos los ficheros .jasper de los informes
que queremos utilizar. En nuestro caso, copiaremos el fichero
serviciosagrupados.jasper que creamos en el apartado anterior.

Como ve, es algo parecido a lo que hacemos con la base de datos.

As pues crea la carpeta Informes dentro de la carpeta de proyecto y
copia el fichero serviciosagrupados.jasper dentro de ella.

5. Crea un botn en la ventana de tu proyecto. El botn contendr el texto
Informe Agrupado y su nombre ser btnInformeAgrupado.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

653 Entidad Clientes | By reycito2011

6. El objetivo es hacer que aparezca el informe serviciosagrupados cuando
se pulse este botn. Para ello, programe lo siguiente en el
actionPerformed del botn:


Este cdigo le muestra muchos errores, no se preocupe ahora de ellos. En los siguientes
pasos se corregirn. De momento lo que se va a hacer es explicar el cdigo de este
evento:

1. Lo primero que observar es como se usa una variable rutaInforme para almacenar
el camino del informe que queremos mostrar. Observa que dicho informe se
especifica con el fichero .jasper generado con iReport, y que este fichero se
encuentra dentro de la subcarpeta informes.

2. A continuacin viene una lnea donde se crea un objeto informe del tipo
JasperPrint:

JasperPrint informe =
JasperFillManager.fillReport(rutainforme,null,conexin);

3. Esta lnea es la que genera el informe que se va a mostrar. El informe en java es un
objeto del tipo JasperPrint y es creado a travs de otro objeto del tipo
JasperFillManager.

4. Es interesante que observes el uso de un mtodo llamado fillReport (rellenar
informe) que se encarga de rellenar el informe con datos.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

654 Entidad Clientes | By reycito2011


5. Este mtodo necesita tres parmetros:

b. El sitio donde se encuentra el fichero del informe.
c. Los parmetros (Null en nuestro ejemplo. Los parmetros se estudiarn
en prximas hojas guiadas)
d. Y el objeto conexin, que le permite a java acceder a la base de datos
para recoger los datos que se presentarn en el informe.

1. Una vez creado el objeto informe, solo tenemos que presentarlo en pantalla. Los
informes se presentan a travs de un objeto del tipo JasperViewer. Los objetos
JasperViewer son ventanas donde se muestran los informes.

JasperViewer ventanavisor = new
JasperViewer(informe,false);

2. Esta lnea de cdigo crea una ventana llamada ventanavisor donde se muestra el
informe informe. El parmetro false indica que al cerrarse la ventana del informe no
debe acabar el programa. Si este parmetro fuera true, al cerrar la ventana del
informe se cerrara el programa entero (esto no interesa).

3. El objeto ventanavisor es una ventana normal y corriente y puede ser visualizada
con setVisible. Por otro lado, se le asigna el ttulo Informe de servicios con el
mtodo setTitle.

4. Todo este cdigo debe estar rodeado de un try...catch para evitar errores
inesperados.



7. Todos los errores del cdigo se producen debido a que es necesario
indicar los imports correspondientes a las clases JasperPrint,
JasperFillManager, JasperViewer que participan en el cdigo.

Un import es una lnea de cdigo que le dice a java en qu librera debe encontrar la
clase correspondiente.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

655 Entidad Clientes | By reycito2011

Normalmente, al hacer clic sobre la lnea que da el error, aparece el
icono de una bombilla pequea en la parte izquierda de la ventana. Al
hacer clic sobre esta bombilla se nos informa de la librera que hace falta
importar. Ya sabe que basta hacer clic sobre esta librera para que se
aada la instruccin import correspondiente de forma automtica.

Sin embargo, si prueba esto mismo con las lneas errneas del cdigo
anterior, ver que no aparece ninguna bombilla. Esto es debido a que las
libreras donde se encuentran las clases JasperPrint, JasperFillManager
y JasperViewer no vienen incluidas en NetBeans, ya que son clases
pertenecientes al programa iReport. As pues, NetBeans no sabe donde
encontrar estas clases.


8. Para evitar este error, es necesario incluir en el proyecto una serie de libreras
propias del programa iReport. Esto se hace de la siguiente forma:

9. Haga clic con el botn derecho del ratn sobre el apartado Bibliotecas de su
proyecto y luego active la opcin Agregar archivo JAR/carpeta.




10. Debe acudir a la carpeta del programa iReport para buscar en ella las bibliotecas
necesarias. Concretamente, la carpeta donde se encuentran estas bibliotecas es la
siguiente: Archivos de programa JasperSoft iReport-2.0.1 lib

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

656 Entidad Clientes | By reycito2011






52. Los ficheros que contienen las libreras necesarias para este programa son lo
siguientes: commons-collections-2.1, commons-logging-1.0.2 y jasperreports-
2.0.1

Empezaremos aadiendo el fichero commons-collections-2.1. Seleccinelo y
active Abrir:

Archivos de programa JasperSoft iReport-2.0.1 lib
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

657 Entidad Clientes | By reycito2011



53. Observar que se ha agregado el fichero a la zona de bibliotecas:



54. Repita el proceso para agregar los otros dos ficheros necesarios. Al final, su
zona de Bibliotecas debe quedar as (observe los tres ficheros aadidos):

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

658 Entidad Clientes | By reycito2011



55. Gracias a la inclusin de estos ficheros, nuestro proyecto ya dispone de las
libreras de clases que contienen a las clases que necesitamos, que recuerda que
son: JasperPrint, JasperFillManager, JasperViewer

Si ahora haces clic sobre la primera lnea que da error, ver como ahora
NetBeans ya sabe el import que debe aadirse, y por tanto aparecer la bombilla.
Pulse sobre la bombilla:




56. Tiene que agregar el import para la clase JasperFillManager:

net.sf.jasperreports.engine.JasperFillManager

57. Ahora agregue el import para la clase JasperPrint:

net.sf.jasperreports.engine.JasperPrint

58. Y finalmente agregue el import para la clase JasperViewer:

net.sf.jasperreports.view.JasperViewer



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

659 Entidad Clientes | By reycito2011


59. Los errores han desaparecido. Ya puede ejecutar el programa.

60. Si pulsa sobre el botn Informe Agrupado aparecer el informe.

El informe aparece en una ventana (el visor de informes objeto JasperViewer)
que tiene una pequea barra de herramientas. En esta barra podr por ejemplo
imprimir el informe, o cambiar su zoom, entre otras cosas:







61. Tal como se ha programado este botn, al pulsarse se visualiza el informe antes
de que el usuario decida imprimirlo o no. En algunos casos, puede ser
interesante que el informe se imprima directamente sin que se visualice antes.

Veamos como hacer esto. Primero aada otro botn btnImprimirDirectamente a
su ventana:



Ventana visor de informes (JasperViewer)
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

660 Entidad Clientes | By reycito2011



62. Ahora programe dentro de l lo siguiente:





El cdigo es similar al anterior, solo que se elimina todo uso del objeto JasperViewer
(ventana visualizadora) ya que el informe ya no debe salir en pantalla.

Adems se aade una nueva lnea:

JasperPrintManager.printReport(informe,true);

Esta lnea usa un objeto llamado JasperPrintManager que se encarga de imprimir el
informe informe usando el mtodo printReport.

Si el segundo parmetro tiene el valor true, entonces significa que aparecer el cuadro
de dilogo de impresin:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

661 Entidad Clientes | By reycito2011



Si estuviera a false, este cuadro de dilogo no aparecera y el informe se enviara
directamente a la impresora configurada por defecto en el ordenador.

En nuestro caso, al tener el valor true, este cuadro s aparecer.

63. Ejecute el programa y pruebe el nuevo botn. No hace falta que imprima el
informe.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

662 Entidad Clientes | By reycito2011

CONCLUSIN

Para poder imprimir un informe creado con iReport desde una aplicacin
Java es necesario agregar ciertas libreras pertenecientes al programa
iReport:

commons-collections-2.1, commons-logging-1.0.2 y jasperreports-2.0.1

Una vez agregadas estas libreras, el proceso para imprimir un informe es
el siguiente:

- Crear un objeto del tipo JasperPrint (el informe)
- Crear un objeto visor (JasperViewer) que permita visualizar el informe.
- O bien imprimir directamente el informe con un objeto
JasperPrintManager.


EJERCICIO GUIADO. JAVA. INFORMES CON PARMETROS


Conexin con Informes desde Java: Parmetros

En la hoja guiada anterior se conect una aplicacin Java con un informe
realizado con iReport. La aplicacin contaba con un botn que al ser pulsado
mostraba el informe.

Hay que tener en cuenta que los datos que se muestran en el informe
dependen del contenido de la base de datos. Es decir, si se aaden nuevos
registros a las tablas, estos registros aparecern en el informe (no ser
necesario modificarlo de alguna forma)

Sin embargo, esta forma de trabajar puede ser poco interesante, ya que el
usuario no tiene ningn control sobre el informe que se muestra. En la hoja
guiada anterior el informe mostraba todos los servicios agrupados por tipo,
pero, y si el usuario quisiera en un determinado momento que solo se
mostraran los servicios anteriores a una fecha, o que se mostraran los servicios
que costaran ms de una cantidad, etc...

El problema est en que la consulta SQL del informe es una consulta fija, y
siempre sacar los mismos datos. El usuario de nuestro programa no tiene
forma de modificar esa consulta para cambiar los datos deben aparecer en el
informe.

Para poder hacer esto, es necesario usar parmetros en la consulta SQL del
informe. Un parmetro se podra definir como dato de la consulta que no est
definido an. Es necesario definir ese dato antes de ejecutar la consulta y
extraer los datos que se mostrarn.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

663 Entidad Clientes | By reycito2011

Puede ser el usuario de nuestro programa el que aporte ese dato que le falta a
la consulta, de manera que as tenga cierto control sobre la informacin que
aparece en el listado.

En esta hoja se ver un ejercicio paso a paso de uso de parmetros en la
consulta de informe, y de esta manera entender la utilidad de esta
caracterstica.






21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

664 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 1. CREACIN DE UN INFORME CON
PARMETROS


64. Entra en iReport y abre el informe llamado serviciosjuan, realizado en
una de las ltimas hojas guiadas. Este informe, concretamente, fue
construido desde cero y mostraba los servicios del trabajador Juan
Prez:



65. Visualzalo para recordar su aspecto:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

665 Entidad Clientes | By reycito2011




66. Este informe tiene un gran diseo pero est muy limitado, ya que solo es
capaz de mostrar el listado de servicios realizados por el trabajador Juan
Prez (DNI 12.321.567-B) Si quisiramos sacar el listado de servicios de
otro trabajador, este informe no nos servira.

Es necesario hacer que este informe sea ms verstil, que sea capaz de
mostrar el listado de servicios de cualquier trabajador. Para ello, ser
necesario crear un parmetro en la consulta SQL.

67. Acceda a la consulta del informe a travs de la opcin Datos Consulta
de informe y obsrvela:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

666 Entidad Clientes | By reycito2011

La consulta SQL extrae informacin de aquellos servicios que hayan sido realizados
por el trabajador con DNI 12.321.567-B.


68. Cambie la consulta para que quede as:



Lo que acaba de aadir es un parmetro llamado DNI. Observe su estructura:

$P{nombredelparmetro}

En nuestro caso el nombre que le hemos dado al parmetro es DNI, por lo tanto el
parmetro es:

$P{DNI}

Este parmetro indica que el DNI no est definido an. Ser el usuario el
que introduzca el DNI segn el cual habr que consultar en la base de
datos.


69. Pulse OK. Cada vez que use un parmetro hay que definirlo en el
programa iReport. Esto se hace en la zona de campos. Observa que
tenemos tambin una zona de parmetros:




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

667 Entidad Clientes | By reycito2011

70. En la carpeta de parmetros haz clic con el botn derecho del ratn e
indica la opcin Add Parameter para aadir un nuevo parmetro:




71. En la ventana que aparece debes indicar el nombre que le has dado al
parmetro. En nuestro caso, el nombre asignado es DNI:






72. Ahora ya tiene definido un parmetro que se corresponde con el DNI del
trabajador. El usuario introducir ese DNI y ser sustituido en la consulta
SQL. Si intenta visualizar el informe, no podr ver nada, ya que el
parmetro no tiene ahora ningn valor. Al visualizar el informe aparecer
el siguiente mensaje:


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

668 Entidad Clientes | By reycito2011



73. En cualquier caso, se tiene que haber generado el fichero .jasper
correspondiente. Si el iReport sigue configurado tal como se hizo en la
hoja guiada anterior, dicho fichero se tiene que haber guardado en Mis
Documentos con el nombre serviciosjuan.jasper. Este fichero lo usar en
el siguiente ejercicio.


74. Cierre iReport, guarde los cambios y pase al siguiente ejercicio.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

669 Entidad Clientes | By reycito2011

EJERCICIO GUIADO N 2. USO DE PARMETROS DE UN INFORME
DESDE JAVA


1. Abra la aplicacin Java que realiz en la hoja guiada anterior. Aada en
su ventana un nuevo botn y un cuadro de texto.

El botn se llamar btnServiciosTrabajador y el cuadro de texto se
llamar txtDNI.




2. El objetivo es hacer que el usuario introduzca un DNI en el cuadro de
texto DNI y que al pulsar el botn Servicios del Trabajador aparezca un
informe con el listado de servicios del trabajador con el DNI introducido.

Para hacer esto es necesario que el DNI introducido en el cuadro de
texto txtDNI se traslade directamente al informe creado anteriormente y
se coloque en la posicin del parmetro. Entonces la consulta SQL del
informe se completar y se podr rellenar el informe con los datos
correctos.

3. De momento copie el fichero serviciosjuan.jasper dentro de la carpeta
informes de su carpeta de proyecto.

4. Nota Importante: Recuerde que el informe contiene una imagen
proporcionada por el fichero nenfares.jpg. Para que el informe funcione
correctamente es necesario que copie este fichero directamente en la
carpeta de su proyecto (no dentro de la carpeta informes)

5. Ahora programe el siguiente cdigo en el actionPerformed del botn
Servicios Trabajadores.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

670 Entidad Clientes | By reycito2011



Estudiemos con detenimiento este cdigo.

En l ver dos lneas nuevas en las que se definen los valores de los
parmetros:

Map parametros = new HashMap();
parametros.put(DNI,txtDNI.getText());

En la primera de estas dos lneas se define un objeto de tipo Map. Este objeto
contendr el nombre de cada parmetro que usar y el valor de dicho
parmetro.

Observe la segunda lnea, en ella se define el parmetro llamado DNI y se le
asigna a l el valor del cuadro de texto del DNI, es decir, el DNI que haya
escrito el usuario.

Si existieran ms parmetros habra que definirlos de la misma forma, por
ejemplo:

parametros.put(sueldo,txtSueldo.getText());
parametros.put(codigo,A-54);

En este cdigo ficticio se crea un parmetro sueldo al que se le asigna el valor
de un cuadro de texto txtSueldo. Y se crea un parmetro codigo al que se le
asigna el valor A-54.

En nuestro caso solo necesitamos usar un parmetro llamado DNI. Hay que
tener en cuenta que el nombre del parmetro debe ser el mismo que el nombre
usado en iReport.



La siguiente lnea es la que crea el objeto informe (JasperPrint) Esta lnea crea
el informe a partir del fichero de informe compilado serviciosjuan.jasper, a partir
de la base de datos (representada por el objeto conexin) y lo ms interesante
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

671 Entidad Clientes | By reycito2011

ahora es que se indica el conjunto de parmetros a travs del objeto parametro
creado antes.

JasperPrint informe =
JasperFillManager.fillReport(rutaInforme,parametros,conexio
n);

Cuando el informe que se va a mostrar no tiene parmetros, entonces se usa el
valor null, en caso contrario, se usa el objeto parmetro (Map)


El resto del cdigo es igual que los anteriores, se crea el visor de informe
conteniendo el informe y se muestra en pantalla.


6. Ejecute el programa y pruebe a introducir un DNI existente en el cuadro
de texto del DNI. Si escribi correctamente el DNI, podr ver el listado
de servicios realizados por el trabajador con dicho DNI.

Como puede observar, ahora ya puede visualizar los datos de los
servicios de cualquier trabajador y no solo del trabajador Juan Prez.

El uso de parmetros en los informes da potencia y versatilidad a las
aplicaciones, y es algo muy usado.




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

672 Entidad Clientes | By reycito2011

Trabajos realizados por Ana Ruiz



NOTA

En los ejemplos guiados que se acaban de proponer, se usa una consulta SQL
de informe que contiene un parmetro equivalente a un dato. Concretamente, a
un DNI. Este dato forma parte de una condicin. Observa la consulta SELECT
del informe que hemos usado:



select * from trabajadores, servicios
where trabajadores.dni=servicios.dni and
trabajadores.dni=$P{DNI}
order by servicios.fecha



En este caso, el DNI ser proporcionado por la aplicacin java y la condicin se
completar.

Sin embargo, hay que indicar que tambin se pueden crear parmetros que
sustituyan a una condicin completa, en vez de a un solo dato. Observa el
siguiente ejemplo:

select * from trabajadores, servicios
where trabajadores.dni=servicios.dni and $P!{COND}
order by servicios.fecha

En este caso, el parmetro se llama COND y no sustituye a un simple dato,
sino que sustituye a toda la condicin. En este caso, la aplicacin java mandar
una cadena que tenga forma de condicin SQL, como por ejemplo:
trabajadores.sueldo > 200, que ser reemplazada en el lugar del
parmetro.

Para que lo vea claro, el cdigo a usar en la aplicacin java para dar valor al
parmetro podra ser como sigue:

Map parametros = new HashMap();
parametros.put(COND, trabajadores.sueldo>200);

Observa que el valor del parmetro es una condicin entera.

Cuando se quiera usar un parmetro que represente a un dato, se usar la
siguiente sintaxis:

$P{nombreparmetro}

Condicin

parmetro
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

673 Entidad Clientes | By reycito2011

Cuando se quiera usar un parmetro que represente a una condicin, se usar
la siguiente sintaxis:

$P!{nombreparmetro}

(Observa el uso de la admiracin !)


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

674 Entidad Clientes | By reycito2011


CONCLUSIN

Cuando un informe tiene una instruccin SQL invariable, siempre
mostrar los mismos datos.

Puede resultar interesante que parte de la instruccin SQL del informe
pueda variar, de forma que se pueda extraer distinta informacin segn el
dato que vara. Estos datos variantes se denominan parmetros.

Un parmetro puede referirse a un dato concreto, o a una condicin.

Si el parmetro se refiere a un dato concreto, entonces tiene la siguiente
forma:

$P{nombre}

Si el parmetro se refiere a una condicin, entonces tiene la siguiente
forma:

$P!{nombre}

El parmetro debe ser sustituido por un valor que es proporcionado
desde la aplicacin java, y es entonces cuando la instruccin SQL se
completa y se ejecuta.

En la aplicacin java es necesario crear un objeto de tipo Map que
contenga los distintos parmetros con los valores de cada uno para luego
enviar este objeto al informe que se quiere mostrar.

El uso de parmetros en informes hace que estos sean mucho ms
verstiles y que el programa tenga ms posibilidades.

EJERCICIO GUIADO. JAVA. CARPETA DISTRIBUIBLE


Distribucin e Instalacin de programas en Java

Una vez que se ha finalizado el programa, debemos prepararlo para la
instalacin en el ordenador del cliente. Para ello, es necesario tener en cuenta
todos aquellos ficheros externos que han sido necesarios para la programacin
de la aplicacin: base de datos, imgenes, informes, etc...

A continuacin se indican las cosas a tener en cuenta a la hora de realizar una
distribucin de nuestro proyecto.


1. En primer lugar es necesario pulsar el botn Limpiar y construir proyecto
principal. Este botn compila el programa y crea una carpeta llamada
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

675 Entidad Clientes | By reycito2011

dist dentro de la carpeta del proyecto, la cual ser la carpeta
distribuible.




(Si hubiera un error de compilacin el proceso se detendra y aparecera un mensaje
de error)


2. Si realiza esta operacin con alguno de sus proyectos, puede acudir a la
carpeta del proyecto y observar la existencia de la carpeta dist:






3. Entre dentro de esta carpeta y observe su contenido:




4. Observar la existencia de un fichero con extensin .jar. Este fichero se
puede decir que es el ejecutable del programa.

El fichero .jar contiene todas las clases que ha programado en su
proyecto.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

676 Entidad Clientes | By reycito2011

Debe recordar que los programas java pueden ejecutarse en cualquier
entorno. Por ello, los ejecutables java no tienen una extensin .exe la
cual es propia de los entornos Windows.

Para que un ejecutable .jar pueda ser ejecutado en un determinado
sistema, debe estar instalado en l la mquina virtual de java.


5. Aparte del fichero ejecutable (.jar) el cual tendr el nombre del proyecto,
ver tambin una carpeta lib. Esta carpeta contendr aquellas libreras
adicionales que se hayan incluido en el proyecto.

6. Bases de datos.

Si su programa usa una base de datos, entonces ser necesario copiar
dicha base de datos en la carpeta del distribuible.

Si suele crear una carpeta para la base de datos, entonces copie la
carpeta con la base de datos en la carpeta distribuible:





7. Imgenes, Iconos.

Si est usando imgenes en su programa (para la presentacin, los
iconos de los botones de las barras de herramientas, etc.) tendr que
introducir los ficheros de estas imgenes dentro de la carpeta
distribuible.

Si es ordenado, todas estas imgenes estarn dentro de una misma
carpeta (llamada por ejemplo imgenes) As pues, copie la carpeta que
contiene las imgenes que est usando dentro la carpeta distribuible:


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

677 Entidad Clientes | By reycito2011





8. Informes.

Si su programa usa informes, es necesario que los ficheros de estos
estn dentro de la carpeta del distribuible.

Los ficheros de informes necesarios para el funcionamiento del
programa son los ficheros compilados .jasper. Los dems no son
necesarios incluirlos.

Estos ficheros estarn normalmente dentro de una carpeta llamada
Informes, si es usted ordenado. En ese caso, copie la carpeta con los
informes dentro de la carpeta del distribuible, la cual quedara ahora as:


9. Imgenes de informes.

Si los informes del programa usan imgenes, la situacin de estas en la
carpeta distribuible depende de la forma en que haya configurado dichas
imgenes en el iReport.

Normalmente, al crear una imagen en el informe, asignamos
simplemente el nombre del fichero de imagen, suponiendo que la
imagen se encontrar en la misma carpeta que el informe:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

678 Entidad Clientes | By reycito2011










10. Si estamos ante este caso, para que funcione los informes con imgenes de su
programa es necesario que introduzca las imgenes de los informes directamente
en la carpeta distribuible. En nuestro ejemplo la carpeta distribuible quedara as:

En este ejemplo, el informe usa un fichero de
imagen llamado logo.jpg que se encuentra en
la misma carpeta que donde se ha guardado el
informe.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

679 Entidad Clientes | By reycito2011






11. Sin embargo, para mantener una cierta organizacin de la carpeta
distribuible, sera interesante que las imgenes de los informes
estuvieran tambin dentro de la carpeta Imgenes. Si quisiera hacer
esto, tendra que modificar sus informes con imgenes de forma que se
indicara la carpeta donde estar cada imagen. En nuestro ejemplo, la
imagen del informe se tendra que haber configurado as:



Se indica que las imagen logo.jpg
estar dentro de una subcarpeta
Imgenes.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

680 Entidad Clientes | By reycito2011




12. Si modifica sus informes con imgenes de esta forma y los recompila, entonces
podr organizar su carpeta distribuible de esta manera:












13. Una vez incluidos todos estos elementos ya tendremos la carpeta
distribuible completada.

Solo tiene que copiar la carpeta dist en un CD, USB o disquete para
trasladarla al ordenador del cliente. Si quiere, puede cambiarle el
nombre a dicha carpeta.

Antes de hacer esto, se recomienda que compruebe que el programa
funciona, ejecutando el fichero .jar de dicha carpeta. Compruebe que la
ubicacin de la base de datos, los informes y las imgenes es la
correcta.


14. Para la instalacin del programa en el ordenador del cliente, solo tiene
que copiar la carpeta distribuible en el disco duro del ordenador del
cliente.

Se recomienda que lleve la mquina virtual de java propia del sistema
operativo del cliente por si este no la tuviera instalada en su ordenador.
Si este fuera el caso, se tendra que instalar para que el proyecto
pudiera ejecutarse.



La carpeta Informes contiene los .jasper
La carpeta Imagenes contiene todas las
imgenes del programa as como las
imgenes usadas por los informes.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

681 Entidad Clientes | By reycito2011


CONCLUSIN

NetBeans permite crear una carpeta llamada dist la cual ser la que
copiaremos en el ordenador del cliente.

Basta que el cliente tenga instalada la mquina virtual de java para que
nuestro proyecto funcione.

La instalacin consistir bsicamente en copiar la carpeta dist al
ordenador del cliente, y en instalar la mquina virtual de java en el caso
de que el cliente no la tenga instalada.

A la hora de crear la carpeta dist debe tener en cuenta que debe aadir la
base de datos, los informes y las imgenes del proyecto, si es que este
usa alguno de dichos elementos.

EJERCICIO GUIADO. JAVA. INSTALABLE.


Instalacin de programas Java

Se ha visto en la hoja guiada anterior que para trasladar el programa java
realizado al ordenador del cliente basta con crear una carpeta distribuible.
Esta carpeta contiene el fichero ejecutable .jar que permite ejecutar el
programa.

El ordenador del cliente debe tener instalada la mquina virtual de java para
que nuestro programa funcione. Una vez instalada la mquina virtual de java en
el ordenador del cliente, basta con copiar la carpeta distribuible en su disco
duro.

Aunque este proceso es muy sencillo, puede suceder que el cliente no sea
capaz de realizarlo, en el caso de que carezca de conocimientos informticos
bsicos. En este caso, podra ser interesante automatizar la instalacin del
programa a travs de un fichero de instalacin.

En esta hoja guiada se ver como crear un instalable para un programa java,
usando un programa llamado iZpack.


Qu es IZPACK

IZPack es una aplicacin que nos permite crear un fichero de instalacin a
partir de una aplicacin escrita en java. Esto nos permite que nuestras
aplicaciones Java sean ms fciles de distribuir e instalar.

IZPack crea un fichero .jar, que contiene todos los ficheros necesarios del
programa. Basta con ejecutar este fichero para que el programa java que ha
creado se instale.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

682 Entidad Clientes | By reycito2011


El programa IZPack se proporciona en la carpeta Herramientas de la carpeta
compartida del curso, aunque puedes bajarte la ltima versin de forma gratuita
desde esta pgina web:

http://www.izforge.com/izpack/

Antes de empezar con esta hoja guiada instala el programa IZPack en tu
ordenador.

El programa se instalar en la carpeta Archivos de Programa/Izpack, a no ser
que se escoja otro lugar. Dentro de la carpeta Izpack encontrar otra carpeta
llamada Bin, y dentro de esta encontrar un fichero .bat llamado compile que
ser el que use para crear los instalables.




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

683 Entidad Clientes | By reycito2011

Creacin de un Instalable con IZPack. PREPARACIN.


1. Lo primero que debes hacer es crear la carpeta Distribuible (dist) de tu
programa si es que no la has creado ya.

Para ello debes abrir tu proyecto en NetBeans y seguir los pasos que se indicaron en
la hoja guiada anterior.

2. Una vez creada la carpeta del Distribuible, crea un fichero usando el
Bloc de Notas llamado Licencia.txt. Este fichero debe contener la
licencia de uso del programa. Este fichero lo guardars en la carpeta
Distribuible.

3. Ahora crea usando el Bloc de Notas un fichero llamado Leeme.txt. Aqu
introducirs algn comentario sobre tu proyecto que consideres til para
el cliente. Por ejemplo datos de contacto (telfono, email), informacin
sobre la versin del programa o cualquier otra informacin que
consideres interesante. Este fichero tambin lo guardars en la carpeta
Distribuible.

4. Busca un icono para tu programa y almacnalo tambin en la carpeta
del Distribuible. Este fichero ser del tipo ico (fichero de icono) y se
guardar con el nombre icono.ico en la carpeta del Distribuible.

5. Una vez creados estos dos ficheros de texto, tiene que crear un nuevo
fichero llamado install.xml. Este fichero lo crear usando el Bloc de
Notas en la carpeta Distribuible.

El contenido de este fichero estar escrito en un lenguaje llamado XML y ser el
siguiente (no se preocupe si no entiende el contenido, solo fjese en los textos
remarcados):



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

684 Entidad Clientes | By reycito2011


<?xml version="1.0" encoding="iso-8859-1" standalone="yes"
?>

<installation version="1.0">

<info>
<appname>Nombre del Programa</appname>
<appversion>Versin</appversion>
<authors>
<author name="Juan Prez"
email="juanperez@hotmail.com"/>
</authors>
<url>http://www.mipagina.es/</url>
</info>


<guiprefs width="640" height="480" resizable="no"/>


<locale>
<langpack iso3="spa"/>
</locale>

<native type="izpack" name="ShellLink.dll" />


<resources>
<res id="LicencePanel.licence" src="Licencia.txt"/>
<res id="InfoPanel.info" src="Leeme.txt"/>
<res src="shortcutSpec.xml" id="shortcutSpec.xml"/>
</resources>


<panels>
<panel classname="HelloPanel"/>
<panel classname="InfoPanel"/>
<panel classname="LicencePanel"/>
<panel classname="TargetPanel"/>
<panel classname="PacksPanel"/>
<panel classname="InstallPanel"/>
<panel classname="ShortcutPanel" />
<panel classname="SimpleFinishPanel"/>
</panels>

<packs>
<pack name="Ficheros del Programa" required="yes">
<description>Ficheros y Carpetas del
Programa</description>
<file src="lib" targetdir="$INSTALL_PATH"/>
<file src="base" targetdir="$INSTALL_PATH"/>
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

685 Entidad Clientes | By reycito2011

<file src="informes"
targetdir="$INSTALL_PATH"/>
<file src="imagenes"
targetdir="$INSTALL_PATH"/>
<file src="gestion.jar"
targetdir="$INSTALL_PATH"/>
<file src="icono.ico"
targetdir="$INSTALL_PATH"/>
</pack>
</packs>

</installation>


6. El fichero install.xml que acaba de crear en el punto anterior es siempre
igual. Solo tiene que cambiar una serie de datos (los marcados en
verde), tal como se indica a continuacin:

- Datos del programador.

En la primera parte del fichero se indican los datos del
programador y del programa. Observe:



<info>
<appname>Nombre del Programa</appname>
<appversion>Versin</appversion>
<authors>
<author name="Juan Prez"
email="juanperez@hotmail.com"/>
</authors>
<url>http://www.mipagina.es/</url>
</info>







- Carpetas de tu programa.

En la parte final del fichero tendrs que indicar las carpetas que forman tu programa
(es decir las carpetas que contiene la carpeta distribuible) Observa:


Pon aqu el nombre de tu
programa.
Escribe aqu tu nombre,

y tu email
Y tu pgina web
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

686 Entidad Clientes | By reycito2011


<packs>
<pack name="Ficheros del Programa" required="yes">
<description>Ficheros y Carpetas del
Programa</description>
<file src="lib" targetdir="$INSTALL_PATH"/>
<file src="base" targetdir="$INSTALL_PATH"/>
<file src="informes"
targetdir="$INSTALL_PATH"/>
<file src="imagenes"
targetdir="$INSTALL_PATH"/>
<file src="gestion.jar"
targetdir="$INSTALL_PATH"/>
<file src="icono.ico"
targetdir="$INSTALL_PATH"/>
</pack>
</packs>









En este ejemplo se supone que la carpeta
distribuible (dist) contiene:

- Una carpeta de librera (lib)
- Una carpeta para la base de
datos (base)
- - Una carpeta para los informes
(informes)
- Una carpeta para las imgenes
(imgenes)

Usted tendr que indicar el nombre que le
haya dado a sus subcarpetas.
Tendr que indicar tambin el nombre
del fichero executable de su programa, el
cual se encuentra tambin dentro de la
carpeta distribuible. En este ejemplo se
supone que el fichero se llama
gestion.jar. Escriba usted el nombre de
su programa.
Y este es el fichero de icono que ha
introducido en la carpeta distribuible.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

687 Entidad Clientes | By reycito2011

7. Ahora tiene que aadir un nuevo fichero dentro de la carpeta Distribuible
que configura la creacin de accesos directos en el men inicio cuando
el programa se instala en Windows. Este fichero se llamar
shortcutSpec.xml.

Este fichero tiene el siguiente contenido (no es necesario que lo
entienda, solo fjese en los elementos resaltados):




<?xml version="1.0" encoding="ISO-8859-1"?>

<shortcuts>

<programGroup defaultName="Nombre del Programa"
location="startMenu" />
<shortcut name="Nombre del Acceso Directo"
target="$INSTALL_PATH\gestion.jar"
workingDirectory="$INSTALL_PATH"
iconFile="$INSTALL_PATH\icono.ico"
programGroup="yes"
desktop="yes"
startMenu="no"
/>


<shortcut name="Desinstalar Taller Mecnico"

target="$INSTALL_PATH\uninstaller\uninstaller.jar"
workingDirectory="$INSTALL_PATH"
iconFile="$INSTALL_PATH\icono.ico"
startMenu="no"
programGroup="yes"
/>
</shortcuts>





8. Debes crear este fichero con el contenido anterior tal cual. Siempre es
igual. Solo tienes que variar los elementos seleccionados en verde tal
como se indica a continuacin:




<programGroup defaultName="Nombre del Programa"
location="startMenu" />
<shortcut name="Nombre del Acceso Directo"
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

688 Entidad Clientes | By reycito2011

target="$INSTALL_PATH\gestion.jar"
workingDirectory="$INSTALL_PATH"
iconFile="$INSTALL_PATH\icono.ico"
programGroup="yes"
desktop="yes"
startMenu="no"
/>






<shortcut name="Desinstalar Taller Mecnico"

target="$INSTALL_PATH\uninstaller\uninstaller.jar"
workingDirectory="$INSTALL_PATH"
iconFile="$INSTALL_PATH\icono.ico"
startMenu="no"
programGroup="yes"
/>
</shortcuts>









En la parte inicial debes indicar el nombre de
tu programa, el nombre que le quieras dar al
acceso directo, el fichero ejecutable .jar de tu
programa (aqu suponemos que se llama
gestion.jar, tu tendrs que averiguar como se
llama el tuyo) y el nombre del fichero de icono.
Esta parte crea un icono para desinstalar el
programa. Debes indicar el nombre que le
quieres dar a este acceso directo.

Aqu lo hemos nombrado Desinstalar Taller
Mecnico, porque el programa gestiona un
taller. En vuestro caso tendris que indicar el
nombre adecuado segn vuestro programa.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

689 Entidad Clientes | By reycito2011

Creacin de un Instalable con IZPack. GENERACIN DEL INSTALABLE.


1. Una vez realizados los pasos anteriores (siempre son los mismos) hay
que generar el fichero Instalable. Para ello debes entrar en el smbolo
del sistema.




2. Debes acceder a la carpeta del programa IZPack. Para ello, debes
ejecutar el siguiente comando MS-DOS:

CD C:\ARCHIVOS DE PROGRAMA\IZPACK

El resultado ser que acceders a la carpeta del programa IZPACK:






3. Una vez dentro de la carpeta del programa IzPack, debes ejecutar el
siguiente comando:

bin\compile camino\carpeta\install.xml -b
camino\carpeta

Donde camino\carpeta es el camino de la carpeta distribuible de tu
proyecto.

Por ejemplo, supongamos que tienes la carpeta distribuible llamada dist
en una carpeta llamada proyectos en el disco duro. (c:\proyectos\dist)
Entonces tendras que indicar el siguiente comando para crear el
instalable:

bin\compile c:\proyectos\dist\install.xml -b
c:\proyectos\dist

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

690 Entidad Clientes | By reycito2011


4. Al ejecutar este comando, se generar un fichero llamado install.jar
dentro de la carpeta distribuible. Este es el fichero de instalacin.

5. Si ejecuta este fichero aparecer un programa de instalacin que le
guiar a travs de varios pasos por la instalacin de su programa. El
resultado ser que instala su programa en el men inicio e incluso, si
activa la opcin correspondiente durante la instalacin, se crear un
acceso directo en el escritorio a su programa.


Creacin de un Instalable con IZPack. DISTRIBUCIN DEL INSTALABLE.


1. Una vez creada la carpeta de distribucin con el fichero install.jar dentro
de ella, solo hay que guardar esta carpeta en un CD y entregrselo al
cliente.

2. El cliente solo tiene que introducir el CD, entrar dentro de l y ejecutar
con un doble clic el fichero de instalacin install.jar. Y el programa se
instalar automticamente.

3. Es necesario que el cliente tenga instalada la mquina virtual de java en
su ordenador para que la instalacin sea posible. Por eso es
recomendable incluir en el CD la mquina virtual de java para que el
usuario pueda instalarla tambin antes de instalar su programa.

















21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

691 Entidad Clientes | By reycito2011


CONCLUSIN

La distribucin de un programa java es tan sencilla como copiar la
carpeta distribuible dist en el ordenador del cliente.

Sin embargo, si el cliente carece de conocimientos bsicos de informtica
podemos crear un fichero de instalacin dentro de la carpeta distribuible
para que el usuario solo tenga que entrar dentro de ella y hacer doble clic
sobre el fichero de instalacin.

Para generar el fichero de instalacin, es necesario usar un programa
llamado IZPACK.

Se introducirn varios ficheros dentro de la carpeta distribuible,
necesarios para la creacin del instalable, y luego se generar el
instalador.

Una vez creado el instalador dentro de la carpeta distribuible, esta se
copiar en un CD y se pasar al cliente. Es recomendable que el CD
contenga la mquina virtual de java para que el cliente tambin la pueda
instalar.

Hay que tener en cuenta que si el cliente no tiene instalada la mquina
virtual de java no se podr realizar la instalacin del programa.

METODOLOGA DE LA PROGRAMACIN

JAVA


PRIMEROS PROGRAMAS

Ejercicio 1

Realice un programa en java con las siguientes caractersticas:

La ventana principal tendr los siguientes elementos:

- Una etiqueta que contenga su nombre.
Nombre de la etiqueta: etiNombre
- Una etiqueta que contenga su ciudad.
Nombre de la etiqueta: etiCiudad
- Un botn con el texto Ocultar Nombre.
Nombre del botn: btnOcultarNombre
- Un botn con el texto Visualizar Nombre.
Nombre del botn: btnVisuNombre
- Un botn con el texto Ocultar Ciudad.
Nombre del botn: btnOcultarNombre
- Un botn con el texto Visualizar Ciudad.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

692 Entidad Clientes | By reycito2011

Nombre del botn: btnVisuCiudad

El funcionamiento del programa ser el siguiente:

- Cuando se pulse el botn btnOcultarNombre, se debe ocultar la etiqueta
etiNombre.
- Cuando se pulse el botn btnVisuNombre, se debe visualizar la etiqueta
etiNombre.
- Cuando se pulse el botn btnOcultarCiudad, se debe ocultar la etiqueta
etiCiudad.
- Cuando se pulse el botn btnVisuCiudad, se debe visualizar la etiqueta
etiCiudad.

Para hacer esto debe programar el evento actionPerformed de cada botn.

Usar el mtodo setVisible de cada etiqueta para visualizarlas u ocultarlas.


Ejercicio 2

Crear un programa java cuya ventana principal contenga los siguientes
componentes:

- Un cuadro de texto. El nombre ser txtTexto.
- Una etiqueta vaca (sin texto dentro). El nombre ser etiTexto1.
- Otra etiqueta vaca (sin texto dentro). El nombre ser etiTexto2.
- Un botn con el texto Traspasa 1. El nombre ser btnTraspasa1.
- Un botn con el texto Traspasa 2. El nombre ser btnTraspasa2.

El programa funcionar de la siguiente forma:

- Cuando el usuario pulse el botn Traspasa 1, lo que se haya escrito
dentro del cuadro de texto se copiar dentro de la etiqueta 1.
- Cuando el usuario pulse el botn Traspasa 2, lo que se haya escrito
dentro del cuadro de texto se copiar dentro de la etiqueta 2.

Para hacer esto programar el evento actionPerformed de cada botn.

Usar el mtodo setText para situar el texto en la etiqueta, y getText para
recoger el texto del cuadro de texto.


Ejercicio 3

Se pide que realice un programa en java cuya ventana principal incluya los
siguientes componentes:

- Un cuadro de texto llamado txtTexto.
- Una etiqueta vaca llamada etiTexto.
- Un botn con el texto Vaciar llamado btnVaciar.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

693 Entidad Clientes | By reycito2011



El programa funcionar de la siguiente forma:

- Cuando el usuario escriba en el cuadro de texto txtTexto, lo que escriba
pasar inmediatamente a la etiqueta etiTexto. (Tendr que programar el
evento keyPressed del cuadro de texto)

- Cuando el usuario pulse el botn Vaciar el texto contenido en el cuadro
de texto y en la etiqueta se borrar. (Tendr que programar el evento
actionPerformed)


Tendr que usar el mtodo setText para colocar texto en la etiqueta y usar el
mtodo getText para recoger el texto escrito en el cuadro de texto.



Ejercicio 4

Se pide que realice un programa en java cuya ventana principal contenga los
siguientes elementos:

- Un cuadro de texto llamado txtNombre.
- Un cuadro de texto llamado txtCiudad.
- Una etiqueta llamada txtFrase.
- Un botn con el texto Aceptar llamado btnAceptar.
- Un botn con el texto Desactivar llamado btnDesactivar.
- Un botn con el texto Activar llamado btnActivar.

El programa funcionar de la siguiente forma:

- El usuario introducir un nombre en el cuadro de texto txtNombre. Por
ejemplo Juan.
- El usuario introducir una ciudad en el cuadro de texto txtCiudad. Por
ejemplo Jerez.
- Cuando el usuario pulse el botn Aceptar, entonces aparecer un
mensaje en la etiqueta llamada txtFrase indicando como se llama y
donde vive. Por ejemplo:

Usted se llama Juan y vive en Jerez.

- Cuando el usuario pulse el botn Desactivar, entonces los dos cuadros
de texto se desactivarn. Cuando el usuario pulse el botn Activar, los
dos cuadros de texto se volvern a activar.

Tendr que programar el evento actionPerformed de los botones.

Tendr que usar la concatenacin de cadenas. Recuerde que se pueden
concatenar cadenas a travs del operador +.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

694 Entidad Clientes | By reycito2011


Tendr que usar el mtodo setText para colocar el texto en la etiqueta y el
mtodo getText para recoger el texto de cada cuadro de texto.

Tendr que usar el mtodo setEnabled para activar o desactivar cada cuadro
de texto.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

695 Entidad Clientes | By reycito2011

Ejercicio 5

Debe realizar un programa java cuya ventana principal contenga los siguientes
elementos:

- Cuatro etiquetas, conteniendo distintas palabras cada una. Puede
llamarlas: etiPal1, etiPal2, etiPal3 y etiPal4.

- Otra etiqueta que contenga el texto Ocultar. Esta etiqueta se llamar
etiOcultar y tendr un tamao ms grande que las otras y un color de
fondo.

El programa debe funcionar de la siguiente forma:

- Cuando el puntero del ratn sobrevuele la etiqueta etiOcultar, las
etiquetas con las palabras deben desaparecer.

- Cuando el puntero del ratn salga de la superficie de la etiqueta
etiOcultar, entonces las etiquetas con las palabras volvern a aparecer.

Tendr que programar los eventos mouseEntered y mouseExited para que el
programa detecte cuando el ratn entra o sale de la etiqueta etiOcultar.

Debe usar el mtodo setVisible de las etiquetas para ocultarlas o visualizarlas.


Ejercicio 6

Debe realizar un programa java cuya ventana principal contenga los siguientes
elementos:

- Una etiqueta que contenga su nombre. Esta etiqueta se llamar
etiNombre. Esta etiqueta debe tener un color de fondo.
- Un botn con el texto Esquina. Este botn se llamar btnEsquina.
- Un botn con el texto Centro. Este botn se llamar btnCentro.
- Un botn con el texto Agrandar. Este botn se llamar btnAgrandar.
- Un botn con el texto Achicar. Este botn se llamar btnAchicar.

El programa debe funcionar de la siguiente forma:

- Cuando el usuario pulse el botn Esquina, la etiqueta etiNombre se
colocar en la esquina de la ventana.

- Cuando el usuario pulse el botn Centro, la etiqueta etiNombre se
colocar en el centro de la ventana.

- Cuando el usuario pulse el botn Agrandar, la etiqueta etiNombre
cambiar de tamao, agrandndose.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

696 Entidad Clientes | By reycito2011

- Cuando el usuario pulse el botn Achicar, la etiqueta etiNombre
cambiar de tamao, empequeecindose.

- Cuando el usuario lleve el puntero sobre uno de los botones, el botn
cambiar de tamao agrandndose. Cuando el puntero salga del botn,
el botn volver a su tamao normal.

Debe programar los eventos actionPerformed, mouseEntered y mouseExited
para los botones.

Tendr que usar el mtodo setLocation para cambiar la posicin de la etiqueta.
Este mtodo recibe como parmetro la posicin x e y donde situar el
componente.

Tendr que usar el mtodo setSize para cambiar el tamao de la etiqueta y de
los botones. Este mtodo recibe como parmetro el ancho y alto del
componente.

La propiedad preferredSize permite definir un tamao inicial a cada
componente de la ventana.
Ejercicio 7


Se pide realizar un programa java que tenga los siguientes elementos en la
ventana principal:

- Una etiqueta con el texto que quiera. Esta etiqueta se llamar etiTexto.
- Un botn con el texto Azul. Este botn se llamar btnAzul.
- Un botn con el texto Rojo. Este botn se llamar btnRojo.
- Un botn con el texto Verde. Este botn se llamar btnVerde.
- Un botn con el texto Fondo Azul. Este botn se llamar btnFondoAzul.
- Un botn con el texto Fondo Rojo. Este botn se llamar
btnFondoRojo.
- Un botn con el texto Fondo Verde. Este botn se llamar
btnFondoVerde.
- Un botn con el texto Transparente. Este botn se llamar
btnTransparente.
- Un botn con el texto Opaca. Este botn se llamar btnOpaca.

El programa debe funcionar de la siguiente forma:

- Cuando se pulse el botn Azul, el texto de la etiqueta se pondr de
color azul.
- Cuando se pulse el botn Rojo, el texto de la etiqueta se pondr de
color rojo.
- Cuando se pulse el botn Verde, el texto de la etiqueta se pondr de
color verde.
- Cuando se pulse el botn Fondo Azul, el fondo de la etiqueta se
pondr de color azul.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

697 Entidad Clientes | By reycito2011

- Cuando se pulse el botn Fondo Rojo, el fondo de la etiqueta se
pondr de color rojo.
- Cuando se pulse el botn Fondo Verde, el fondo de la etiqueta se
pondr de color verde.
- Cuando se pulse el botn Transparente, la etiqueta dejar de ser
opaca.
- Cuando se pulse el botn Opaca, se activar la propiedad opaca de la
etiqueta.

Debe programar los eventos actionPerformed de cada botn.

Para cambiar el color de fondo de una etiqueta, usar el mtodo
setBackground.

Para cambiar el color del texto de una etiqueta, usar el mtodo
setForeground.

Para indicar el color azul usar Color.BLUE. Para indicar el color rojo, usar
Color.RED. Y para indicar el color verde usar Color.GREEN.

Para hacer que una etiqueta sea opaca o no, usar el mtodo setOpaque.



PROGRAMACIN

JAVA


PROGRAMAS CON CLCULOS

Ejercicio 1

Realice un programa para calcular el total de una venta.

El programa tendr una ventana con al menos los siguientes elementos:

- Un cuadro de texto llamado txtUnidades donde el usuario introducir las
unidades vendidas.
- Un cuadro de texto llamado txtPrecio donde el usuario introducir el
precio unidad.
- Una etiqueta llamada etiTotalSinIva.
- Una etiqueta llamda etiIva.
- Una etiqueta llamada etiTotalMasIva.
- Un botn llamado btnCalcular.

El programa funcionar de la siguiente forma:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

698 Entidad Clientes | By reycito2011

- El usuario introducir las unidades y el precio y luego pulsar el botn
Calcular.
- El programa entonces calcular el total de la venta, el iva y el total ms
iva y presentar dichos resultados en cada etiqueta.


Ejercicio 2

Realice un programa para calcular la nota final de un alumno.

El programa tendr una ventana con al menos los siguientes elementos:

- Un cuadro de texto llamado txtPrimerTrimestre.
- Un cuadro de texto llamado txtSegundoTrimestre.
- Un cuadro de texto llamado txtTercerTrimestre.
- Una etiqueta llamada etiNotaFinal.
- Una etiqueta llamada etiResultado.
- Un botn llamado btnCalcular.

El programa funcionar de la siguiente forma:

- El usuario introducir las notas de los tres trimestres en los cuadros de
texto correspondientes.
- Cuando se pulse el botn Calcular, el programa calcular la nota media
y la mostrar en la etiqueta llamada etiNotaFinal.
- Si la nota final es menor de 5, entonces en la etiqueta etiResultado
aparecer la palabra SUSPENSO.
- Si la nota final es 5 o ms, entonces en la etiqueta etiResultado
aparecer la palabra APROBADO.
- Si la nota final fuera un suspenso, entonces las etiquetas etiNotaFinal y
etiResultado deben aparecer de color rojo. En caso contrario aparecern
de color negro.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

699 Entidad Clientes | By reycito2011

Ejercicio 3

Realizar un programa para calcular el rea y el permetro de un crculo.

El programa debe tener una ventana con al menos los siguientes elementos:

- Un cuadro de texto llamado txtRadio, donde el usuario introducir el
radio.
- Una etiqueta llamada etiArea, donde se mostrar el rea del crculo.
- Una etiqueta llamada etiPerimetro, donde se mostrar el permetro del
crculo.

El programa funcionar de la siguiente forma:

- El usuario introducir un radio dentro del cuadro de texto llamado radio.
Al pulsar la tecla Enter sobre dicho cuadro de texto, el programa
calcular el rea y el permetro y los mostrar en las etiquetas
correspondientes.

- Si el usuario introduce un radio negativo, en las etiquetas debe aparecer
la palabra Error en color rojo.

- Use el elemento PI de la clase Math para hacer este ejercicio.


Ejercicio 4

Realizar un programa para calcular potencias de un nmero.

El programa le permitir al usuario introducir una base y un exponente. Luego
el programa podr calcular la potencia de la base elevada al exponente.

El programa deber usar la clase Math.

El diseo de la ventana queda a su eleccin.


Ejercicio 5

Realizar un programa que calcule la raz cuadrada de un nmero. El programa
tendr los siguientes elementos en la ventana nicamente:

- Un cuadro de texto llamado txtNumero.
- Una etiqueta llamada etiRaiz.

El programa funcionar de la siguiente forma: cuando el usuario escriba un
nmero en el cuadro de texto txtNumero, inmediatamente aparecer su raz
cuadrada en la etiqueta. Para ello, tendr que programar el evento
keyReleased del cuadro de texto.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

700 Entidad Clientes | By reycito2011

Use la clase Math para realizar el clculo de la raz cuadrada.


Ejercicio 6

Realice un programa que contenga dos cuadros de texto: txtPalabra1, y
txtPalabra2. La ventana tendr tambin un botn llamado btnConcatena y una
etiqueta llamada etiTexto.

El usuario introducir las dos palabras dentro de los cuadros de texto y luego
pulsar el botn Concatena. El resultado ser que en la etiqueta etiTexto
aparecern las dos palabras escritas concatenadas.

Por ejemplo, si el usuario escribe en el primer cuadro de texto Lunes y en el
segundo Martes, en la etiqueta aparecer: LunesMartes.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

701 Entidad Clientes | By reycito2011

Ejercicio 7

Realizar un programa que muestre 10 etiquetas llamadas respectivamente:
etiUna, etiDos, etiTres, etc...

Estas etiquetas contendrn los nmeros del 0 al 9.

Aparte, la ventana tendr un cuadro de texto llamado txtNumero.

Se pide que cuando el usuario lleve el ratn sobre una de las etiquetas,
aparezca en el cuadro de texto el nmero correspondiente.

Los nmeros se van aadiendo al cuadro de texto. Por ejemplo, si el usuario
lleva el puntero sobre la etiqueta Uno, luego sobre la etiqueta Tres y luego
sobre la etiqueta Uno, en el cuadro de texto debera haber aparecido lo
siguiente: 131.

Aada un botn llamado btnBorrar, que al ser pulsado borre el contenido del
cuadro de texto.


Ejercicio 8

Se pide realizar un programa para resolver las ecuaciones de segundo grado.

Las ecuaciones de segundo grado tienen la siguiente forma:

ax
2
+bx+c=0

Dados unos valores para a, b y c, se debe calcular cuanto vale x.

Una ecuacin de segundo grado puede tener 0, 1 o 2 soluciones.

Para saber el nmero de soluciones de una ecuacin de segundo grado se
debe realizar el siguiente clculo:

R = b
2
4ac

Si R es menor de cero, la ecuacin no tiene solucin.
Si R da 0, la ecuacin tiene una solucin.
Si R es mayor de cero, la ecuacin tiene dos soluciones.

Cuando existe una solucin, esta se calcula de la siguiente forma:

x = -b / (2a)

Cuando existen dos soluciones, estas se calculan de la siguiente forma:

x = (-b + raiz(R) ) / (2a)

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

702 Entidad Clientes | By reycito2011

x = (-b raiz(R) ) / (2a)

(raz es la raz cuadrada)


Realice el programa para resolver las ecuaciones de segundo grado. El diseo
de la ventana queda a su eleccin. Procure que el programa indique cuando
hay o no soluciones, y que las muestre de forma adecuada.


PROGRAMACIN

JAVA


CUADROS DE MENSAJE, CONFIRMACIN E INTRODUCCIN DE DATOS


Ejercicio 1

Realice un programa para calcular la divisin de un nmero A entre un nmero
B. El programa tendr los siguientes elementos en la ventana:

- Dos cuadros de texto llamados txtA y txtB donde se introducirn los dos
nmeros.

- Un botn Calcular Divisin llamado btnDivision.

- Una etiqueta llamada etiResultado donde aparecer el resultado.

El programa debe funcionar de la siguiente forma:

- Cuando se pulse el botn Calcular Divisin se calcular la divisin del
nmero A entre el B y el resultado aparecer en la etiqueta etiResultado.

- Si el usuario introduce un valor 0 dentro del cuadro de texto del nmero
B, entonces el programa mostrar un mensaje de error (Use un
JOptionPane.showMessage)

- Si el usuario introduce un valor menor que cero en cualquiera de los dos
cuadros de texto, entonces tambin se mostrar un error.


Ejercicio 2

Realice un programa que permita calcular el sueldo total de un empleado. Para
ello, el programa tendr los siguientes elementos en la ventana:

- Un cuadro de texto llamado txtSueldoBase.
- Un cuadro de texto llamado txtMeses.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

703 Entidad Clientes | By reycito2011

- Un botn llamado btnCalcular.
- Una etiqueta llamada etiResultado.

El programa funcionar de la siguiente forma:

- El usuario introducir en el cuadro de texto txtSueldoBase la cantidad
bruta que cobra el trabajador al mes.
- En el cuadro de texto txtMeses introducir el nmero de meses
trabajados.
- Al pulsar el botn calcular se calcular el sueldo a percibir por el
empleado. Se calcular as:

Total a percibir = (SueldoBase 10% del SueldoBase) * Meses

- Cuando se pulse el botn calcular, antes de que aparezca el sueldo en
la etiqueta de resultado, el programa debe pedirle al usuario que
introduzca una contrasea. Solo si la contrasea es correcta el
programa mostrar el sueldo total.

- Para introducir la contrasea use un JOptionPane.showInputDialog.

- Si el usuario introduce una contrasea incorrecta, el programa mostrar
un aviso (JOptionPane.showMessage) y el resultado no se mostrar.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

704 Entidad Clientes | By reycito2011

Ejercicico 3


Realizar un programa para calcular el ndice de masa corporal de una persona.

Para ello, crear una ventana con los siguientes elementos:

- Un cuadro de texto llamado txtPeso, donde se introducir el peso de la
persona.
- Un cuadro de texto llamado txtTalla, donde se introducir la talla.
- Una etiqueta llamada etiIMC donde aparecer el Indice de masa
corporal calculado.
- Un botn llamado btnCalcular y otro llamado btnLimpiar.


El programa funcionar de la siguiente forma:

- El usuario introducir un peso y una talla en los cuadros de texto. Luego
pulsar el botn calcular para calcular el ndice de masa corporal, el cual
se calcula as:

IMC = Peso / Talla
2


- El IMC calculado aparecer en la etiqueta, y adems, aparecer un
mensaje indicando la conclusin a la que se llega, la cual puede ser una
de las siguientes segn el IMC:


IMC CONCLUSIN
<18 Anorexia
>=18 y <20 Delgadez
>=20 y <27 Normalidad
>=27 y <30 Obesidad (grado 1)
>=30 y <35 Obesidad (grado 2)
>=35 y <40 Obesidad (grado 3)
>=40 y Obesidad mrbida


El mensaje puede ser algo as: Su IMC indica que tiene anorexia, por
ejemplo. Este mensaje aparecer en un JOptionPane.showMessage.

- Cuando pulse el botn Limpiar, se borrarn los cuadros de texto Peso y
Talla. Antes de que esto ocurra, el programa debe pedir confirmacin,
con un cuadro de dilogo de confirmacin
(JOptionPane.showConfirmDialog). El cuadro de confirmacin tendr el
siguiente aspecto:


Desea borrar los datos?
SI NO
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

705 Entidad Clientes | By reycito2011


Segn lo elegido por el usuario se borrarn los cuadros de texto o no.



PROGRAMACIN

JAVA

CADENAS

Ejercicio 1

Realice un programa cuya ventana tenga los siguientes elementos:

- Un cuadro de texto llamado txtFrase.
- Varias etiquetas. (Llmelas como quiera)
- Un botn Analizar llamado btnAnalizar.

El programa funcionar de la siguiente forma:

- El usuario introducir una frase en el cuadro de texto, y luego pulsar el
botn Analizar.

- Al pulsar Analizar, el programa mostrar la siguiente informacin en las
etiquetas:

o La frase en maysculas.
o La frase en minsculas.
o Nmero de caracteres de la frase.
o Nmero de caracteres de la frase sin contar los espacios.

- Si el usuario pulsa Analizar cuando no hay ninguna frase introducida en
el cuadro de texto, el programa debe mostrar un error emergente
(JOptionPane)

Ejercicio 2

Realice un programa cuya ventana tenga los siguientes elementos:

- Un cuadro de texto llamado txtFrase y otro llamado txtSubcadena.
- Varias etiquetas.
- Un botn Analizar llamado btnAnalizar.

El programa funcionar de la siguiente forma:

- El usuario introducir una frase en el cuadro de texto txtFrase, y luego
introducir una palabra en el cuadro de texto txtSubcadena, y luego
pulsar el botn Analizar.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

706 Entidad Clientes | By reycito2011

- Al pulsar el botn, el programa debe mostrar la siguiente informacin:

o La posicin en la que se encuentra la primera aparicin de la
palabra en la frase.
o La posicin en la que se encuentra la ltima aparicin de la
palabra en la frase.
o Mostrar el texto que hay en la frase antes de la primera palabra.
o Mostrar el texto que hay en la frase despus de la ltima
palabra.

- Por ejemplo, si la frase fuera:

Un globo, dos globos, tres globos. La luna es un globo que se me
escap.

Y la palabra fuera globo, entonces la informacin a mostrar sera:
Posicin inicial: 3
Posicin final: 49
Texto anterior: Un
Texto posterior: que se me escap

- Si la palabra no se encuentra en la frase, el programa mostrar un error
emergente y no se presentar nada en las etiquetas.
Ejercicio 3

Realice un programa que tenga los siguientes elementos:

- Un cuadro de texto llamado txtFrase.
- Un cuadro de texto llamado txtPalabra1.
- Un cuadro de texto llamado txtPalabra2.
- Un cuadro de texto llamado txtPalabra3.
- Un cuadro de texto llamado txtPalabra4.
- Varias etiquetas.
- Un botn Analizar llamado btnAnalizar.

El programa funcionar de la siguiente forma:

- El usuario introducir una frase en el cuadro de texto txtFrase, y tres
palabras en los cuadros de texto de las palabras.

- Al pulsar el botn Analizar, el programa debe indicar la siguiente
informacin en las etiquetas:

o Indicar si la frase es igual a la palabra 1.
o Indicar si la frase empieza por la palabra 2.
o Indicar si la frase termina por la palabra 3.
o Indicar si la palabra 4 est contenida en la frase, y en el caso de
que est contenida, se indicar la posicin inicial en la que se
encuentra.
PROGRAMACIN
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

707 Entidad Clientes | By reycito2011


JAVA

CADENAS (CONTINUACIN)

Ejercicio 1

Realizar un programa cuya ventana tenga los siguientes elementos:

- Un cuadro de texto llamado txtFrase.
- Varias etiquetas.
- Un botn Analizar llamado btnAnalizar.

El programa debe contar cuantas vocales tiene la frase. El funcionamiento ser
el siguiente:

- El usuario escribir una frase en el cuadro de texto txtFrase. Luego se
pulsar el botn Analizar.

- El programa mostrar en las etiquetas el nmero de a, de e, de i de o y
de u que se encuentran en la frase.

- Tenga en cuenta que puede haber vocales en maysculas y en
minsculas.

- Si el usuario no introduce nada en el cuadro de texto txtFrase, entonces
el programa debera mostrar un error.

Ejercicio 2

Realizar un programa cuya ventana tenga los siguientes elementos:

- Un cuadro de texto llamado txtDNI.
- Una etiqueta llamada etiDNI.
- Un botn Preparar DNI llamado btnPrepararDNI.


El programa funcionar de la siguiente forma:

- El usuario introducir un DNI en el cuadro de texto llamado txtDNI y
luego pulsar el botn Preparar DNI. El resultado ser que el DNI
introducido aparecer preparado en la etiqueta etiDNI.

- A continuacin se explica como preparar el DNI:

El usuario puede introducir un DNI con uno de estos formatos:

31.543.234-A
31.543.234 A
31.543.234A
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

708 Entidad Clientes | By reycito2011

31 543 234 A
etc.

Sin embargo, cuando el usuario pulse el botn Preparar DNI, en la
etiqueta etiDNI debe aparecer el DNI con el siguiente formato:

31543234A

Es decir, sin ningn espacio y sin puntos ni guiones.

- Si el usuario no introduce nada en el cuadro de texto del DNI y pulsa el
botn, entonces debe aparecer un error emergente (JOptionPane).


Ejercicio 3

Se pide hacer un programa que le permita al usuario introducir una palabra en
latn de la primera declinacin, y a continuacin generar sus casos en plural y
singular.

Las palabras de la primera declinacin en latn son sustantivos femeninos (la
mayora), que terminan en a, como por ejemplo: ROSA o ANIMA.

Estas palabras tienen las siguientes variantes o casos:

Por ejemplo, para la palabra ROSA, sus casos son los siguientes:

CASO SINGULAR PLURAL
NOMINATIVO Rosa Rosae
VOCATIVO Rosa Rosae
ACUSATIVO Rosam Rosas
GENITIVO Rosae Rosarum
DATIVO Rosae Rosis
ABLATIVO Rosa Rosis

Por ejemplo, para la palabra ANIMA, sus casos son los siguientes:

CASO SINGULAR PLURAL
NOMINATIVO Anima Animae
VOCATIVO Anima Animae
ACUSATIVO Animam Animas
GENITIVO Animae Animarum
DATIVO Animae Animis
ABLATIVO Anima Animis


Debes observar que algunos casos son exactamente iguales a la palabra
inicial, como por ejemplo el Nominativo Singular.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

709 Entidad Clientes | By reycito2011

Otros casos, en cambio, se construyen aadiendo algunas letras al final de la
palabra inicial. Por ejemplo, el Acusativo singular se construye aadiendo una
m a la palabra inicial.

Para construir el Dativo y Ablativo plural, es necesario concatenar la palabra
inicial (sin la a final) con is. Por ejemplo, en el caso de la palabra Rosa, se
concatenara: Ros + is.

TENIENDO EN CUENTA LO ANTERIOR, SE PIDE REALIZAR EL SIGUIENTE
PROGRAMA:

Realice un programa cuya ventana tenga los siguientes elementos:

- Un cuadro de texto txtPalabra.
- Doce etiquetas al menos correspondientes a los 6 casos en singular y
plural.
- Un botn Declinar llamado btnDeclinar.

El programa funcionar de la siguiente forma:

- El usuario introducir una palabra en latn de la primera declinacin en el
cuadro de texto, y luego pulsar el botn Declinar. Entonces en las
etiquetas aparecern los casos declinados de la palabra.

- Si el usuario introduce una palabra que no termine en a, entonces el
programa dar un error, ya que dicha palabra no es de la primera
declinacin.

- Tenga en cuenta que la palabra introducida puede estar en maysculas
o minsculas.
- PROGRAMACIN
-
- JAVA
-
- EXCEPCIONES
-
- Ejercicio 1
-
- Realizar un programa que le permita al usuario introducir una frase, una
posicin inicial y una posicin final. (Tres cuadros de texto llamados
txtFrase, txtPosIni y txtPosFin.
-
- El programa debe mostrar la subcadena contenida entre la posicin
inicial y la posicin final (use una etiqueta etiSubcadena)
-
- Esto suceder cuando se pulse un botn Analizar llamado btnAnalizar.
-
- El cdigo de este programa puede generar errores de ejecucin
(excepciones), en el caso de que el usuario no introduzca nada en el
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

710 Entidad Clientes | By reycito2011

cuadro de texto de la frase, o en el caso de que el usuario introduzca un
valor incorrecto de los cuadros de texto de las posiciones.
-
- El programa debe ser capaz de capturar las excepciones producidas y
mostrar un mensaje de error.
-
-
-
- Ejercicio 2
-
- Realizar un programa que pida las coordenadas de una recta, es decir,
las coordenadas del punto p1 (x1, y1) y las coordenadas del punto p2
(x2,y2).
-
- As pues el programa tendr cuatro cuadros de texto: txtX1, txtY1, txtX2
y txtY2 donde el usuario introducir las coordenadas.
-
- El programa debe calcular la distancia de la recta, usando la siguiente
frmula:
-
- Raz( (x2-x1)
2
+ (y2-y1)
2
)
-
- Aada un botn Calcular llamado btnCalcular que realice el clculo. El
cdigo que introduzca en este botn debe ser capaz de capturar
cualquier tipo de excepcin producida. Interesa que aparezca un
mensaje indicando el tipo de error producido, y el tipo de excepcin.
-
-
- Ejercicio 3
-
- Realice un programa que le pida dos nmeros al usuario. Ambos
nmeros deben estar comprendidos entre 0 y 100.
-
- El programa debe calcular la divisin y el resto del mayor entre el menor.
-
- El programa debe capturar todo tipo de excepciones producidas en el
cdigo.
-
- Adems, debe hacer que si el usuario introduce un nmero no
comprendido entre 0 y 100, el cdigo genere una excepcin propia
PROGRAMACIN

JAVA

LA CLASE JFRAME

Ejercicio 1



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

711 Entidad Clientes | By reycito2011

Realizar un programa cuya ventana contanga los siguientes elementos:

- Un cuadro de texto llamado txtTitulo.
- Un botn Cambiar Ttulo llamado btnCambiarTitulo.
- Un botn Maximizar llamado btnMaximizar.
- Un botn Minimizar llamado btnMinimizar.
- Un botn Restaurar llamado btnRestaurar.
- Un cuadro de texto llamado txtPosicionX.
- Un cuadro de texto llamado txtPosicionY.
- Un botn Mover llamado btnMover.
- Un botn Centrar llamado btnCentrar.
- Un botn Estilo Java llamado btnEstiloJava.
- Un botn Estilo Windows llamado btnEstiloWindows.
- Un botn Rojo llamado btnRojo.
- Un botn Verde llamado btnVerde.
- Un botn Azul llamado btnAzul.




El funcionamiento del programa ser el siguiente:

- Si el usuario pulsa el botn Cambiar Titulo, el ttulo de la ventana
cambiar, colocndose como ttulo lo que el usuario haya escrito en el
cuadro de texto txtTitulo.

- Si el usuario pulsa el botn Maximizar, la ventana se maximizar.

- Si el usuario pulsa el botn Minimizar, la ventana se minimizar.

- Si el usuario pulsa el botn Restaurar, la ventana se restaurar.

- Si el usuario pulsa el botn Mover, la ventana se colocar en la
posicin de la pantalla que venga indicada por los valores x, y,
introducidos respectivamente en los cuadros de texto txtPosicionX y
txtPosicionY.

- Si el usuario pulsa el botn Centrar, la ventana se colocar en el centro
de la pantalla.

- Si el usuario pulsa el botn Estilo Java, entonces toda la ventana
cambiar a la visualizacin Java.

- Si el usuario pulsa el botn Estilo Windows, entonces toda la ventana
cambiar a la visualizacin Windows.

- Si el usuario pulsa uno de los botones de color, entonces el fondo de la
ventana se cambiar al color indicado.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

712 Entidad Clientes | By reycito2011




Adems, el programa contar con las siguientes caractersticas:



- Al iniciarse el programa, este debe pedir una contrasea al usuario. Si el
usuario introduce la contrasea correcta, entonces el usuario entrar en
el programa. En caso contrario el programa se cerrar.

- Al finalizar el programa, este debe pedir una confirmacin al usuario:

Desea salir del programa?

Si el usuario responde S, entonces el programa finalizar. En caso
contrario, el programa seguir funcionando.


PROGRAMACIN

JAVA

CUADROS DE VERIFICACIN, BOTONES DE OPCIN

Ejercicio 1

Se pide realizar un programa que tenga los siguientes elementos en la ventana
principal:





21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

713 Entidad Clientes | By reycito2011

- Un panel con el ttulo Ingredientes. No hace falta que le de un nombre.
- Un panel con el ttulo Tamao. No hace falta que le de un nombre.
- Cuatro JCheckBox con los textos:
o Bacon nombre: chkBacon
o Anchoas nombre: chkAnchoas
o Cebolla nombre: chkCebolla
o Pimiento nombre: chkPimiento
- Tres JRadioButtons con los textos:
o Pequea nombre: optPequenia
o Mediana nombre: optMediana
o Familiar nombre: optFamiliar

- Un botn Total llamado btnTotal.
- Una etiqueta con borde llamada etiResultado.


El programa funcionar de la siguiente forma:

- El usuario elegir un tamao para la pizza que quiere pedir. Este tamao
puede ser uno solo de los siguientes: pequea, mediana o familiar.
- El usuario elegir tambin los ingredientes que desee. Puede
seleccionar uno o varios ingredientes.
- Al pulsar el botn Total, el programa calcular y mostrar en la etiqueta
etiResultado el precio de la pizza, teniendo en cuenta lo siguiente:

Una pizza pequea cuesta 7 euros.
Una pizza mediana cuesta 9 euros.
Una pizza familiar cuesta 11 euros.

Si se le aade como ingrediente Bacon, hay que aumentar el precio de
la pizza en 1,50 euros.
Si se le aade como ingrediente Anchoas, hay que aumentar el precio
de la pizza en 1,80 euros.
Si se le aade como ingrediente Cebolla, hay que aumentar el precio de
la pizza en 1,00 euros.
Si se le aade como ingrediente Pimiento, hay que aumentar el precio
de la pizza en 1,20 euros.


Tenga en cuenta esto otro:

- Al ejecutar el programa, debe estar seleccionada la opcin pizza familiar
por defecto, y no debe estar seleccionada ninguno de los ingredientes.

- Al iniciarse el programa, debe aparecer un cuadro indicando el nombre
del programa. Por ejemplo: PIZZERA JAVA, y el nombre del
programador.

- Al intentar cerrar el programa, este debe pedir confirmacin para salir.
Solo si el usuario acepta salir del programa este se cerrar.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

714 Entidad Clientes | By reycito2011

PROGRAMACIN

JAVA

LISTAS Y COMBOS

Ejercicio 1

Se pide realizar un programa que tenga el siguiente aspecto:





Esta ventana contiene lo siguiente:

- Un cuadro de lista con los siguientes productos (y sus precios):

Sistema de Localizacin 120
Centro de Control 60
Modem GSM 45

Este cuadro de lista se llamar lstProductos.

- Un cuadro de texto donde se introducirn las unidades que se envan,
llamado txtUnidades.

- Un combo llamado cboDestino donde tendremos los siguientes
elementos:

Pennsula
Canarias
Extranjero
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

715 Entidad Clientes | By reycito2011


- Un combo llamado cboTipoEnvio donde tendremos los siguientes
elementos:

Normal
Urgente

- Un botn Calcular llamado btnCalcular.
- Una etiqueta con un borde llamada etiResultado.
- Otras etiquetas informativas.

El programa funcionar de la siguiente forma:

- El usuario marcar un producto de los tres que aparecen en la lista.
- El usuario indicar el nmero de unidades que se enviarn del producto.
- El usuario indicar el tipo de destino.
- El usuario indicar el tipo de envo.
- Al pulsar Calcular, el programa mostrar en la etiqueta etiResultado el
total del envo, teniendo en cuenta lo siguiente:

El total del envo se calcula as:

Total = (Unidades * Precio del producto) + coste destino + coste tipo

El Coste de Destino puede ser uno de los siguientes:

Pennsula 20
Canarias 25
Extranjero 30

El Coste del Tipo de Envo puede ser uno de los siguientes:

Normal 3
Urgente 10


Tenga en cuenta esto otro:

- Si se pulsa calcular cuando no hay seleccionado ningn producto, el
programa mostrar un mensaje de error emergente indicndolo.

- Si las unidades son incorrectas, debera mostrarse tambin un error.

PROGRAMACIN

JAVA

LISTAS, COMBOS, MODELOS

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

716 Entidad Clientes | By reycito2011

Ejercicio 1

Se pide realizar un programa que tenga el siguiente aspecto:





Esta ventana contiene lo siguiente:

- Un cuadro de lista llamado lstMeses.
- Varios botones de opcin con los siguientes nombres:
o Un botn Trimestre 1 llamado optTri1.
o Un botn Trimestre 2 llamado optTri2.
o Un botn Trimestre 3 llamado optTri3.
o Un botn Trimestre 4 llamado optTri4.
o Todos estos botones deben estar agrupados a travs de un
objeto ButtonGroup al que llamaremos grupoTrimestres.
o Interesar que estos botones estn dentro de un panel.

- Un botn Rellenar llamado btnRellenar.
- Un botn Vaciar llamado btnVaciar.
- Una etiqueta etiMes con un borde.


El programa funcionar de la siguiente forma:

- El usuario elegir una de las opciones: Trimestre 1, Trimestre 2,
Trimestre 3, Trimestre 4.
- A continuacin el usuario pulsar el botn Rellenar, y entonces el cuadro
de lista se rellenar con los meses correspondientes al trimestre elegido.
- Por ejemplo, si el usuario elige el Trimestre 2 y pulsa el botn, entonces
el cuadro de lista contendr: Abril, Mayo, Junio.
- Cuando el usuario pulse el botn Vaciar, el cuadro de lista se vaciar.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

717 Entidad Clientes | By reycito2011

- Cuando el usuario haga clic sobre un elemento de la lista, este debe
aparecer en la etiqueta etiMes.


Ejercicio 2

Se pide realizar un programa que tenga el siguiente aspecto:



Esta ventana contiene lo siguiente:

- Un combo llamado cboProgresion.
- Un cuadro de texto llamado txtInicio.
- Un cuadro de texto llamado txtFin.
- Un cuadro de texto llamado txtIntervalo.
- Un botn Rellenar llamado btnRellenar.
- Una etiqueta llamada etiResultado.
- Un botn Vaciar llamado btnVaciar.

El programa funcionar de la siguiente forma:

- El usuario introducir un nmero en txtInicio.
- Luego introducir otro nmero en txtFin.
- Tambin introducir un nmero en txtIntervalo.
- Al pulsar el botn Rellenar, el combo se rellenar con el listado de
nmeros comprendidos entre el nmero inicial y el nmero final con
intervalo el indicado.

- Un ejemplo:
o El usuario introduce en txtInicio un 2
o El usuario introduce en txtFin un 12
o El usuario introduce en txtIntervalo un 3
o Al pulsar el botn Rellenar, el combo debe rellenarse con los
siguientes nmeros: 2, 5, 8, 11
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

718 Entidad Clientes | By reycito2011

o Observa, del 2 al 12 saltando de 3 en 3.

- Al elegir cualquiera de los nmeros en el combo, este debe mostrarse en
la etiqueta etiResultado.
- Al pulsarse el botn Vaciar el combo se vacia.

A tener en cuenta.
- Si el usuario introduce algo que no sea un nmero en los cuadros de
texto, el programa debera mostrar un error.

- El nmero inicial debe ser menor que el nmero final. En caso contrario
el programa debe mostrar un error.
PROGRAMACIN

JAVA

JTOGGLEBUTTONS

Ejercicio 1

Realice un programa cuya ventana tenga el siguiente aspecto:





- Los botones numerados desde el 1 al 6 son JToggleButtons. Sus
nombres son respectivamente: botonUno, botonDos, etc

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

719 Entidad Clientes | By reycito2011

- Tres botones normales:

o Desactivar Todos. Nombre: btnDesactivarTodos
o Activar Todos. Nombre: btnActivarTodos
o Total. Nombre: btnTotal

- Y una etiqueta con borde llamada etiResultado.


El programa funcionar de la siguiente forma:

- Cuando el usuario pulse Total, en la etiqueta debe aparecer la suma de
los nmeros de los botones seleccionados. Por ejemplo, si estn
seleccionados el 2 y el 4, aparecer un 6.

- Si se pulsa el botn Desactivar Todos, todos los botones activados se
desactivarn.

- Si se pulsa el botn Activar Todos, se activarn todos los botones.
PROGRAMACIN

JAVA

JSLIDER

Ejercicio 1

Una empresa de productos qumicos necesita calcular la cantidad de agua y sales que
necesita mezclar para fabricar un detergente. Para ello hay que tener en cuenta tres
factores:

- Litros que se quieren fabricar. (Es un valor entre 1 y 100)
- Calidad del detergente. (Es un valor entre 0 y 10)
- Densidad deseada. (Es un valor entre 50 y 200)

La cantidad de agua necesaria viene dada por la siguiente frmula:

Litros de agua = 2 * Litros a Fabricar + Calidad / Densidad

La cantidad de sales necesaria viene dada por la siguiente frmula:

Sales = (Calidad * Litros a Fabricar) / (100 * Densidad)


Se pide realizar un programa cuya ventana contenga lo siguiente:

- Un JSlider llamado deslizadorLitros que represente los litros a fabricar.
Sus valores estarn comprendidos entre 1 y 100. El valor inicial del
deslizador ser 50.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

720 Entidad Clientes | By reycito2011


- Un JSlider llamado deslizadorCalidad que represente la calidad del
detergente. Sus valores estarn comprendidos entre 0 y 10. El valor
inicial ser 5.

- Un JSlider llamado deslizadorDensidad que represente la densidad
deseada. Sus valores estarn comprendidos entre 50 y 200. El valor
inicial ser 100.

- Una etiqueta con borde llamada etiLitros donde aparecer la cantidad de
litros elegida en el deslizador de litros.

- Una etiqueta con borde llamada etiCalidad donde aparecer la cantidad
de calidad elegida en el deslizador de calidad.

- Una etiqueta con borde llamada etiDensidad donde aparecer la
cantidad de densidad elegida en el deslizador de calidad.

- Una etiqueta con borde etiLitrosAgua, que contenga el total de litros de
agua calculados.

- Una etiqueta con borde etiSales, que contenga el total de sales
calculados.

- Varias etiquetas informativas / algn panel.

La ventana puede tener el siguiente aspecto:



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

721 Entidad Clientes | By reycito2011





El programa funcionar de la siguiente forma:

- El usuario arrastrar los deslizadores y automticamente aparecer en
las etiquetas los valores de cada deslizador y la cantidad total de aguas
y sales calculada.

PROGRAMACIN

JAVA

JSPINNER

Ejercicio 1

Se propone hacer un juego sencillo, que simule la apertura de una caja a travs de una
combinacin.

Para ello, debes crear una ventana como la que sigue:


El usuario arrastra los
deslizadores...



...Los valores de las etiquetas
cambian...



...Se calcula automticamente
los totales...
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

722 Entidad Clientes | By reycito2011




Esta ventana contiene los siguientes elementos:

- Tres JSpinner a los que se les llamar: spiCentenas, spiDecenas y
spiUnidades. Estos JSpinner solo admitirn los valores entre 0 y 9.

- Un botn btnAbrir.

- Una etiqueta con borde llamada etiResultado.


Funcionamiento del programa:

- La clave de apertura ser la siguiente: 246 (Esto no lo sabe el usuario)

- El usuario modificar los valores de los JSpinner y luego pulsar el
botn Abrir.

- Si los valores de los JSpinner coinciden con la clave, 246, entonces en
la etiqueta debe aparecer el mensaje Caja Abierta.

- Si los valores de los JSpinner forman un nmero menor que 246,
entonces en la etiqueta debe aparecer el mensaje: El nmero secreto
es mayor.

- Si los valores de los JSpinner forman un nmero mayor que 246,
entonces en la etiqueta debe aparecer el mensaje: El nmero secreto
es menor.


Nota:

- Ten en cuenta que el valor obtenido de un JSpinner no es un nmero. Si
quieres obtener el nmero entero del JSpinner tienes que usar un cdigo
como este:

int x;
x = Integer.parseInt(spiValor.getValue().toString()) ;


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

723 Entidad Clientes | By reycito2011

- Sea el nmero A las centenas, el B las decenas y el C las unidades. Para calcular
el nmero correspondiente hay que hacer el siguiente clculo:

N = A * 100 + B * 10 + C


Ejemplo de funcionamiento:




PROGRAMACIN

JAVA

JSROLLBAR

Ejercicio 1

Imagine que le encargan realizar un programa que contenga un ecualizador. Para
permitir al usuario el control de las distintas frecuencias se usarn varias barras de
desplazamiento.

La ventana del programa que debe construir debe ser similar a la siguiente:



Seleccionas los nmeros...



Pulsas Abrir...



En la etiqueta aparece un mensaje
indicando si acertaste o el nmero es
menor o mayor que la clave.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

724 Entidad Clientes | By reycito2011

Esta ventana contiene lo siguiente:

- Cinco etiquetas con borde que puede llamar etiFrecuencia1, etiFrecuencia2,
etc

- Cinco barras de desplazamiento que tienen de nombre desFrecuencia1,
desFrecuencia2, etc

- Cinco cuadros de verificacin que puede llamar chkFrecuencia1,
chkFrecuencia2, etc

- Un panel con ttulo y dentro de l tres botones de opcin a los que puede llamar
optPelcula, optConcierto y optPlano. (Para estos tres botones de radio
necesitar un objeto del tipo ButtonGroup al que puede llamar
grupoEcualizacin)


El programa funcionar de la siguiente forma:

- Las cinco barras de desplazamiento deben tener valores comprendidos entre un
mnimo de 0 y un mximo de 10. El incremento unitario debe ser de 1 y el
incremento en bloque de 2.

- Cada vez que se mueva una barra, en su etiqueta correspondiente aparecer el
valor de dicha barra (un valor que estar entre 0 y 10) Comprueba que cuando el
usuario active al mximo una barra en la etiqueta aparezca un 10.

- Las casillas de verificacin indican el bloqueo o no de cada barra. Si el usuario
activa una casilla de verificacin, entonces su barra correspondiente quedar
bloqueada de forma que no pueda ser modificada. Cuando se vuelva a desactivar
la casilla la barra se volver a activar (Use el mtodo setEnabled)

- Las opciones de ecualizacin predefinidas permitirn colocar las barras de
desplazamiento en unos valores predefinidos. Concretamente:

o Si el usuario activa la opcin Pelcula, las barras quedarn con los
siguientes valores respectivamente: 2, 5, 8, 5, 2
o Si el usuario activa la opcin Concierto, las barras quedarn con los
siguientes valores respectivamente: 9, 5, 1, 5, 9

o Si el usuario activa la opcin Plano, todas las barras se colocarn a 5.

- Cuando el programa se inicie, todas las barras deben estar a 5 y la opcin Plano
debe estar activada.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

725 Entidad Clientes | By reycito2011


PROGRAMACIN

JAVA

BARRA DE MENS

Ejercicio 1

Le encargan un programa que controle las luces de las oficinas de un edificio.
Concretamente, se tienen que controlar tres oficinas, y cada una de ellas tiene dos luces
principales y una de seguridad.

La ventana principal del programa debe mostrar tres paneles como el que sigue:




Se supondr que las distintas luces de cada oficina se pueden encender o apagar
activando o desactivando los cuadros de verificacin.



El programa adems debe de contar con un men con una opcin llamada Activacin
y otra llamada Info

La opcin Activacin contendr las siguientes opciones:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

726 Entidad Clientes | By reycito2011



- La opcin Apagar Todas desactivar todos los cuadros de verificacin de las
luces.
- La opcin Encender Todas activar todos los cuadros de verificacin de las
luces.

- La opcin Dia contiene las siguientes subopciones:



- Si se activa la opcin Dia Oficina 1, entonces se encendern (activarn) las
luces principal y secundaria de la oficina 1, y se apagar (desactivar) la luz de
seguridad de dicha oficina.

- Si se activa la opcin Dia Oficina 2, entonces se encendern (activarn) las
luces principal y secundaria de la oficina 2, y se apagar (desactivar) la luz de
seguridad de dicha oficina.

- Si se activa la opcin Dia Oficina 3, entonces se encendern (activarn) las
luces principal y secundaria de la oficina 3, y se apagar (desactivar) la luz de
seguridad de dicha oficina.

- Si se activa la opcin Dia Todas, entonces todas las oficinas tendrn las
luces principal y secundarias encendidas, y apagadas las luces de seguridad.


La opcin Noche contiene las siguientes opciones:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

727 Entidad Clientes | By reycito2011



- Si se activa la opcin Noche Oficina 1, entonces se apagarn las luces
principal y secundaria de la oficina 1 y se encender la luz de seguridad.

- Si se activa la opcin Noche Oficina 2, entonces se apagarn las luces
principal y secundaria de la oficina 2 y se encender la luz de seguridad.

- Si se activa la opcin Noche Oficina 3, entonces se apagarn las luces
principal y secundaria de la oficina 3 y se encender la luz de seguridad.

- Si se activa la opcin Noche Todas, entonces se apagarn todas las luces
principales y secundarias de todas las oficinas y se encendern todas las luces de
seguridad.


La opcin Salir permitir finalizar el programa.





La opcin Info del men contendr lo siguiente:



- La opcin Principales mostrar un JOptionPane donde se indique cuantas luces
principales hay encendidas ahora mismo y cuantas apagadas.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

728 Entidad Clientes | By reycito2011


- La opcin Secundarias mostrar un JOptionPane donde se indique cuantas luces
secundarias hay encendidas ahora mismo y cuantas apagadas.

- La opcin Seguridad mostrar un JOptionPane donde se indique cuantas luces
de seguridad hay encendidas y cuantas apagadas.

- La opcin Acerca de... mostrar un JOptionPane que contendr el nombre del
programa y del programador.



MEJORA OPCIONAL

Sera interesante que cada cuadro de verificacin estuviera acompaado de una pequea
imagen que representara una bombilla encendida o apagada segn el estado de la luz.

Use etiquetas para contener las imgenes. En el EJERCICIO DE INVESTIGACIN
2 puede encontrar ms informacin sobre esto.

PROGRAMACIN

JAVA

BARRA DE HERRAMIENTAS

Ejercicio 1

Se va a mejorar el programa de control de luces de la hoja anterior, aadindole una
barra de herramientas.

El programa anterior tena un men con las siguientes opciones:



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

729 Entidad Clientes | By reycito2011











El objetivo del ejercicio es crear una barra de herramientas que contenga un botn para
algunas de las opciones principales del men. Concretamente, la barra de herramientas
contendr los siguientes botones:

- Un botn para la opcin Apagar Todas.
- Un botn para la opcin Encender Todas.
- Un botn para activar todas las oficinas en modo da (es equivalente a la
opcin Activacin Da Todas)
- Un botn para activar todas las oficinas en modo noche (es equivalente a la
opcin Activacin Noche Todas)
- Un botn para conseguir informacin sobre las luces principales (Info
Principales)
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

730 Entidad Clientes | By reycito2011

- Un botn para conseguir informacin sobre las luces secundarias (Info
Secundarias)
- Un botn para conseguir informacin sobre las luces de seguridad (Info
Seguridad)


En cada actionPerformed de cada botn de la barra de herramientas se tiene que
programar el mismo cdigo que el de la opcin del men correspondiente.

PROGRAMACIN

JAVA

MENS CONTEXTUALES

Ejercicio 1

Se va a aadir una mejora ms en el programa de luces realizado en las hojas anteriores.
Concretamente se aadir un men contextual que contenga las siguientes opciones:

Apagar Todas
Encender Todas
------------------- (Separador)
Modo Da
Modo Noche
------------------- (Separador)
Principales
Secundarias
Seguridad


Este men aparecer cuando el usuario haga clic con el botn derecho del ratn sobre el
fondo de la ventana de su programa. Es decir, tendr que programar el clic del ratn
sobre el formulario.

Las opciones del men contextual coinciden con las opciones de la barra de mens de la
siguiente forma:

Apagar Todas Activacin / Apagar Todas
Encender Todas Activacin / Encender Todas
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

731 Entidad Clientes | By reycito2011

Modo Da Activacin / Da / Todas
Modo Noche Activacin / Da / Noche
Principales Info / Principales
Secundarias Info / Secundarias
Seguridad Info / Seguridad

Programe dichas opciones de forma que se realice la operacin correspondiente a su
opcin del men hermana.
PROGRAMACIN

JAVA

DIALOGO ABRIR/GUARDAR FICHERO


Notas Iniciales

Supongamos que tiene en su proyecto un objeto del tipo JFileChooser llamado
elegirFichero.

A travs del mtodo getSelectedFile obtiene el fichero que ha elegido el usuario. El
mtodo getSelectedFile devuelve en realidad un objeto del tipo File.

As pues, puede hacer lo siguiente:

int resp; //una respuesta
File f; //un fichero

resp=elegirFichero.showOpenDialog(this);
if (resp==JFileChooser.APPROVE_OPTION) {
f = elegirFichero.getSelectedFile();
}


Si observa este cdigo, ver que se crea una variable f de tipo File. Y f es el fichero
elegido por el usuario en el cuadro de dilogo Abrir.

Los objetos del tipo File poseen diversos mtodos que permiten obtener informacin
sobre el fichero y realizar algunas operaciones con ellos. He aqu algunos mtodos que
se pueden usar:
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

732 Entidad Clientes | By reycito2011


getName() - Devuelve el nombre del fichero.

Por ejemplo:

String nombre = f.getName();
//La variable nombre contendra el nombre del fichero f

getPath() - Devuelve el camino completo del fichero.

Por ejemplo:

String camino = f.getPath();
//La variable camino contendra el camino del fichero f

exists() - Devuelve verdadero o falso segn exista o no.

Por ejemplo:

if (f.exists() == true ) {
JOptionPane.showMessageDialog(null, El fichero f
existe);
} else {
JOptionPane.showMessageDialog(null, El fichero f no
existe);
}

delete() - Borra el fichero

Por ejemplo:

f.delete(); //Borra el fichero f




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

733 Entidad Clientes | By reycito2011

Ejercicio

Teniendo en cuenta las ideas expuestas, realizar un programa cuya ventana tenga el
siguiente aspecto:



El programa funcionar de la siguiente forma:

- Si el usuario pulsa el botn Info Fichero, aparecer el cuadro de dilogo
(JFileChooser) Abrir, donde el usuario podr elegir un fichero. Una vez que el
usuario elija un fichero y pulse el botn Abrir, aparecern los datos del fichero
en las distintas etiquetas.

- En la etiqueta nombre del fichero aparecer el nombre del fichero (use
getName())

- En la etiqueta camino del fichero aparecer el camino completo del fichero (use
getPath())

- En la etiqueta existe? aparecer un mensaje indicando si el fichero existe o no
(use exists()) Queda claro que si el fichero no existe no se puede visualizar ni su
nombre ni su camino.


- Si el usuario, en cambio, pulsa el botn Eliminar Fichero, entonces el
programa mostrar el cuadro de dilogo Abrir y una vez que el usuario elija un
fichero, el programa lo borrar (use delete())

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

734 Entidad Clientes | By reycito2011

Pida una confirmacin antes de eliminar el fichero. Tenga cuidado al comprobar
esta opcin.

PROGRAMACIN

JAVA

VARIABLES GLOBALES



Ejercicio 1


Realizar un programa cuya ventana contenga los siguientes elementos:

- Un cuadro de texto llamado txtNumero.
- Un botn Acumular llamado btnAcumular.
- Un botn Resultados llamado btnResultados.
- Un botn Reiniciar llamado btnReiniciar.
- Una etiqueta con borde llamada etiMayor.
- Una etiqueta con borde llamada etiSuma.
- Una etiqueta con borde llamada etiMedia.
- Una etiqueta con borde llamada etiCuenta.

El programa funcionar de la siguiente forma:

- El usuario introducir un nmero en el cuadro de texto txtNumero y luego
pulsar el botn Acumular. En ese momento se borrar el nmero introducido
en el cuadro de texto.

- Este proceso lo repetir el usuario varias veces.

- Cuando el usuario pulse el botn Resultados, deben aparecer en las etiquetas
los siguientes datos:

o El nmero mayor introducido hasta el momento.
o La suma de los nmeros introducidos hasta el momento.
o La media de los nmeros introducidos hasta el momento.
o Cuantos nmeros ha introducido el usuario hasta el momento.

- El botn Reiniciar reinicia el proceso borrando todo lo que hubiera en las
etiquetas de resultados y reiniciando las variables globales.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

735 Entidad Clientes | By reycito2011



Variables globales a usar

Para que sirva de ayuda, se recomienda que use las siguientes variables globales:

- Una variable double llamada mayor. Contendr en todo momento el nmero
mayor introducido.
- Una variable double llamada suma. Contendr en todo momento la suma de los
nmeros introducidos.
- Una variable int llamada cuenta. Contendr en todo momento la cuenta de todos
los nmeros introducidos hasta ahora.

Al comenzar el programa, y al pulsar el botn Reiniciar, ser necesario que estas tres
variables se inicien a 0.


Nota. Se supondr que todos los nmero introducidos sern mayores o iguales a 0.




Ejercicio 2

Realizar un programa que contenga los siguientes elementos en su ventana:

- Un cuadro de texto llamado txtNumero.
- Un cuadro de texto llamado txtApuesta
- Un botn Jugar llamado btnJugar.
- Una etiqueta llamada etiNumero.
- Una etiqueta llamada etiResultado que contendr inicialmente un 100.


El programa funcionar de la siguiente forma:

- Se trata de un juego de adivinacin. El usuario introducir un nmero entre 1 y
10 en el cuadro de texto txtNumero.

- Luego introducir una apuesta en el cuadro de texto txtApuesta.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

736 Entidad Clientes | By reycito2011

- Y a continuacin pulsar el botn Jugar.

- El programa calcular entonces un nmero al azar entre 1 y 10 y lo mostrar en
la etiqueta etiNumero.

- Si el nmero introducido por el usuario coincide con el nmero elegido al azar
por la mquina, entonces el usuario gana y se le debe sumar lo apostado a la
cantidad que tena en dicho momento. Si el usuario pierde entonces se le debe
restar lo apostado a la cantidad que tena. El total que le quede debe aparecer en
la etiqueta resultado.

- Al empezar el programa el usuario tiene 100 euros de bote.


Las variables globales a usar son las siguientes:

- Solo se necesita una variable global de tipo double a la que puedes llamar
ganancias. Esta variable estar inicializada al comienzo del programa a 100.


Para hacer que el ordenador calcule un nmero aleatorio entre 1 y 10 debes usar el
siguiente cdigo:

int n; //el numero
double aleatorio;
aleatorio = Math.random();
aleatorio = aleatorio * 10;
aleatorio = Math.floor(aleatorio);
aleatorio = aleatorio + 1;
n = (int) aleatorio;

(Ms informacin sobre la generacin de nmeros aleatorios en el Ejercicio de
Investigacin N3)

PROGRAMACIN

JAVA


CENTRALIZAR CDIGO


Ejercicio 1
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

737 Entidad Clientes | By reycito2011


Realice un programa cuya ventana tenga el siguiente aspecto:




Esta ventana consta de los siguientes elementos:

- Un cuadro de texto txtHoras que contiene un 0.
- Un cuadro de texto txtMinutos que contiene un 0.
- Varias etiquetas de informacin. Una contiene la palabra Horas, otra contiene
la palabra Minutos y otra contiene el smbolo dos puntos (:).
- Un cuadro de texto vaco al que se le llamar txtCantidadMin
- Un botn con el signo + al que se le llamar btnSumar.
- Un botn con el signo al que se le llamar btnRestar.

Adems:

- Una barra de herramientas con el nombre barraHerramientas, que contenga tres
botones:
o Un botn herramientasSumar.
o Un botn herramientasRestar.
o Un botn herramientasReiniciar.

- Asigne a estos botones el icono que quiera. Por ejemplo, iconos de relojes.

Adems:
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

738 Entidad Clientes | By reycito2011


- La ventana contendr una barra de mens a la que puede llamar barraMenus.
Esta barra contiene una opcin Accin a la que puede llamar menuAccion.

- Dentro de la opcin Accin, tendr estas otras opciones:




- Una opcin Sumar a la que llamar menuSumar.
- Una opcin Restar a la que llamar menuRestar.
- Una opcin Reiniciar a la que llamar menuReiniciar.
- Y una opcin Salir a la que llamar menuSalir.
- Adems tendr una serie de separadores para mejorar la presentacin del men.


El programa funcionar de la siguiente forma:


- El usuario introducir en el cuadro de texto txtCantidadMin una cantidad de
minutos.

- Si luego, pulsa el botn sumar, o bien activa el botn sumar de la barra de
herramientas, o bien activa la opcin sumar del men, entonces los minutos
escritos se suman a la hora que se muestra.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

739 Entidad Clientes | By reycito2011

- En cambio, si el usuario pulsa el botn restar, o bien activa el botn restar de la
barra de herramientas, o bien activa la opcin restar de la barra de mens,
entonces los minutos escritos se restan a la hora que se muestra.

- Si el usuario pulsa el botn reiniciar de la barra de mens o pulsa la opcin
reiniciar del men, entonces la hora que se muestra se reinicia a las 00:00 horas.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

740 Entidad Clientes | By reycito2011

Un ejemplo:





El usuario introduce 90
minutos y luego pulsa
Sumar
Entonces aparece la nueva
hora (en formato
hora:minutos)
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

741 Entidad Clientes | By reycito2011







A TENER EN CUENTA


Supongamos ahora que el
usuario introduce un 40 y
luego pulsa Restar
La hora actual se actualiza
despus de restar los 40
minutos
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

742 Entidad Clientes | By reycito2011

- Se aconseja que realice un procedimiento Sumar que se encargue de hacer la
suma de minutos.

- Realice tambin un procedimiento Restar que se encargue de hacer la resta de
minutos.

- Realice un procedimiento Reiniciar que se encargue de reiniciar la hora.

- Llame desde los distintos eventos al procedimiento que corresponda.

- Se aconseja tener una variable global hora que contenga en todo momento la
hora actual.

- Se aconseja tener una variable global minutos que contenga en todo momento
los minutos actuales.

- Para calcular la nueva hora use estos algoritmos:


Sumar minutos

Supongamos que la hora actual sea las 14:25
Y que se quiera sumar 70 minutos

Primero se hace el clculo total de minutos: 14 * 60 + 25 = 865

Luego se suman los minutos: 865 + 70 = 935

El resultado se divide entre 60 y ya tenemos la nueva hora: 935 / 60 = 15

El resto de la divisin son los minutos: 935 % 60 = 35

La nueva hora por tanto es las 15 : 35


Restar minutos

Supongamos que la hora actual sea las 14:25
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

743 Entidad Clientes | By reycito2011

Y que se quiera restar 70 minutos

Primero se hace el clculo total de minutos: 14 * 60 + 25 = 865

Luego se le restan los minutos: 865 70 = 795

El resultado se divide entre 60 y ya tenemos la nueva hora: 795 / 60 = 13

El resto de la divisin son los minutos: 795 % 60 = 15

La nueva hora por tanto es las 13 : 15

PROGRAMACIN

JAVA

CUADROS DE DILOGO

Ejercicio 1

Se pide realizar un programa que facilite el clculo del precio de implantacin de un
determinado software en una empresa.

Se pretende calcular el coste de instalacin, el coste de formacin y el coste de
mantenimiento.

Para ello, debe realizar un proyecto con una ventana como la que sigue:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

744 Entidad Clientes | By reycito2011



Esta ventana tiene tres cuadros de textos, para cada uno de los costes. Si se desea, se
puede introducir directamente cada uno de los costes en estos cuadros de textos y al
pulsar el botn Calcular aparecer la suma de los tres en la etiqueta Total.

Por otro lado, cada cuadro de texto tiene asignado un botn con tres puntos que
permitir facilitar el clculo de cada coste a travs de un cuadro de dilogo.

Cuadro de dilogo Coste de Instalacin

En el caso de que se pulse el botn correspondiente al Coste de Instalacin, el cuadro de
dilogo que debe aparecer tiene que ser el siguiente (haz que sea modal):



Aqu se indicar el nmero de copias de la versin simplificada del programa a instalar,
y el nmero de copias de la versin completa. Al pulsar el botn Aceptar, se mostrar el
coste total por instalacin en el cuadro de texto correspondiente de la ventana principal
y luego se cerrar el cuadro de dilogo.

Para calcular el coste de instalacin, ten en cuenta lo siguiente:
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

745 Entidad Clientes | By reycito2011

Cada copia de la versin simplificada cuesta 120 euros, y cada copia de la versin
completa cuesta 180 euros. Si por ejemplo, el usuario introduce 1 copia simplificada y 2
de la versin completa, el coste total ser:

coste por instalacin = 120 * 1 + 180 * 2 = 480

Si se pulsa el botn Cancelar, el cuadro de dilogo se cierra y no se muestra nada en el
cuadro de texto del coste de instalacin de la ventana principal.


Cuadro de dilogo Coste de Formacin

En el caso de que se pulse el botn correspondiente al Coste de Formacin, el cuadro de
dilogo que debe aparecer tiene que ser el siguiente (haz que sea modal):




El coste de formacin se calcular multiplicando el nmero de alumnos por el nmero
de horas por 10 euros.

Por ejemplo, si el usuario introduce 3 alumnos y 12 horas, el coste por formacin ser:

coste por formacin = 2 * 12 * 10 = 240

Al pulsar el botn Aceptar, se calcular dicho coste y se introducir en el cuadro de
texto del coste de formacin de la ventana principal (luego el cuadro de texto se
cerrar).

Si se pulsa el botn Cancelar, el cuadro de dilogo simplemente se cerrar, sin que
ocurra nada ms.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

746 Entidad Clientes | By reycito2011


Cuadro de dilogo Coste de Mantenimiento

En el caso de que se pulse el botn correspondiente al Coste de Mantenimiento, el
cuadro de dilogo que debe aparecer tiene que ser el siguiente (haz que sea modal):



Al pulsar Aceptar, el programa calcular el coste de mantenimiento y lo presentar en el
cuadro de texto correspondiente de la ventana principal (y luego se cerrar el cuadro de
dilogo)

La forma de calcular el coste de mantenimiento es la siguiente:

- Si se elige un mantenimiento Anual, entonces el coste ser de 600 euros.
- Si se elige un mantenimiento Semestral, entonces el coste ser de 350 euros.
- Si se elige un mantenimiento del tipo Puesta en funcionamiento entonces el
coste ser de 200 euros.

Si se pulsa el botn Cancelar, el cuadro de dilogo se cierra sin ms.





MEJORAS

Ayuda

Aade un botn a la ventana principal con esta forma:
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

747 Entidad Clientes | By reycito2011




Al pulsar este botn, aparecer un cuadro de dilogo de ayuda con este aspecto (haz que
no sea modal y que est siempre por encima de la ventana principal:



Al pulsar el botn Cerrar, el cuadro de dilogo simplemente se cerrar.

Para hacer el texto, usa el objeto JTextPane, y su propiedad text. Este objeto permite
crear cuadros con gran cantidad de texto. Ten en cuenta que cuando aadas un
JTextPane este aparecer dentro de un JScrollPane.


Pantalla de Splash (Presentacin)

Se aadir un nuevo cuadro de dilogo al proyecto que servir como pantalla de
presentacin (a estos cuadros de dilogo se les suele denominar Splash)

Disee este cuadro de dilogo como quiera. Puede aadir varias imgenes, colocar el
texto donde quiera, etc.

Debe mostrar este cuadro de dilogo al comenzar el programa (en el evento
windowOpened del formulario)

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

748 Entidad Clientes | By reycito2011

Si quiere mostrar el cuadro de dilogo de la presentacin en el centro de la pantalla,
puede usar este cdigo (se supone que el cuadro de dilogo se llama dialogoPres):

int x=(int)
(Toolkit.getDefaultToolkit().getScreenSize().getWidth()/2 -
dialogoPres.getWidth()/2);
int y=(int)
(Toolkit.getDefaultToolkit().getScreenSize().getHeight()/2 -
dialogoPres.getHeight()/2);
dialogoPres.setLocation(x,y);

El cuadro de dilogo debe tener un botn Cerrar, o bien, debe tener la posibilidad de
cerrarse cuando el usuario haga clic sobre l en cualquier parte.

Para mejorar su cuadro de dilogo de presentacin, se recomienda que active la
propiedad del cuadro de dilogo llamada undecorated. Esta propiedad oculta la barra de
ttulo del cuadro de dilogo.

PROGRAMACIN

JAVA

DISEO DE VENTANA DESDE CDIGO

Ejercicio 1

Realice un proyecto cuya ventana tenga el siguiente diseo. Este diseo lo tiene que
hacer totalmente desde cdigo, sin usar la ventana de diseo del NetBeans:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

749 Entidad Clientes | By reycito2011



Tenga en cuenta lo siguiente:

- La ventana debe tener como ttulo Ejercicio 1
- El tamao de la ventana al arrancar el programa debe ser de 350 x 400
- Haga que la ventana aparezca en el centro de la pantalla.
- El recuadro de color verde con el texto RESULTADO es una etiqueta.
- El botn con el texto metros/seg es un JToggleButton y debe estar activado al
arrancar el programa.
- En la parte inferior de la ventana hay un JSlider. Su valor mnimo ser 0 y su
valor mximo ser 100. El valor inicial del JSlider tiene que ser 20.
- El JSlider debe mostrar sus marcas (mtodo setPaintTicks) y la separacin entre
marcas debe ser de 5 (mtodo setMinorTickSpacing)


Ejercicio 2

Realice un proyecto cuya ventana principal tenga el siguiente diseo. Este diseo lo
tiene que hacer directamente desde cdigo, sin usar la ventana de diseo del NetBeans.




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

750 Entidad Clientes | By reycito2011





Tenga en cuenta lo siguiente:

- La ventana debe tener el ttulo Ejercicio 2
- El tamao de la ventana debe ser de 300x300
- La ventana debe aparecer en el centro de la pantalla al arrancar el programa.
- En la parte derecha la ventana contiene un JList con las ocho provincias
andaluzas.
- En la parte izquierda la ventana contiene un JComboBox con unos tipos de
artculos. (El combo se muestra desplegado para que puedas ver la lista de tipos
de artculos)
- En la parte inferior hay una etiqueta vaca con color CYAN de fondo.

PROGRAMACIN

JAVA

ASIGNACIN DE EVENTOS DESDE CDIGO

Ejercicio 1

Realice un programa para calcular el rea y el permetro de un crculo.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

751 Entidad Clientes | By reycito2011

La ventana del programa debe tener un aspecto parecido al siguiente:




El usuario introducir un radio y

- Si pulsa el botn rea se calcular el rea del crculo. (actionPerformed del
botn de rea)
- Si pulsa el botn Permetro se calcular el permetro del crculo.
(actionPerformed del botn de Permetro)
- Si pulsa el botn Limpiar en el cuadro de texto aparecer un 0 y la etiqueta de
resultado (la de color rojo) se vaciar. (actionPerformed del botn Limpiar)

Todo el programa debe ser realizado directamente desde cdigo, sin usar la ventana de
diseo de NetBeans.


Ejercicio 2

Realice un programa para calcular la velocidad de un vehculo. La ventana del programa
tendr el siguiente diseo:


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

752 Entidad Clientes | By reycito2011



El programa funcionar de la siguiente forma:
- El usuario introducir un Espacio y un Tiempo, y al pulsar Enter
(actionPerformed) en cualquiera de los dos cuadros de textos aparecer la
velocidad en la etiqueta de resultados de color amarillo.

La velocidad se calcula as: velocidad = espacio / tiempo

- El usuario tambin puede introducir una Velocidad y un Tiempo en los cuadros
de textos de la parte derecha. Si pulsa Enter en cualquiera de estos cuadros de
texto (actionPerformed) entonces se calcular el Espacio en la etiqueta roja de
resultados.

El espacio se calcula as: espacio = velocidad * tiempo


Tendr que programar por tanto el evento actionPerformed de cada cuadro de texto.

Tanto el diseo como la programacin de eventos debe realizarla directamente desde
cdigo, sin usar la ventana de diseo del NetBeans.

PROGRAMACIN

JAVA

ASIGNACIN DE EVENTOS DESDE CDIGO. EVENTOS DE RATN

Ejercicio 1

Realice un programa que tenga el siguiente aspecto:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

753 Entidad Clientes | By reycito2011



En la ventana hay dos etiquetas. Una de ellas es de color negro y la otra es de color gris.
Estn situadas de tal forma que la etiqueta de color negro simula la sombra de la otra
etiqueta.

La etiqueta de color gris debe tener asociados los siguientes eventos del ratn:

- mouseEntered. Cuando el ratn entre en la superficie de la etiqueta debe cambiar
su texto por Pulsame.

- mouseExited. Cuando el ratn salga de la superficie de la etiqueta debe cambiar
el texto de esta otra vez por Etiqueta.

- mousePressed. Cuando se pulse un botn del ratn sobre la etiqueta, esta debe
moverse de sitio de forma que parezca que se ha pulsado como si fuera un botn
(observa la imagen)


(sin pulsar) (pulsada)

Para conseguir esto, debes colocar la etiqueta gris sobre la etiqueta negra.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

754 Entidad Clientes | By reycito2011

Cuando suceda este evento tambin debes cambiar el texto de la etiqueta por
Est pulsado

- mouseReleased. Cuando se suelte el botn del ratn, la etiqueta volver a su
posicin normal, y el texto cambiar a Pulsado.
PROGRAMACIN

JAVA

ASIGNACIN DE EVENTOS DESDE CDIGO. GENERALIDADES

Ejercicio 1

Realice un programa que tenga el siguiente aspecto:



En la ventana hay simplemente un JSlider (deslizador) y una etiqueta que contiene
inicialmente el valor 50.

Se pide lo siguiente:

1. Realice el diseo de la ventana desde cdigo.

2. Interesa que cuando se modifique el valor del JSlider, dicho valor aparezca en la
etiqueta. Esto se tiene que realizar programando el evento correspondiente desde
cdigo. Aqu tiene la informacin necesaria:

a. El evento a programar del JSlider se llama: stateChanged
b. Pertenece al oyente llamado ChangeListener
c. Asignars el oyente al JSlider con el mtodo addChangeListener
d. El evento lleva como parmetro un objeto evt del tipo ChangeEvent

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

755 Entidad Clientes | By reycito2011

3. Interesa que al girar la rueda del ratn cambie el valor del JSlider. Para controlar
el movimiento de la rueda del ratn debe asignar un evento al formulario (this).
Aqu tiene la informacin necesaria del evento para la rueda del ratn:

a. El evento a programar de el formulario (this) se llamad
mouseWheelMoved
b. Pertenece al oyente llamado MouseWheelListener
c. Se asigna a la ventana (this) con el mtodo addMouseWheelListener
d. El evento lleva como parmetro un objeto evt del tipo MouseWheelEvent

PISTA:
El objeto evt pasado como parmetro del evento de la rueda del ratn contiene
informacin sobre como se ha movido la rueda. Este objeto tiene un mtodo
llamado getUnitsToScroll que devuelve un nmero entero que indica cuanto se
ha movido la rueda. Este nmero puede ser positivo o negativo segn hacia
donde se movi la rueda.

Aprovechando esto, el evento de la rueda del ratn se puede programar as:

int valor = slider.getValue(); //slider es el objeto
JSlider
valor = valor + evt.getUnitsToScroll();
slider.setValue(valor);
PROGRAMACIN

JAVA

ASIGNACIN DE EVENTOS DESDE CDIGO. EVENTOS DE VENTANA


Ejercicio 1

La ventana sobre la que trabajamos tambin tiene sus propios eventos. Estos
eventos son los siguientes:

- windowOpened Sucede cuando la ventana se abre.
- windowClosing Sucede cuando la ventana va a cerrarse.
- windowActivated Sucede cuando la ventana se activa.
- windowDeactivated Sucede cuando la ventana se desactiva.

Los eventos de ventana pertenecen al adaptador WindowAdapter.

El adaptador se asigna a la ventana (this) a travs del mtodo
addWindowListener.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

756 Entidad Clientes | By reycito2011


Todos los eventos llevan como parmetro un objeto evt del tipo WindowEvent.


Teniendo en cuenta esto, realizar un programa cuya ventana tenga nicamente
una etiqueta.


El programa funcionar de la siguiente forma:

- Cuando se active la ventana, aparecer un mensaje La ventana se ha
activado en la etiqueta central.
- Cuando se desactive la ventana, aparecer un mensaje La ventana se
ha desactivado en la etiqueta central.

Nota: Una forma de desactivar la ventana es hacer clic sobre la barra de
tareas. Luego se puede volver a activar haciendo clic sobre la ventana.

Adems, el programa debe hacer esto otro:

- Cuando se abra la ventana, debe aparecer un mensaje de bienvenida
(un JOptionPane)
- De la misma forma, cuando se cierre la ventana, debe aparecer un
mensaje de despedida.



PROGRAMACIN

JAVA

VECTORES DE COMPONENTES


Ejercicio 1

Realizar un programa en cuya ventana aparezcan 7 JToggleButton (use un
vector)

Cada uno de los botones debe contener como texto un da de la semana.

Los botones deben aparecer en horizontal:

Aada un botn Aceptar a la ventana (un botn normal) y dos etiquetas.

Al pulsar el botn Aceptar debe aparecer en una de las etiquetas el nmero
de botones activados. Tambin debe aparecer en la otra etiqueta los das de la
semana elegidos (activos)
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

757 Entidad Clientes | By reycito2011








Ejercicio 2

Se necesita hacer un programa que muestre la siguiente ventana:



Disee la ventana totalmente desde cdigo y usando vectores. Tendr que
usar los siguientes vectores:

- Un vector de etiquetas (JLabel) para cada etiqueta. Necesitars tambin
un vector auxiliar de String que contenga los textos de las etiquetas:
Devoluciones, Impagos, Caducidad y Robos.

- Un vector de cuadros de texto (JTextField)

- Un vector de botones (JButton)


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

758 Entidad Clientes | By reycito2011

Tendrs que construir cada vector y luego tendrs que construir los elementos
de dichos vectores, colocndolos en la ventana.

El programa no tiene que hacer nada, solo limtese a disear la ventana.


PROGRAMACIN

JAVA

VECTORES DE COMPONENTES


Ejercicio 1

Realizar un programa donde aparezcan diez botones conteniendo los nmeros
entre el 0 y 9.

Todos estos botones pertenecern a un vector de JButton, y tendrn asociado
un evento actionPerformed.

Cada vez que se pulse uno de los botones, en un cuadro de texto de la ventana
se aadir el dgito correspondiente, como si estuvieramos usando una
calculadora.

Aadir tambin un botn Borrar (no perteneciente al vector) que permita
borrar el contenido del cuadro de texto.

El aspecto del programa puede ser similar al siguiente:





Se puls el 9 y luego
el 5
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

759 Entidad Clientes | By reycito2011

COLOCACIN DE LOS BOTONES

Para la colocacin de los botones en el JFrame, se puede usar un vector de
posiciones X y un vector de posiciones Y que contengan las posiciones (X,Y)
de cada botn:

int vectorx[]={10,40,70,10,40,70,10,40,70,10};
int vectory[]={10,40,70,10,40,70,10,40,70,10};

Y luego se puede aplicar los valores de estos vectores en el momento de usar
setBounds:

for () {

vBotones[i].setBounds(vectorx[i],vectory[i], 20,20);

}






Ejercicio 2

Se pide hacer un programa que muestre 8 etiquetas, cada una con el nombre
de una provincia andaluza. Estas etiquetas estarn definidas al principio con
color azul de fondo y texto negro.

Crear un vector para hacer el programa que contenga las ocho etiquetas
(vector de JLabel) y las situar en el formulario como desee.

El programa debe funcionar de la siguiente forma:

- Al hacer clic sobre una etiqueta (mouseClicked), el color de fondo de
esta cambiar a verde, mientras que el color de fondo de todas las
dems se colocar en azul (para cambiar el color de fondo:
setBackground y setOpaque)

- Al sobrevolar el ratn la etiqueta (evento mouseEntered) el color del
texto de la etiqueta se pondr en amarillo (para cambiar el color de texto:
setForeground).

- Al abandonar el ratn la etiqueta (evento mouseExited) el color del texto
de la etiqueta volver a ser de color negro.


PROGRAMACIN

JAVA
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

760 Entidad Clientes | By reycito2011




POO. CREACIN Y USO DE CLASES PROPIAS


Ejercicio 1

Crear un proyecto Java en NetBeans cuya ventana principal tenga el siguiente aspecto:




Ten en cuenta lo siguiente:

- Al iniciarse el programa, debe estar activada por defecto la opcin Pared Norte.

- El botn Asignar asignar el ancho y alto que se haya introducido a la pared que
est seleccionada en ese momento.

- El botn Area mostrar en un JOptionPane el rea de la pared seleccionada en
ese momento.

- El botn Permetro mostrar en un JOptionPane el permetro de la pared
seleccionada en ese momento.


CLASE RECTANGULO
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

761 Entidad Clientes | By reycito2011


PARA HACER ESTE EJERCICIO USAR UNA CLASE DE CREACIN
PROPIA LLAMADA RECTNGULO.




La clase Rectangulo debe tener las siguientes caractersticas:


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

762 Entidad Clientes | By reycito2011

CLASE RECTANGULO

Nombre de la clase: Rectangulo

Propiedades de los objetos de la clase Rectangulo:

Base (double)
Altura (double)

Valores iniciales de las propiedades de los objetos de la clase Rectangulo:

Base 100
Altura 50

Mtodos:

Mtodos set:

setBase permite asignar un valor a la propiedad Base.
setAltura permite asignar un valor a la propiedad Altura.

Mtodos get:

getBase devuelve el valor de la propiedad Base
getAltura devuelve el valor de la propiedad Altura
getArea devuelve el rea del rectngulo
getPermetro devuelve el permetro del rectngulo

Otros mtodos:

Cuadrar este mtodo debe hacer que la Altura tenga el valor de la
Base.





TENDR QUE PROGRAMAR ESTA CLASE E INCLUIRLA EN SU
PROYECTO



UNA VEZ INCLUIDA ESTA CLASE, CREAR CUATRO OBJETOS DE LA
CLASE RECTNGULO, CADA UNO DE LOS CUALES HAR REFERENCIA
A UNA DE LAS CUATRO PAREDES:
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

763 Entidad Clientes | By reycito2011



Objetos de la clase Rectngulo que usar en el proyecto:

- ParedNorte
- ParedSur
- ParedOeste
- ParedEste


Para programar cada botn de la ventana principal, solo tiene que ayudarse dando
rdenes a las cuatro paredes o pidindoles informacin.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

764 Entidad Clientes | By reycito2011

Ejercicio 2

PRIMERA PARTE

Trabajamos de programador para una empresa de venta por correo. Esta
empresa recibe pedidos de clientes y necesita controlar la situacin de cada
pedido.

Para facilitar la realizacin de aplicaciones para esta empresa se decide crear
una CLASE de objetos llamada PEDIDO.

La Clase Pedido permitir crear objetos de tipo pedido. Estos objetos nos
proporcionarn informacin sobre el estado del pedido y nos facilitar la
programacin de los proyectos para la empresa.

SE PIDE PROGRAMAR LA CLASE PEDIDO TENIENDO EN CUENTA SUS
CARACTERISTICAS, LAS CUALES SE MENCIONAN A CONTINUACIN:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

765 Entidad Clientes | By reycito2011

CLASE PEDIDO

Nombre de la Clase: Pedido

Propiedades de los objetos de la Clase Pedido:
Articulo: una cadena que indica el nombre del artculo que se ha
pedido.
Unidades: un entero indicando las unidades pedidas.
Precio: un double indicando el precio unidad.
GastosEnvio: un double indicando los gastos de envo.
Descuento: un double indicando el tanto por ciento de descuento.


Valores iniciales de las propiedades de los objetos de la Clase Pedido:
Articulo: (cadena vaca)
Unidades: 1
Precio: 0
GastosEnvio: 3
Descuento: 0

Mtodos set
setArticulo permite asignar el nombre del artculo al objeto pedido
setUnidades permite asignar el nmero de unidades pedidas
setPrecio permite asignar un precio unidad al artculo del pedido
setGastosEnvio permite asignar la cantidad de gastos de envo del
pedido
setDescuento permite asignar el tanto por ciento de descuento del
pedido

Mtodos get
getArticulo devuelve el nombre del artculo del pedido
getUnidades devuelve el nmero de unidades del artculo
getPrecio devuelve el precio del artculo del pedido
getGastosEnvio devuelve los gastos de envo del pedido
getDescuento devuelve el tanto por ciento de descuento del pedido

getTotalSinIva devuelve el total sin iva del pedido. Se calcula as:

TotalSinIva = (Unidades * Precio) + gastos de
envio

getIva devuelve la cantidad de Iva del pedido. Se calcula as:

Iva = TotalSinIva * 0,16

getTotalMasIva devuelve el total del pedido ms el Iva. Se calcula as:

TotalMasIva = TotalSinIva + Iva

getTotalDescuento devuelve el total del descuento. Se calcula as:
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

766 Entidad Clientes | By reycito2011


TotalDescuento = TotalMasIva * Descuento / 100

getTotalPedido devuelve el total del pedido. Se calcula as:

TotalPedido = TotalMasIva TotalDescuento


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

767 Entidad Clientes | By reycito2011

SEGUNDA PARTE


Realizar un proyecto cuya ventana principal tenga el siguiente aspecto:



El programa funcionar de la siguiente forma:

- En el panel Datos del Pedido se introducirn los siguientes datos del
pedido a enviar:
o Nombre del Artculo
o Unidades pedidas
o Precio unidad del artculo
o Gastos de envo
o Tanto Por Ciento de descuento.

- Al pulsar el botn Aceptar Pedido, todos estos datos deben asignarse a
un objeto llamado ped de tipo Pedido.

- Al pulsar el botn Ver Desglose, deben aparecer en las distintas
etiquetas (de color verde en la imagen) los siguientes datos del pedido:

o Nombre del Artculo
o Unidades pedidas
o Precio unidad
o Gastos de envo
o Total Sin Iva del pedido
o Iva del pedido
o Total Ms iva
o Total de Descuento
o Total del Pedido.

- Para hacer esto solo tendr que pedirle informacin al objeto ped
usando sus mtodos get y luego colocar esta informacin en cada
etiqueta.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

768 Entidad Clientes | By reycito2011



PARA PODER REALIZAR ESTE PROYECTO SER NECESARIO INCLUIR
LA PROGRAMACIN DE LA CLASE PEDIDO REALIZADA EN EL
APARTADO ANTERIOR DEL EJERCICIO.

SI NO SE AADE LA PROGRAMACIN DE LA CLASE, SER IMPOSIBLE
CREAR EL OBJETO PED QUE NOS PERMITE MANEJAR LAS
CARACTERSTICAS DEL PEDIDO.

PROGRAMACIN

JAVA


POO. HERENCIA


EJERCICIO 1

Interesa crear una etiqueta propia cuya funcin sea la de mostrar temperaturas.

Este tipo de etiqueta se llamar EtiquetaTemperatura y tendr las siguientes
caractersticas:


Propiedades
temperatura double


Mtodos

setTemperatura()

Este mtodo recibe como parmetro un double con la temperatura a mostrar.
Esta temperatura se almacena en la propiedad temperatura.

Adems, este mtodo muestra la temperatura en la etiqueta, aadiendo C. Por
ejemplo, si la temperatura asignada fuera 10, entonces en la etiqueta aparecera:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

769 Entidad Clientes | By reycito2011

10 C


getTemperatura()

Este mtodo devuelve un double con la temperatura actual.


mostrarRangoColor()

Este mtodo asignar un color a la etiqueta segn la temperatura que contenga.
Aqu est la escala de colores a usar:

< 0 Azul
>= 0 y < 10 Cyan
>= 10 y < 25 Magenta
>= 25 y < 35 Naranja
>= 35 Rojo

Si la etiqueta no contuviera un valor numrico vlido, entonces se mostrar
transparente (es decir, setOpaque(false) )


cambiarTemperatura()

Este mtodo recibe un valor double como parmetro. Si este valor es positivo,
entonces la temperatura aumenta en este valor. Si el valor es negativo, la
temperatura disminuye.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

770 Entidad Clientes | By reycito2011

Un ejemplo de uso de una etiqueta de este tipo:

etiTemp.setTemperatura(12); //en la etiqueta se mostrar
12 C
etiTemp.mostrarRangoColor(); //la etiqueta se mostrar con
color
//de fondo Magenta
etiTemp.cambiarTemperatura(20); //la temperatura sube 20 C
etiTemp.mostrarRangoColor(); //la etiqueta se muestra
naranja
double t = etiTemp.getTemperatura(); //t contendr un 32



Objetivo del ejercicio

Debe programar la clase EtiquetaTemperatura de forma que herede de las etiquetas
normales de java (JLabel)

Tendr que aadir la propiedad temperatura a la clase EtiquetaTemperatura y
programar los mtodos antes comentados.



EJERCICIO 2


Realiza un proyecto cuya ventana principal tenga el siguiente aspecto:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

771 Entidad Clientes | By reycito2011



En la parte superior aadir (a travs de cdigo) una etiqueta del tipo
EtiquetaTemperatura, que estar inicializada a 0 C

En la parte inferior aadir tres botones y un cuadro de texto (esto lo puede
hacer desde la ventana de diseo). Cada vez que se pulse el botn +, la
temperatura de la etiqueta aumentar en la cantidad de grados indicados en el
cuadro de texto. Y cuando se pulse el botn -, la temperatura disminuir.

Cada vez que vare la temperatura de la etiqueta, deber variar su color.

Al pulsar el botn Fahrenheit, aparecer en un JOptionPane la temperatura
que tiene actualmente la etiqueta convertida a grados Fahrenheit.
PROGRAMACIN

JAVA


POO. DIALOGOS PROPIOS


Planteamiento Inicial

Todos los proyectos que hacemos en el trabajo tienen que llevar un cuadro de dilogo
de presentacin que contenga:

- El nombre del programa.
- La versin.
- El nombre del programador.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

772 Entidad Clientes | By reycito2011

Resulta un rollo tener que programar el cuadro de presentacin cada vez que nos
encargan un nuevo proyecto, as que programaremos una Clase Propia que derive de la
clase JDialog, y que represente un cuadro de dilogo que contenga el nombre del
programa, la versin y el programador.

Gracias a esta clase que vamos a programar, no tendremos que perder tiempo cada vez
que necesitemos aadir una presentacin a los futuros proyectos que hagamos en la
empresa.

Clase DialogoPresentacion

Se programar una clase propia que se llamar DialogoPresentacion. Esta clase ser un
cuadro de dilogo, o, dicho de otra forma, heredar de la clase JDialog.

El aspecto de un cuadro de dilogo de este tipo en funcionamiento podra ser el
siguiente:




Las tres etiquetas con bordes se llaman respectivamente: etiNombrePrograma,
etiVersion, etiNombreProgramador.

El botn se llamar btnEmpezar.

Todos estos elementos estn dentro de un JPanel al que se le ha asignado un borde con
relieve.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

773 Entidad Clientes | By reycito2011



Mtodos de la clase DialogoPresentacion

Esta clase tendr los siguientes mtodos:

setNombrePrograma

- Recibir una cadena con el nombre del programa, y esta cadena se introducir en
la etiqueta etiNombrePrograma.

setVersion

- Recibir una cadena con la versin del programa, y esta cadena se introducir en
la etiqueta etiVersion.

setNombreProgramador

- Recibir una cadena con el nombre del programador, y esta cadena se
introducir en la etiqueta etiNombreProgramador.


Cuando el usuario pulse el botn Empezar, lo nico que tiene que suceder es que se
cierre el cuadro de dilogo.


Proyecto Ejemplo

Debes crear un programa simple que permita calcular el rea de un crculo.

Este proyecto debe incluir una presentacin que aparezca al principio. Esta pantalla de
presentacin debe contener los siguientes datos:

Nombre del programa: Clculo del rea del Crculo
Versin: v 1.0
Nombre del programador: su nombre.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

774 Entidad Clientes | By reycito2011

Tendr por supuesto, que incluir la clase DialogoPresentacion en su proyecto, y crear
un objeto del tipo DialogoPresentacion. Debe asignar a este objeto los tres datos:
nombre del programa, versin y programador. Y hacer que aparezca la presentacin
cuando se ejecute el programa.

Pista. La aparicin de la presentacin se programar en el evento windowOpened de la
ventana principal.
PROGRAMACIN

JAVA

PROGRAMACIN MDI

Bloc de Notas MDI


Planteamiento Inicial

Se pretende realizar un programa capaz de abrir ficheros de texto (.txt). Este programa
ser MDI, es decir, ser capaz de abrir varios ficheros, mostrando sus contenidos en
distintas ventanas.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

775 Entidad Clientes | By reycito2011



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

776 Entidad Clientes | By reycito2011

Ventana Principal

La ventana principal del programa constar de un men con las siguientes opciones:


Archivo
Abrir
Cerrar
Cerrar Todos
Salir

Ventana
Cascada
Mosaico Horizontal
Mosaico Vertical



En el centro de la ventana (se recomienda un Layout del tipo BorderLayout) se colocar
un panel del tipo JDesktopPane que ser el encargado de contener las ventanas internas.
Puede llamar a este panel panelInterno.

Aspecto de la ventana principal:


panelInterno
(JDesktopPane)
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

777 Entidad Clientes | By reycito2011



Ventana Interna

Debe aadir a su proyecto una clase JInternalFrame para disear las ventanas internas.

Una ventana interna constar nicamente de un objeto JTextPane que ocupar toda la
ventana.

Los objetos JTextPane son similares a los cuadros de texto (JTextField) con la
diferencia de que pueden contener grandes cantidades de texto en varias lneas. Llame al
objeto JTextPane con el nombre txtTexto.



Estas ventanas internas contendrn el texto del fichero que se abra. Para facilitar la tarea
de abrir un fichero y colocar su texto en la ventana interna debe aadir el siguiente
mtodo a la clase ventana interna:

public void ponerTexto(String caminofichero) {
try {
File fi = new File(caminofichero);
FileReader lectura = new FileReader(fi);
BufferedReader entrada = new
BufferedReader(lectura);
String linea;
txtTexto
(JTextPane)
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

778 Entidad Clientes | By reycito2011

String texto="";
linea = entrada.readLine();
while(linea!=null) {
texto = texto+linea+"\n";
linea = entrada.readLine();
}
entrada.close();
lectura.close();
txtTexto.setText(texto);
} catch(Exception e) {
JOptionPane.showMessageDialog(null,"Error al
leer fichero.");
}
}


Este mtodo recibe el camino de un fichero, y coloca dentro del JTextPane (el panel de
texto) el texto contenido en el fichero. Aunque no es necesario entender el cdigo de
este mtodo, en la parte final del enunciado se da una explicacin de su funcionamiento.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

779 Entidad Clientes | By reycito2011

Opciones principales del programa

Se comenta a continuacin la forma en que deben funcionar las distintas opciones del
programa:

Opcin Archivo Abrir
Esta opcin servir para abrir un fichero .txt y mostrar su contenido en una ventana
interna. Para ello, tendr que mostrar un JFileChooser para abrir un fichero.

Si el usuario selecciona un fichero, entonces tendr que crear una ventana interna
llamada por ejemplo vi, y mostrarla en el panel Interno.

Finalmente, usando el mtodo ponerTexto de la ventana interna vi deber mostrar el
contenido del fichero seleccionado en el JFileChooser.

vi.ponerTexto(caminoficheroseleccionado)

Al abrir un fichero de texto en una ventana, deber aparecer el camino del fichero en la
barra de ttulo de la ventana interna.

Opcin Archivo Cerrar
La opcin Cerrar cerrar la ventana interna que est activa (si es que hay alguna)

Opcin Archivo Cerrar Todas
Esta opcin cerrar todas las ventanas internas abiertas en el panel interno.

Opcin Archivo Salir
Permitir salir del programa.

Opcin Ventana Cascada
Esta opcin colocar todas las ventanas internas que haya abiertas en cascada. Esto es,
una encima de otra, mostrando el ttulo de cada una.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

780 Entidad Clientes | By reycito2011



Opcin Ventana Mosaico Horizontal
Esta opcin har visible todas las ventanas mostrndolas en horizontal, ocupando todo
el panel interno.

Para ello, tendrs que obtener el tamao vertical del panel interno, y dividirlo por el
nmero de ventanas abiertas en l. Esa cantidad ser la altura de cada ventana.

El ancho de cada ventana ser el ancho del panel interno.

Una vez calculado el ancho y alto de cada ventana debes colocar cada ventana una
debajo de otra.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

781 Entidad Clientes | By reycito2011



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

782 Entidad Clientes | By reycito2011

Opcin Ventana Mosaico Vertical
Esta opcin har visible todas las ventanas mostrndolas en vertical, ocupando todo el
panel interno.

Para ello, tendrs que obtener el tamao horizontal del panel interno, y dividirlo por el
nmero de ventanas internas abiertas en l. Esa cantidad ser el ancho de cada ventana.

Al alto de cada ventana ser el alto del panel interno.

Una vez calculado el ancho y alto de cada ventana debes colocar cada ventana una al
lado de otra.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

783 Entidad Clientes | By reycito2011

EXPLICACIN MTODO ponerTexto

Para realizar este ejercicio es necesario aadir a la clase de la ventana interna el
siguiente mtodo. No es necesario entender el cdigo de este procedimiento para hacer
el ejercicio, pero en cualquier caso, aqu hay una explicacin de este:


public void ponerTexto(String caminofichero) {
try {
File fi = new File(caminofichero);
FileReader lectura = new FileReader(fi);
BufferedReader entrada = new
BufferedReader(lectura);
String linea;
String texto="";
linea = entrada.readLine();
while(linea!=null) {
texto = texto+linea+"\n";
linea = entrada.readLine();
}
entrada.close();
lectura.close();
txtTexto.setText(texto);
} catch(Exception e) {
JOptionPane.showMessageDialog(null,"Error al
leer fichero.");
}
}


Este mtodo recibe un camino de fichero de texto y muestra dentro de un JTextPane el
texto que contiene dicho fichero.

La forma de acceder a un fichero para extraer su contenido es a travs de canales. Los
canales son objetos que se enganchan al fichero uno detrs de otro. Cada canal ofrece
una serie de posibilidades al programador.

Para los ficheros de texto, la forma de acceder a ellos es la siguiente:
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

784 Entidad Clientes | By reycito2011


- Se crea un objeto File a partir del camino del fichero (El camino del fichero es
un String)
- Se engancha al objeto File un objeto del tipo FileReader. (Los objetos
FileReader son canales de lectura, que permiten extraer informacin del fichero)
- Se engancha al canal FileReader un objeto BufferedReader. (Los objetos
BufferedReader dan facilidad al programador para extraer el texto del fichero)
- Finalmente, a travs del mtodo readLine del objeto BufferedReader se pueden
extraer una a una las lneas de texto del fichero.
- Una vez finalizado el trabajo con el fichero se cierra el canal FileReader y el
canal BufferedReader.







La creacin de un objeto File a partir del camino del fichero se hace con la siguiente
instruccin:

File fi = new File(caminofichero);

La creacin de un canal FileReader y la conexin con el fichero anterior se hace a travs
de la siguiente instruccin:

FileReader lectura = new FileReader(fi);

La creacin de un canal BufferedReader y la conexin con el canal FileReader anterior
se hace a travs de la siguiente instruccin:

BufferedReader entrada = new
BufferedReader(lectura);

Una vez hecho esto, tenemos un objeto llamado entrada del tipo BufferedReader que
posee un mtodo llamado readLine que permite leer una lnea de texto del fichero. A
travs de este mtodo vamos leyendo lneas de texto del fichero.

Hay que tener en cuenta que si al usar readLine obtenemos el valor null, es que ya no
hay ms texto en el fichero.
Camino Fichero
(String)
Objeto Fichero
(File)
Canal de Acceso al
Fichero
(FileReader)
Canal de Acceso al
Fichero
(BufferedReader)
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

785 Entidad Clientes | By reycito2011


Todo esto se aprovecha para crear una cadena larga con el contenido del fichero:

String linea;
String texto="";
linea = entrada.readLine();
while(linea!=null) {
texto = texto+linea+"\n";
linea = entrada.readLine();
}

El cdigo anterior crea una variable texto que contiene el texto completo del fichero.
Este cdigo extrae una a una las lneas de texto del fichero y las va concatenando en la
variable texto.

Como hemos terminado con la manipulacin del fichero, es bueno cerrar los canales de
comunicacin con el fichero (el canal FileReader y el canal BufferedReader creados):

entrada.close();
lectura.close();

Y finalmente metemos el texto extrado en el panel de texto de la ventana, el cual se
llama txtTexto:

txtTexto.setText(texto);


Todo esto debe estar dentro de un try ... catch ya que es un cdigo susceptible de tener
errores de ejecucin (es decir, de lanzar excepciones)
PROGRAMACIN

JAVA - BASES DE DATOS


MODELO E-R



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

786 Entidad Clientes | By reycito2011

SUPUESTO N 1. "CONTROL DE VENTAS"

Una empresa necesita un programa para controlar las ventas que realiza diariamente.

La empresa tiene una lista de clientes cuyos datos quiere controlar. Los datos que la
empresa quiere guardar de cada cliente es : el CIF, el nombre, la ciudad y un telfono de
contacto.

La empresa tiene una serie de comerciales que son los que realizan las ventas. La
empresa quiere controlar la informacin de sus comerciales. Concretamente necesita
almacenar de ellos sus nombres y apellidos y su mvil. A cada comercial se le asigna un
nmero en la empresa para distinguirlos.

Diariamente, los comerciales realizan ventas de productos a los clientes. Interesa
almacenar informacin sobre dichas ventas. De cada venta interesa almacenar el nombre
del producto que se vende, las unidades vendidas del artculo, el precio del producto y la
fecha en que se efectu la venta. Tambin interesa saber la forma de pago.

Debes tener en cuenta tambin la siguiente informacin :

Un comercial realiza ventas. Una venta es realizada por un solo comercial.

Una venta en concreto se realiza a un solo cliente. Por otro lado, un cliente comprar
muchas cosas a la empresa. Es decir, se le pueden hacer muchas ventas a un cliente.


SE PIDE :

1. Identifique las entidades que participan, teniendo en cuenta el enunciado.
2. Identifique los atributos de cada entidad.
3. Indique el atributo clave para cada entidad. Si fuera necesario, aada un atributo
clave a la entidad.
4. Indique las relaciones que existen entre las entidades.
5. Indique el tipo de relaciones existentes (Nota : no existen relaciones Muchas a
Muchas)
6. Averigue las claves forneas segn las relaciones existentes.
7. Realice el grfico correspondiente al Modelo E-R.



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

787 Entidad Clientes | By reycito2011

SUPUESTO N 2. TRANSPORTES


Una empresa cuenta con una serie de camiones que usa para transportar diversos
productos. La empresa necesita un programa que gestione toda la informacin
producida por esta actividad.

Concretamente, la empresa necesita almacenar informacin sobre los camiones que
posee. Necesita almacenar la matrcula de cada camin, la marca y el modelo y el ao
de compra.

Por otro lado, la empresa tiene una serie de conductores. De cada conductor se quiere
almacenar el nombre, los apellidos, el mvil y el sueldo que gana. A cada conductor se
le asigna un nmero en la empresa. No hay dos conductores con dos nmeros iguales.

La empresa quiere controlar la informacin correspondiente a cada transporte que se
efecta. Concretamente quiere saber la ciudad de origen del transporte, la ciudad de
destino, el material que se transporta, cuantos kilos se transporta y la fecha del
transporte.

Cada transporte concreto est encargado por un cliente. A la empresa le interesa tener
informacin de los clientes que encargan transportes. La informacin que interesa
almacenar de cada cliente es : el CIF del cliente, el nombre de la empresa, la direccin
de la empresa, el telfono de la empresa.

Hay que tener en cuenta tambin la siguiente informacin :

En un transporte en concreto solo participa un camin. Ahora bien, un camin se usa en
muchos transportes.

En cada transporte participa un solo conductor, y, por supuesto, un conductor realiza
muchos transportes mientras trabaja para la empresa.

Cada transporte est encargado por un solo cliente. Pero ten en cuenta que un cliente
puede encargar muchos transportes.


SE PIDE :

1. Identifique las entidades que participan, teniendo en cuenta el enunciado.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

788 Entidad Clientes | By reycito2011

2. Identifique los atributos de cada entidad.
3. Indique el atributo clave para cada entidad. Si fuera necesario, aada un atributo
clave a la entidad.
4. Indique las relaciones que existen entre las entidades.
5. Indique el tipo de relaciones existentes (Nota : no existen relaciones Muchas a
Muchas)
6. Averigue las claves forneas segn las relaciones existentes.
7. Realice el grfico correspondiente al Modelo E-R.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

789 Entidad Clientes | By reycito2011

SUPUESTO N 3. MEDICIONES


Una empresa qumica realiza mediciones constantemente de los materiales que contiene
la tierra de distintas parcelas de cultivo, y le interesara tener un control de toda la
informacin que esto genera. Para ello le encargan un programa para gestionar esta
informacin.

A esta empresa le interesara guardar informacin sobre cada medicin que se hace.
Interesa almacenar lo siguiente: fecha en que se hace la medicin, hora, temperatura
ambiente en el momento de hacer la medicin, humedad del aire y un comentario sobre
la medicin (en este comentario se indicar el resultado de la medicin) Cada medicin
se numera, de forma que no puede haber dos mediciones con el mismo nmero.

Las mediciones las realizan qumicos especializados contratados por la empresa. Esta
empresa desea almacenar los datos de estos qumicos: nombre, apellidos y telfono de
contacto.

Las mediciones se realizan en terrenos particulares, e interesa almacenar informacin
sobre dichos terrenos. Concretamente interesa almacenar: el nmero de hectreas del
terreno, nombre del propietario, DNI del propietario, telfono de contacto del
propietario, direccin del terreno. A cada terreno se le asignar un cdigo nico para
distinguirlo de los dems.

Las mediciones se plasman finalmente en informes recopilatorios que se envan a la
empresa que ha encargado las medidas. Interesa almacenar de cada informe lo siguiente:
nmero de informe (no hay dos informes con el mismo nmero), nombre de la empresa
que encarga el informe, fecha en que se lanza el informe, conclusiones del informe (aqu
se redactan una serie de conclusiones finales deducidas a partir de las distintas
mediciones)

Debe tener en cuenta tambin lo siguiente:

Un qumico realiza muchas mediciones, pero una medicin la realiza solo un qumico.

En un mismo terreno se pueden realizar diversas mediciones, pero tenga en cuenta que
una medicin est realizada en un solo terreno.

Un informe de mediciones plasmar el resultado de muchas mediciones, pero una
medicin aparecer en un solo informe.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

790 Entidad Clientes | By reycito2011


SE PIDE :

1. Identifique las entidades que participan, teniendo en cuenta el enunciado.
2. Identifique los atributos de cada entidad.
3. Indique el atributo clave para cada entidad. Si fuera necesario, aada un atributo
clave a la entidad.
4. Indique las relaciones que existen entre las entidades.
5. Indique el tipo de relaciones existentes (Nota : no existen relaciones Muchas a
Muchas)
6. Averigue las claves forneas segn las relaciones existentes.
7. Realice el grfico correspondiente al Modelo E-R.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

791 Entidad Clientes | By reycito2011

SUPUESTO N4. REVISIONES MDICAS


En un hospital se realizan distintas revisiones mdicas a los pacientes ingresados, y les
interesa almacenar informacin sobre estas revisiones.

De cada revisin interesa almacenar la fecha y hora en que se hizo, peso y altura del
paciente y otros resultados de dicha revisin. Cada revisin se numera de forma que no
haya dos revisiones con el mismo nmero.

Cada revisin se realiza a un solo paciente, aunque a un paciente se le pueden hacer
varias revisiones mientras est ingresado.

Interesa almacenar la informacin de cada paciente: nombre, apellidos, DNI y fecha de
nacimiento del paciente.

Los mdicos realizan revisiones a sus pacientes. Hay que tener en cuenta que un mismo
mdico puede realizar revisiones a distintos pacientes, pero un paciente tiene asignado
un solo mdico para las revisiones.

Interesa almacenar la informacin de cada mdico: nombre, apellidos, especialidad. A
cada mdico se le asigna un cdigo que es nico.


SE PIDE :

1. Identifique las entidades que participan, teniendo en cuenta el enunciado.
2. Identifique los atributos de cada entidad.
3. Indique el atributo clave para cada entidad. Si fuera necesario, aada un atributo
clave a la entidad.
4. Indique las relaciones que existen entre las entidades.
5. Indique el tipo de relaciones existentes (Nota : no existen relaciones Muchas a
Muchas)
6. Averigue las claves forneas segn las relaciones existentes.
7. Realice el grfico correspondiente al Modelo E-R.

PROGRAMACIN

JAVA - BASES DE DATOS


TRASPASO A TABLAS
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

792 Entidad Clientes | By reycito2011



SUPUESTO N 1. "CONTROL DE VENTAS"

A partir del Modelo Entidad-Relacin correspondiente a este supuesto de la hoja
anterior, realice el traspaso a tablas de modelo.

Introduzca luego algunos datos en las tablas. Invntese los datos, pero procure que
tengan cierto sentido. Tenga en cuenta que los datos correspondientes a las claves y
claves forneas tendrn que coincidir para que la base de datos tenga coherencia.


SUPUESTO N 2. TRANSPORTES

A partir del Modelo Entidad-Relacin correspondiente a este supuesto de la hoja
anterior, realice el traspaso a tablas de modelo.

Introduzca luego algunos datos en las tablas. Invntese los datos, pero procure que
tengan cierto sentido. Tenga en cuenta que los datos correspondientes a las claves y
claves forneas tendrn que coincidir para que la base de datos tenga coherencia.


SUPUESTO N 3. MEDICIONES

A partir del Modelo Entidad-Relacin correspondiente a este supuesto de la hoja
anterior, realice el traspaso a tablas de modelo.

Introduzca luego algunos datos en las tablas. Invntese los datos, pero procure que
tengan cierto sentido. Tenga en cuenta que los datos correspondientes a las claves y
claves forneas tendrn que coincidir para que la base de datos tenga coherencia.


SUPUESTO N4. REVISIONES MDICAS

A partir del Modelo Entidad-Relacin correspondiente a este supuesto de la hoja
anterior, realice el traspaso a tablas de modelo.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

793 Entidad Clientes | By reycito2011

Introduzca luego algunos datos en las tablas. Invntese los datos, pero procure que
tengan cierto sentido. Tenga en cuenta que los datos correspondientes a las claves y
claves forneas tendrn que coincidir para que la base de datos tenga coherencia.
PROGRAMACIN

JAVA - BASES DE DATOS


RELACIONES MUCHAS A MUCHAS


SUPUESTO N 1 LIMUSINAS

Una empresa de alquiler de limusinas quiere gestionar la siguiente informacin :

Por un lado se quiere almacenar la informacin de los clientes que solicitan el uso de
una limusina. Se almacenar el nombre, apellidos, DNI y telfono del cliente.

Por otro lado se quiere almacenar la informacin de las distinas limusinas propiedad de
la empresa. Se almacenar la matrcula, la marca y el modelo.

Una limusina es alquilada por muchos clientes (en momentos distintos claro est, un da
la alquila un cliente y otro da la alquila otro)

Por otro lado, un cliente alquila muchas limusinas (en momentos distintos tambin, un
da alquila una limusina, y a la semana siguiente puede alquilar otra, etc)

Interesa saber la fecha en que un cliente alquila una limusina, y el nombre del chfer
que condujo en el viaje.


SE PIDE :

1. Este supuesto produce una relacin Muchas a Muchas entre las entidades
limusinas y clientes. Represente dicha relacin.
2. A continuacin identifique la entidad intermedia que elimina la relacin Muchas
a Muchas.
3. Aada los atributos que considere necesarios a la entidad intermedia.
4. Realice el Modelo Entidad Relacin completo del supuesto teniendo en cuenta la
nueva entidad introducida y sus atributos.
5. Realice el traspaso a tabla de dicho modelo.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

794 Entidad Clientes | By reycito2011




21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

795 Entidad Clientes | By reycito2011

SUPUESTO N 2 RESERVAS HOTEL

Un hotel quiere guardar un histrico con todas las reservas realizadas en el hotel por sus
clientes. Concretamente se quiere guardar lo siguiente :

Informacin sobre sus clientes : nombre del cliente, apellidos, DNI y pas.

Informacin sobre sus habitaciones : nmero de la habitacin, nmero de camas, precio
de la habitacin por noche.

Un cliente puede haber reservado varias habitaciones (no tiene por qu ser a la vez : un
verano puede alojarse en la habitacin n 124, pero al verano siguiente puede alojarse en
la habitacin n 535 del mismo hotel)

En una habitacin se alojan muchos clientes (no a la vez, claro est : una semana est
alojado el cliente Juan Gonzlez y a la semana siguiente est alojado el cliente Ana
Prez)

Interesara almacenar tambin como se ha pagado la reserva de la habitacin, y la fecha
de entrada y de salida del cliente en la habitacin.


SE PIDE :

1. Este supuesto produce una relacin Muchas a Muchas entre las entidades
habitaciones y clientes. Represente dicha relacin.
2. A continuacin identifique la entidad intermedia que elimina la relacin Muchas
a Muchas.
3. Aada los atributos que considere necesarios a la entidad intermedia.
4. Realice el Modelo Entidad Relacin completo del supuesto teniendo en cuenta la
nueva entidad introducida y sus atributos.
5. Realice el traspaso a tabla de dicho modelo.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

796 Entidad Clientes | By reycito2011

SUPUESTO N 3 TALLER MECNICO


Un taller mecnico quiere guardar informacin sobre todas las reparaciones que se
realizan en l. Para ello se quiere guardar informacin sobre lo siguiente :

Mecnicos : Interesa almacenar la informacin del mecnico que realiza la reparacin.
Se almacenar el nombre del mecnico, apellidos, mvil y un cdigo que identifica a
cada mecnico.

Coches : Interesa almacenar la informacin de los coches que han sido reparados en el
taller. Se almacenar la matrcula, marca y modelo del coche.

Debes tener en cuenta que un mecnico repara muchos coches (no a la vez, se supone,
primero uno y luego otro)

Por otro lado, un coche puede ser reparado por varios mecnicos (es de suponer que un
coche puede sufrir varias averas a lo largo de su vida, y cada una de estas avera puede
ser reparada por un mecnico distinto)

Interesa almacenar tambin el coste de cada reparacin, as como el nmero de horas
que se usaron para hacer la reparacin.


SE PIDE :

1. Este supuesto produce una relacin Muchas a Muchas. Represente dicha
relacin.
2. A continuacin identifique la entidad intermedia que elimina la relacin Muchas
a Muchas.
3. Aada los atributos que considere necesarios a la entidad intermedia.
4. Realice el Modelo Entidad Relacin completo del supuesto teniendo en cuenta la
nueva entidad introducida y sus atributos.
5. Realice el traspaso a tabla de dicho modelo.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

797 Entidad Clientes | By reycito2011

SUPUESTO N 4 VIDEOCLUB


Un videoclub quiere almacenar informacin sobre los alquileres de pelculas que se
hicieron. Le interesa almacenar informacin sobre las pelculas y sobre sus socios :

Pelculas : se almacenar el nmero del DVD (no hay dos DVD con el mismo nmero),
el ttulo de la pelcula que contiene, el nombre del director y el tipo de pelcula.

Socios : se almacenar el nmero de socio (no hay dos socios con el mismo nmero), el
nombre y apellidos del socio, su telfono y direccin.

Hay que tener en cuenta que una pelcula se alquila a muchos socios (No a la vez, claro
est : el DVD es alquilado a un socio, y cuando este lo devuelve, se vuelve a alquilar a
otro, y as sucesivamente)

Por otro lado, un socio alquila muchas pelculas (No a la vez, claro est : primero
alquila una, y al da siguiente alquila otra, y as sucesivamente)

Interesara almacenar tambin la fecha en que produce cada alquiler y lo que pag el
socio por el alquiler.


SE PIDE :

1. Este supuesto produce una relacin Muchas a Muchas. Represente dicha
relacin.
2. A continuacin identifique la entidad intermedia que elimina la relacin Muchas
a Muchas.
3. Aada los atributos que considere necesarios a la entidad intermedia.
4. Realice el Modelo Entidad Relacin completo del supuesto teniendo en cuenta la
nueva entidad introducida y sus atributos.
5. Realice el traspaso a tabla de dicho modelo.


PROGRAMACIN

JAVA - BASES DE DATOS - ACCESS


CREACIN DE BASES DE DATOS EN ACCESS
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

798 Entidad Clientes | By reycito2011



En las hojas de ejercicios anteriores ha diseado las bases de datos para distintos
supuestos. Ha realizado el Modelo Entidad Relacin y luego ha realizado el traspaso a
Tablas.

Ahora se pide que cree las bases de datos correspondientes a dichos traspasos a Tablas
en Access para los siguientes supuestos de hojas anteriores:


SUPUESTO "CONTROL DE VENTAS"

Crear un fichero de base de datos llamado CONTROLVEN usando el programa Access.
Introducir en l las tablas diseadas para este supuesto. Introducir algunos datos en las
tablas (Intente que los datos sean coherentes)


SUPUESTO TRANSPORTES

Crear un fichero de base de datos llamado TRANSPORTES usando el programa
Access. Introducir en l las tablas diseadas para este supuesto. Introducir algunos datos
en las tablas (Intente que los datos sean coherentes)


SUPUESTO MEDICIONES

Crear un fichero de base de datos llamado MEDICIONES usando el programa Access.
Introducir en l las tablas diseadas para este supuesto. Introducir algunos datos en las
tablas (Intente que los datos sean coherentes)


SUPUESTO RESERVAS HOTEL

Crear un fichero de base de datos llamado HOTEL usando el programa Access.
Introducir en l las tablas diseadas para este supuesto. Introducir algunos datos en las
tablas (Intente que los datos sean coherentes)


SUPUESTO TALLER MECNICO
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

799 Entidad Clientes | By reycito2011


Crear un fichero de base de datos llamado TALLER usando el programa Access.
Introducir en l las tablas diseadas para este supuesto. Introducir algunos datos en las
tablas (Intente que los datos sean coherentes)

PROGRAMACIN

JAVA - BASES DE DATOS ACCESS CONSULTAS

CREACIN DE CONSULTAS EN ACCESS

Entre en la base de datos MANEMPSA (usada en las hojas de ejercicios guiados) y
aada registros a las tablas hasta que estas queden as:

Tabla Trabajadores



Tabla Coches



Tabla Clientes

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

800 Entidad Clientes | By reycito2011



Tabla Servicios



Ahora, realice las siguientes consultas en la base de datos. Guarde cada una con el
nombre que se indica. Se recomienda que compruebe cada consulta antes de guardarla.


1. Crear una consulta llamada Servicios de Limpieza.

En ella deben aparecer los campos fecha del servicio, tipo, cantidad y
comentario de aquellos servicios cuyo tipo sea Limpieza.


2. Crear una consulta llamada Servicios Baratos.

En ella deben aparecer los campos nmero del servicio, fecha, tipo y cantidad de
aquellos servicios que hayan costado menos de 180 euros.


3. Crear una consulta llamada Servicios anteriores 2006.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

801 Entidad Clientes | By reycito2011


En ella deben aparecer los campos nmero del servicio, fecha, tipo y cantidad de
aquellos servicios que fueron realizados antes del 1 1 2006


4. Crear una consulta llamada Servicios de Fontanera

En ella deben aparecer los campos nmero de servicio, cantidad, tipo y
comentario de todos aquellos servicios que fueron de fontanera y costaron 250
o ms euros.


5. Crear una consulta llamada Listado de Servicios No Limpieza

En ella deben aparecer los campos nmero de servicio, cantidad, tipo y
comentario de los servicios de Fontanera y los servicios de Electricidad.


6. Crear una consulta llamada Listado de Servicios de Electricidad

En ella deben aparecer los campos fecha del servicio, cantidad, tipo, comentario,
nombre y apellidos del trabajador y nombre del cliente de aquellos servicios que
sean del tipo Electricidad.

Debes tener en cuenta que los campos nombre y apellidos del trabajador
pertenecen a la tabla Trabajadores, mientras que el nombre del cliente pertenece
a la tabla Clientes. Los dems campos pertenecen a la tabla Servicios.


7. Crear una consulta llamada Servicios realizados por Juan

En ella deben aparecer los campos fecha del servicio, cantidad, tipo, comentario,
nombre del cliente y nombre y apellidos del trabajador de todos aquellos
servicios realizados por el trabajador con DNI 12.321.567-B

Ten en cuenta que tendrs que usar varias tablas para hacer la consulta.


8. Crear una consulta llamada Servicios a Academias

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

802 Entidad Clientes | By reycito2011

En ella deben aparecer los campos fecha del servicio, tipo, cantidad, nombre del
cliente y nombre y apellidos del trabajador de todos aquellos servicios que se
hayan realizado a una Academia (es decir, el nombre del cliente debe contener la
palabra academia)


9. Crear una consulta llamada Servicios del ao 2006

En ella aparecern los campos fecha del servicio, tipo, cantidad, apellidos del
trabajador, nombre del cliente, CIF del cliente de todos aquellos servicios que
se hayan realizado entre el 1 del 1 de 2006 y el 31 del 12 del 2006


10. Crear una consulta llamada Servicios en la calle Larga

En ella aparecern los campos fecha del servicio, tipo, cantidad, nombre del
cliente, direccin del cliente, DNI del trabajador para todos aquellos servicios
realizados en la calle Larga.


11. Crear una consulta llamada Servicios trabajadores 2006

En ella deben aparecer los campos fecha del servicio, tipo cantidad, nombre y
apellidos del trabajador y fecha de entrada del trabajador de todos aquellos
servicios realizados por los trabajadores que entraron en la empresa a partir del 1
1 2006.

Para crear esta consulta tienes que usar las tablas Trabajadores y Servicios.


12. Crear una consulta llamada Clientes de Seguros

En ella deben aparecer los campos CIF, nombre del cliente, direccin del cliente
de todos aquellos clientes que gestionen seguros (deben contener en el nombre la
palabra seguros)


13. Crear una consulta llamada Listado de Academias y Papeleras

En ella deben aparecer los campos CIF, nombre del cliente, direccin del cliente
y telfono fijo de todos aquellos clientes que sean academias o papeleras.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

803 Entidad Clientes | By reycito2011



14. Crear una consulta llamada Listado de SEAT y trabajadores

En ella deben aparecer los campos matrcula, marca y modelo de los seat de la
empresa. Tambin interesa que aparezca el nombre y apellido del conductor de
cada coche.


15. Crear una consulta llamada Servicios realizados con CITROEN

En ella debe aparecer el listado de servicios que han sido realizados usando
alguno de los citroen de la empresa.

En esta consulta deben aparecer los siguientes campos: matrcula del vehculo,
marca y modelo. Nombre y apellidos del trabajador que hizo el servicio.
Nombre y direccin del cliente al que se le hizo el servicio. Tipo de servicio y
cantidad.

En esta consulta participan todas las tablas de la base de datos.

PROGRAMACIN

JAVA - BASES DE DATOS SQL CONSULTAS

CREACIN DE CONSULTAS USANDO SQL

EJERCICIO 1

Las siguientes consultas son las realizadas en la hoja anterior. Se le pide al alumno que
vuelva a hacer dichas consultas pero esta vez usando el lenguaje SQL (se le ha aadido
a los nombres la palabra SQL para distinguirlas de las consultas de la hoja anterior)


16. Crear una consulta llamada Servicios de Limpieza SQL.

En ella deben aparecer los campos fecha del servicio, tipo, cantidad y
comentario de aquellos servicios cuyo tipo sea Limpieza.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

804 Entidad Clientes | By reycito2011

17. Crear una consulta llamada Servicios Baratos SQL.

En ella deben aparecer los campos nmero del servicio, fecha, tipo y cantidad de
aquellos servicios que hayan costado menos de 180 euros.


18. Crear una consulta llamada Servicios anteriores 2006 SQL.

En ella deben aparecer los campos nmero del servicio, fecha, tipo y cantidad de
aquellos servicios que fueron realizados antes del 1 1 2006


19. Crear una consulta llamada Servicios de Fontanera SQL

En ella deben aparecer los campos nmero de servicio, cantidad, tipo y
comentario de todos aquellos servicios que fueron de fontanera y costaron 250
o ms euros.


20. Crear una consulta llamada Listado de Servicios No Limpieza SQL

En ella deben aparecer los campos nmero de servicio, cantidad, tipo y
comentario de los servicios de Fontanera y los servicios de Electricidad.


21. Crear una consulta llamada Listado de Servicios de Electricidad SQL

En ella deben aparecer los campos fecha del servicio, cantidad, tipo, comentario,
nombre y apellidos del trabajador y nombre del cliente de aquellos servicios que
sean del tipo Electricidad.

Debes tener en cuenta que los campos nombre y apellidos del trabajador
pertenecen a la tabla Trabajadores, mientras que el nombre del cliente pertenece
a la tabla Clientes. Los dems campos pertenecen a la tabla Servicios.


22. Crear una consulta llamada Servicios realizados por Juan SQL

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

805 Entidad Clientes | By reycito2011

En ella deben aparecer los campos fecha del servicio, cantidad, tipo, comentario,
nombre del cliente y nombre y apellidos del trabajador de todos aquellos
servicios realizados por el trabajador con DNI 12.321.567-B

Ten en cuenta que tendrs que usar varias tablas para hacer la consulta.


23. Crear una consulta llamada Servicios a Academias SQL

En ella deben aparecer los campos fecha del servicio, tipo, cantidad, nombre del
cliente y nombre y apellidos del trabajador de todos aquellos servicios que se
hayan realizado a una Academia (es decir, el nombre del cliente debe contener la
palabra academia)


24. Crear una consulta llamada Servicios del ao 2006 SQL

En ella aparecern los campos fecha del servicio, tipo, cantidad, apellidos del
trabajador, nombre del cliente, CIF del cliente de todos aquellos servicios que
se hayan realizado entre el 1 del 1 de 2006 y el 31 del 12 del 2006


25. Crear una consulta llamada Servicios en la calle Larga SQL

En ella aparecern los campos fecha del servicio, tipo, cantidad, nombre del
cliente, direccin del cliente, DNI del trabajador para todos aquellos servicios
realizados en la calle Larga.


26. Crear una consulta llamada Servicios trabajadores 2006 SQL

En ella deben aparecer los campos fecha del servicio, tipo cantidad, nombre y
apellidos del trabajador y fecha de entrada del trabajador de todos aquellos
servicios realizados por los trabajadores que entraron en la empresa a partir del 1
1 2006.

Para crear esta consulta tienes que usar las tablas Trabajadores y Servicios.


27. Crear una consulta llamada Clientes de Seguros SQL
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

806 Entidad Clientes | By reycito2011


En ella deben aparecer los campos CIF, nombre del cliente, direccin del cliente
de todos aquellos clientes que gestionen seguros (deben contener en el nombre la
palabra seguros)


28. Crear una consulta llamada Listado de Academias y Papeleras SQL

En ella deben aparecer los campos CIF, nombre del cliente, direccin del cliente
y telfono fijo de todos aquellos clientes que sean academias o papeleras.


29. Crear una consulta llamada Listado de SEAT y trabajadores SQL

En ella deben aparecer los campos matrcula, marca y modelo de los seat de la
empresa. Tambin interesa que aparezca el nombre y apellido del conductor de
cada coche.


30. Crear una consulta llamada Servicios realizados con CITROEN SQL

En ella debe aparecer el listado de servicios que han sido realizados usando
alguno de los citroen de la empresa.

En esta consulta deben aparecer los siguientes campos: matrcula del vehculo,
marca y modelo. Nombre y apellidos del trabajador que hizo el servicio.
Nombre y direccin del cliente al que se le hizo el servicio. Tipo de servicio y
cantidad.

En esta consulta participan todas las tablas de la base de datos.

EJERCICIO 2

Realice tambin estas otras consultas usando el lenguaje SQL (asgneles el nombre que
quiera):


1. Se pide mostrar un listado de clientes con las siguientes caractersticas:

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

807 Entidad Clientes | By reycito2011

Campos a mostrar: nombre del cliente, direccin, telfono 1.

La condicin es que no tengan telfono 2 (dicho de otra forma, que el campo
telfono 2 sea nulo)


2. Se pide mostrar un listado de clientes con las siguientes caractersticas:

Campos a mostrar: nombre, direccin, telfono 1.

La condicin es que vivan en una calle, es decir, que su direccin comience por
C/


3. Se pide mostrar un listado de trabajadores con las siguientes caractersticas:

Campos a mostrar: nombre, sueldo, fecha de entrada.

La condicin es que hayan entrado en la empresa en el ao 2002. Es decir, entre
el 1/1/2002 y el 31/12/2002.


4. Se pide mostrar un listado de trabajadores con las siguientes caractersticas:

Campos a mostrar: nombre, apellidos, sueldo.

Condicin: ninguna.

Se pide que el listado salga ordenado por sueldo de mayor a menor.


5. Se pide mostrar un listado de trabajadores con las siguientes caractersticas:

Campos a mostrar: todos

Condicin: Que no se llamen Ana

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

808 Entidad Clientes | By reycito2011

Ordenados por nombre ascendentemente.


6. Se pide mostrar un listado de coches con las siguientes caractersticas:

Mostrar todos los campos.

Ordenado por ao de compra, de ms antiguo a ms moderno.


7. Mejore la consulta anterior de forma que tambin se muestre el nombre del
trabajador que conduce cada coche.


21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

809 Entidad Clientes | By reycito2011

8. Se pide mostrar un listado de servicios con las siguientes caractersticas:

Campos a mostrar: tipo de servicio, fecha, cantidad, comentario.

Condicin: mostrar los servicios de limpieza que hayan costado menos de 250
euros.

Ordenado por cantidad de menor a mayor


9. Mejore la consulta anterior de forma que tambin se muestre la direccin donde
se hizo el servicio.


10. Se pide mostrar un listado de servicios con las siguientes caractersticas:

Campos a mostrar: tipo de servicio, fecha, cantidad, comentario.

Condicin: se pide mostrar los servicios de limpieza y los de fontanera todos en
la misma consulta.

Ordenado por fecha de ms reciente a ms antigua.


11. Se pide mostrar un listado de servicios con las siguientes caractersticas:

Campos a mostrar: el nombre del trabajador, la fecha en que se hizo el servicio,
la cantidad que cost el servicio, el tipo de servicio, el nombre del cliente, la
direccin del cliente.

Condicin: se pide mostrar aquellos servicios de fontanera realizados por el
trabajador con nombre Juan que hayan costado menos de 240 euros.

El listado debe aparecer ordenado por cantidad de mayor a menor.

PROGRAMACIN

JAVA - BASES DE DATOS SQL ALTAS/BAJAS/MODIFICACIONES

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

810 Entidad Clientes | By reycito2011


CREACIN DE CONSULTAS DE ACCIN USANDO SQL


PREPARACIN

Los ejercicios que vienen a continuacin modificarn el contenido de las tablas. En el
caso de equivocacin es posible perder todos los datos contenidos en la tabla con la que
se est trabajando. Para evitar problemas, se harn copias de las tablas y se trabajar con
las copias.

En este ejercicio de preparacin se explica brevemente como realizar una copia de una
tabla. Siga los pasos que se indican a continuacin:


1. Entre en la base de datos MANEMPSA que tiene guardada en MIS
DOCUMENTOS.

2. En la zona de tablas, haga clic con el botn derecho sobre la tabla Trabajadores
y active la opcin Copiar.

3. En una zona en blanco haga clic con el botn derecho y active la opcin Pegar.

4. Aparecer un cuadro de dilogo indicando que va a copiar una tabla. Tiene que
indicar el nombre que tendr la copia. En nuestro ejemplo, el nombre ser
Trabajadores2. Pulse aceptar.

5. Si todo ha ido bien, vers que ha aparecido una nueva tabla llamada
Trabajadores2. Si la abres, observars que su contenido es el mismo que
Trabajadores.


EJERCICIO:

Crear una copia de las dems tablas:

Clientes Clientes2
Coches Coches2
Servicios Servicios2

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

811 Entidad Clientes | By reycito2011


(Nota: para los siguientes ejercicios usaremos las copias de las tablas, para as mantener
intacto el contenido de las tablas originales)



21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

812 Entidad Clientes | By reycito2011

INSERCIN DE REGISTROS


NOTA: COMPROBAR QUE LOS EJERCICIOS SE HAN REALIZADO
CORRECTAMENTE ENTRANDO EN LAS TABLAS Y OBSERVANDO SU
CONTENIDO


EJERCICIOS:

1. En la tabla Trabajadores2 aada los siguientes trabajadores:

Rosa Gonzlez, con DNI 11.567.789-D, cobra 1100,60 euros y entr en la
empresa el 2 de marzo del 2006. No tiene asignado un coche.

Benito Rodrguez, con DNI 56.456.345-W, cobra 500 euros y entr en la
empresa el 10 de Diciembre de 2005. El coche que tiene asignado tiene de
matrcula 4454-EEE

Eva Ramos, con DNI 33.987.987-F. Entr en la empresa el 20 de enero de 2007.
No tiene asignado de momento un sueldo y tampoco tiene asignado coche.


2. En la tabla Coches2 aada el siguiente coche:

SEAT Crdoba con matrcula 4454-EEE. Ao 2004. Est asignado al trabajador
con DNI 56.456.345-W


MODIFICACIN DE REGISTROS


NOTA: COMPROBAR QUE LOS EJERCICIOS SE HAN REALIZADO
CORRECTAMENTE ENTRANDO EN LAS TABLAS Y OBSERVANDO SU
CONTENIDO


EJERCICIOS:
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

813 Entidad Clientes | By reycito2011


31. Se pide asignar a los trabajadores de la tabla Trabajadores2 que hayan entrado
antes del ao 2005 un sueldo de 1400 euros.

32. En la tabla Trabajadores2 asigne al trabajador con DNI 33.987.987-F el coche
con matrcula 4454-EEE.

33. La trabajadora llamada Ana ha sido suspendida de empleo. Asigne un valor 0 al
sueldo de esta trabajadora en la tabla Trabajadores2.

34. Se ha averiguado el telfono mvil del gerente de la empresa Academia La
Plata. El mvil es el 633 45 54 45. Se pide que en la tabla Clientes2 asigne ese
telfono mvil a dicho cliente.

35. Se han detectado algunos errores de datos en el cliente con CIF B44556666.
Concretamente, el nombre del cliente es Seguros La Cruz, su direccin es
C/Lealas 10, y su telfono fijo es el 956 30 90 90. Se pide que en la tabla
Clientes2 haga dichos cambios a dicho cliente.






ELIMINACIN DE REGISTROS


NOTA: COMPROBAR QUE LOS EJERCICIOS SE HAN REALIZADO
CORRECTAMENTE ENTRANDO EN LAS TABLAS Y OBSERVANDO SU
CONTENIDO


1. Eliminar de la tabla Servicios2 a todos los servicios del ao 2004 (es decir, cuya
fecha est comprendida entre 1-1-2004 y 31-12-2004)

Comprueba el resultado observando el contenido de la tabla Servicios2

2. Eliminar de la tabla Servicios2 a todos los servicios de fontanera de ms de 250
euros.

Comprueba el resultado observando el contenido de la tabla Servicios2

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

814 Entidad Clientes | By reycito2011

3. Eliminar de la tabla Servicios2 aquellos servicios en los que se haya instalado
algn recambio (es decir, que el campo comentario contenga la palabra
recambio)

Comprueba el resultado observando el contenido de la tabla Servicios2

4. Finalmente, elimina todos los registros de la tabla Servicios2.

Comprueba el resultado observando el contenido de la tabla Servicios2

5. En la tabla Clientes2, eliminar a todos los clientes que no tengan mvil (es decir,
que el campo mvil sea nulo)

Comprueba el resultado observando el contenido de la tabla Servicios2

6. En la tabla Clientes2, eliminar a todos los clientes que tengan una empresa de
seguros (es decir, que contengan la palabra seguros en el nombre del cliente)

Comprueba el resultado observando el contenido de la tabla Servicios2

7. Finalmente, eliminar de la tabla Clientes2 el resto de registros.

Comprueba el resultado observando el contenido de la tabla Servicios2




EJERCICIO FINAL

Para la realizacin de los ejercicios anteriores se han hecho copias de las tablas de la
base de datos. Una vez realizados dichos ejercicios estas tablas no son necesarias. Puede
borrarlas simplemente haciendo clic con el botn derecho sobre ellas y activar la opcin
eliminar.

As pues, elimine las tablas: Trabajadores2, Clientes2, Servicios2, Coches2.

PROGRAMACIN

JAVA APLICACIONES DE BASES DE DATOS

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

815 Entidad Clientes | By reycito2011


CREACIN DE APLICACIONES JAVA USANDO BASE DE DATOS


EJERCICIO 1

Crear un programa en Java que manipular la base de datos MANEMPSA.

La ventana principal de este proyecto contendr los siguientes botones:

- Coches de la Empresa btnCoches

Cuando se pulse este botn, deber aparecer en un JOptionPane el listado de
coches de la empresa.

Debe aparecer la marca, modelo y ao de cada coche, y adems deben aparecer
ordenados por ao ascendentemente.

- Listado de Clientes btnClientes

Cuando se pulse este botn, deber aparecer en un JOptionPane el listado de
clientes de la empresa.

Debe aparecer el CIF del cliente, el nombre y la direccin. Los clientes deben
aparecer ordenados por nombre.


- Listado de Servicios btnServicios

Cuando se pulse este botn aparecer en un JOptionPane el listado de servicios
realizados.

Debe aparecer el tipo de servicio, la cantidad del servicio y el CIF del cliente.
Deben aparecer ordenados por cantidad de mayor a menor.


- Mil Euristas btnMil

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

816 Entidad Clientes | By reycito2011

Cuando se pulse este botn, deber aparecer en un JOptionPane el listado de
trabajadores de la empresa que cobren 1000 o menos euros.

Debe aparecer el DNI del trabajador, nombre, apellidos y sueldo.


- Limpiezas btnLimpiezas

Cuando se pulse este botn, deber aparecer en un JOptionPane el listado de
servicios de limpieza realizados.

Debe aparecer el nmero del servicio, el DNI del trabajador que realiz el
servicio, el tipo de servicio y el coste. Debe aparecer ordenado por nmero de
servicio de menor a mayor.

- Electricidad btnElectricidad

Este botn es igual que el anterior, solo que en vez de mostrar los servicios de
limpieza se tienen que mostrar los servicios de electricidad.


- Ingresos Empresa btnIngresos

Cuando se pulse este botn, interesa que aparezca en un JOptionPane la suma de
las cantidades de todos los servicios realizados.


- Citroen btnCitroen

Cuando se pulse este botn, interesa que aparezca en un JOptionPane el nmero
de coches citroen que tiene la empresa.


- Estadisticas Limpieza btnEstLim

Cuando se pulse este botn, interesa que aparezca en un JOptionPane lo
siguiente:

El nmero de servicios de limpieza que se han realizado.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

817 Entidad Clientes | By reycito2011

La suma de los costes de todos los servicios de limpieza.
El coste medio de un servicio de limpieza.


- El quinto servicio btnQuinto

Cuando se pulse este botn interesa que aparezca en un JOptionPane los datos
del quinto servicio realizado.

Interesa que aparezca el nmero del servicio, el tipo de servicio y el coste de
dicho servicio.


- Listado de servicios de fontanera btnFont

Cuando se pulse este botn interesa que aparezca en un JOptionPane un listado
con los servicios de fontanera.

Interesa que aparezca el nombre y apellidos del trabajador que hizo el servicio,
el tipo de servicio y el coste del servicio.


- Listado de servicios de menos de 200 euros btnMenosDos

Cuando se pulse este botn interesa que aparezca en un JOptionPane un listado
con los servicios con una cantidad menor de 200 euros.

Interesa que aparezca el nombre del trabajador que hizo el servicio, el tipo de
servicio, el coste y el nombre del cliente al que se le hizo el servicio. Haz que el
listado salga ordenado por coste de mayor a menor.
PROGRAMACIN

JAVA APLICACIONES DE BASES DE DATOS


FECHAS, NMEROS REALES, VALORES NULOS


EJERCICIO 1

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

818 Entidad Clientes | By reycito2011

Crear un programa en Java que manipular la base de datos MANEMPSA.

La ventana principal de esta aplicacin tendr dos botones y un JTextPane:




Botn Datos Trabajadores

Al pulsar este botn debe aparecer el listado de trabajadores en el JTextPane.

Concretamente deben aparecer el nombre, apellidos, sueldo, fecha de entrada y
matrcula del coche que conduce.

El listado debe aparecer ordenado por fechas ascendentemente (es decir, primero los
trabajadores con ms antigedad, y luego los ms recientes)

Las fechas deben aparecer en el siguiente formato:

Da / Mes / Ao

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

819 Entidad Clientes | By reycito2011

Los sueldos deben aparecer con la coma decimal.

Si el trabajador no tuviera asignada un coche, en el campo matrcula debera aparecer la
cadena sin coche.


Botn Datos Servicios

Al pulsar este botn aparecer el listado de servicios en el JTextPane.

El listado aparecer ordenado por fechas de ms reciente a ms antiguo.

Debe aparecer la fecha del servicio, el coste, el tipo y el comentario.

La fecha debe aparecer en formato: Dia del Mes del Ao. Por ejemplo: 3 del 5 del 2001

El coste aparecer con coma decimal.

Si no hay comentario para el servicio, debe aparecer la cadena sin comentarios.

PROGRAMACIN

JAVA APLICACIONES DE BASES DE DATOS


CONSULTAS DEL USUARIO

Realizar una pequea aplicacin de base de datos que maneje la base de datos
MANEMPSA.

La ventana principal del programa contendr un JTextPane y los siguientes elementos:


Botn Ver Servicios

Al pulsar este botn aparecer en el JTextPane el listado con todos los servicios
realizados por la empresa ordenados por fecha de forma ascendente.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

820 Entidad Clientes | By reycito2011

Deben aparecer en el listado los siguientes campos: fecha del servicio, tipo, coste y
comentario.

La fecha aparecer en formato dia-mes-ao.
El coste aparecer con coma decimal.
No interesa que aparezcan los valores null. Cuando esto suceda, sustituirlos por un
simple guin -.


Seleccin por costes:

Se deben aadir a la ventana los siguientes elementos:

- Un cuadro de texto.
- Un botn Mayor que
- Un botn Menor que
- Un botn Igual a
- Un botn Distinto de


En el cuadro de texto el usuario introducir una cantidad.

Al pulsar el botn Mayor que aparecer el listado de servicios cuyo coste sea mayor a
dicha cantidad.
Al pulsar el botn Menor que aparecer el listado de servicios cuyo coste sea menor a
dicha cantidad.
Al pulsar el botn Igual a aparecer el listado de servicios cuyo coste sea igual a dicha
cantidad.
Al pulsar el botn Distinto de aparecer el listado de servicios cuyo coste sea distinto
a dicha cantidad.


Seleccin por tipo:

Se deben aadir a la ventana los siguientes elementos:

- Un cuadro de texto.
- Un botn Igual a.
- Un botn Contiene a.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

821 Entidad Clientes | By reycito2011


El usuario introducir un texto en el cuadro de texto.

Al pulsar el botn Igual a, el programa mostrar el listado de servicios cuyo tipo sea
igual al texto introducido.

Por ejemplo, si el usuario introduce el texto Limpieza, el programa mostrar los
servicios cuyo tipo sea igual a Limpieza.


Al pulsar el botn Contiene a, el programa mostrar el listado de servicios cuyo tipo
contenga el texto del cuadro de texto.

Por ejemplo, si el usuario introduce el texto a, el programa mostrar el listado de
servicios de Fontanera, Carpintera, etc. Es decir, todos los servicios que contengan
a en el tipo.


Seleccin por fecha:

Se deben aadir a la ventana los siguientes elementos:

- Un cuadro de texto para el da, otro para el mes y otro para el ao.
- Un botn Anterior a
- Un botn Posterior a
- Un botn En el ao


El usuario introducir una fecha en los cuadros da-mes-ao.

Luego, si el usuario pulsa el botn Anterior a el programa mostrar el listado de
servicios que hayan sido anteriores a la fecha indicada.

Si el usuario pulsa Posterior a el programa mostrar el listado de servicios que hayan
sido posteriores a la fecha indicada.

Si el usuario pulsa el botn En el ao, el programa mostrar el listado de servicios que
hayan sido realizados en el ao indicado en el cuadro ao. (En este caso no se tienen en
cuenta los cuadros da y mes)
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

822 Entidad Clientes | By reycito2011


PROGRAMACIN

JAVA APLICACIONES DE BASES DE DATOS


ALTAS DE REGISTROS

Realizar una pequea aplicacin de base de datos que maneje la base de datos
MANEMPSA.

La ventana principal de dicha aplicacin contendr los siguientes elementos:


Botn Listado de coches

Al pulsar este botn, aparecer en un panel de texto el listado de coches de la empresa.
Deben aparecer todos los campos de los coches.

Panel de Alta de coches

Este panel contendr una serie de cuadros de texto que permitirn introducir los datos de
un nuevo coche que se quiera aadir.

Dentro del panel tambin tendremos un botn Alta que al ser pulsado efectuar la
introduccin del nuevo coche en la tabla.

Al pulsarse el botn Alta, deber mostrarse el contenido de la tabla coches en el panel, y
all deber aparecer el listado incluyendo el nuevo coche introducido.

(El cdigo del botn Alta deber construir una consulta SQL vlida del tipo INSERT
INTO que permita introducir los datos del nuevo coche)

PROGRAMACIN

JAVA APLICACIONES DE BASES DE DATOS


BAJA DE REGISTROS

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

823 Entidad Clientes | By reycito2011

Mejorar la aplicacin realizada en la hoja de ejercicios anterior de forma que posibilite
la eliminacin de coches de la tabla coches de la base de datos MANEMPSA.

Para ello, debe aadir a la ventana principal lo siguiente:

- Un cuadro de texto donde el usuario introducir una matrcula.
- Un botn Eliminar coche.

Al pulsar el botn Eliminar coche, se borrar de la tabla el coche cuya matrcula se haya
escrito en el cuadro de texto.

Una vez realizado el borrado, aparecer en el panel de la ventana el contenido de la
tabla coches para que el usuario pueda confirmar que el coche ha sido realmente
borrado.

Hay que tener en cuenta varias cosas:

- El programa avisar si la matrcula introducida en el cuadro de texto no se
corresponde con ningn coche de la base de datos. (En este caso no se har el
borrado, claro est)

- En el caso de que la matrcula exista, el programa pedir confirmacin antes de
efectuar el borrado.

PROGRAMACIN

JAVA APLICACIONES DE BASES DE DATOS


MODIFICACIN DE REGISTROS

Mejorar la aplicacin realizada en la hoja de ejercicios anterior de forma que posibilite
la modificacin de coches de la tabla coches de la base de datos MANEMPSA.

Para ello, debe aadir a la ventana principal lo siguiente:

- Un panel de modificacin que contenga un cuadro de texto por campo de la tabla
coches (Este panel ser muy parecido al panel de introduccin de coches)
- Un botn Buscar al lado del cuadro de texto de la matrcula.
- Un botn Efectuar Modificacin.

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

824 Entidad Clientes | By reycito2011

El usuario tendr que introducir una matrcula y luego pulsar el botn Buscar. Al
pulsar este botn, el programa rellenar los cuadros de texto con los datos del coche que
tenga dicha matrcula. Si no existe un coche con dicha matrcula entonces el programa
mostrar un mensaje de error.

Una vez rellenos los cuadros de texto con los datos del coche, el usuario realizar
modificaciones en dichos datos y luego pulsar el botn Efectuar Modificacin.

Al pulsar este botn se efectuar la modificacin de los datos de este coche en la tabla
coches y se presentar el listado completo de la tabla coches en el panel del programa.

PROGRAMACIN

JAVA JTABLE


EJERCICIO N1


Se pide que realice una aplicacin que muestre una tabla con las siguientes columnas:

Nombre Examen 1 Examen 2 Examen 3



Al comenzar el programa la tabla estar vaca y solo se mostrar la cabecera.

El programa constar adems de la tabla de los siguientes elementos:

- Un botn Aadir Blanco.

Este botn aadir una nueva fila en blanco a la tabla.

- Un botn Aadir Alumno.

Este botn aadir una nueva fila a la tabla con los siguientes valores:

Nombre: No definido
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

825 Entidad Clientes | By reycito2011

Examen 1: 5
Examen 2: 5
Examen 3: 5

- Un botn Eliminar

Este botn eliminar la fila donde que est seleccionada en ese momento.

En el caso de que no hubiera ninguna fila seleccionada al pulsar este botn, el
programa debe mostrar un mensaje de error.

- Un botn Resultados

Este botn mostrar en un JOptionPane la nota media del alumno de la fila que
est seleccionada. Tambin debe indicar en ese JOptionPane si el alumno ha
aprobado o no.

En el caso de que no hubiera ninguna fila seleccionada al pulsar este botn, el
programa debe mostrar un mensaje de error.


- Un botn Resultados Trimestre 1

Este botn mostrar en un JOptionPane el nmero de alumnos que aprobaron el
examen 1 y el nmero de alumnos que suspendieron dicho examen.

PROGRAMACIN

JAVA JTABLE


EJERCICIO N1

Realiza un programa que contenga un JTable y un botn. El botn tendr el texto
Clientes y al pulsarse se mostrar en la tabla el contenido de la tabla clientes de la
base de datos MANEMPSA.


EJERCICIO N2
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

826 Entidad Clientes | By reycito2011


Realiza un programa igual al anterior pero que permita mostrar el contenido de la tabla
servicios de la base de datos MANEMPSA.

PROGRAMACIN

JAVA JTABLE


EJERCICIO N1

Realiza un programa que permita realizar Altas, Bajas y Modificaciones en la tabla
clientes de la base de datos MANEMPSA.

Este programa debe mostrar en todo momento un JTable con el contenido actualizado
de la tabla clientes.

El programa debe tener tres botones. Un botn Eliminar, otro botn Nuevo Cliente y un
botn Modificar Cliente.

Al pulsar Eliminar se eliminar el cliente seleccionado en el JTable.

Al pulsar Nuevo Cliente aparecer un cuadro de dilogo donde el usuario introducir los
datos de un nuevo cliente.

Al pulsar Modificar Cliente aparecer un cuadro de dilogo donde el usuario podr
cambiar los datos del cliente que haya seleccionado en el JTable.

PROGRAMACIN

JAVA JTABLE


EJERCICIO N1

El programa realizado en la hoja de ejercicios anterior permita el alta, baja y
modificacin de los clientes de la base de datos MANEMPSA.

Se pide ahora que aada un cuadro de dilogo de filtrado al ejercicio de la hoja anterior
que permita filtrar por los distintos campos de la tabla de clientes.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

827 Entidad Clientes | By reycito2011


PROGRAMACIN

JAVA JTABLE


EJERCICIO N1

El programa de la hoja de ejercicios anterior permita la gestin de la tabla clientes de la
base de datos MANEMPSA.

Se pide que mejore el programa de la hoja anterior de forma que el cuadro de dilogo de
filtrado permita al usuario decidir la ordenacin del listado.

Por otro lado, se pide que junto al JTable donde aparece el listado de clientes aparezca
el nmero de clientes que se est mostrando en todo momento en el JTable.

PROGRAMACIN

JAVA iREPORT


EJERCICIO N1

Crear una DSN llamada EjercicioDSN que haga referencia a la base de datos
MANEMPSA que tiene almacenada en Mis Documentos.



EJERCICIO N2

En el programa iReport, crear una conexin llamada Conexin Ejercicio que est creada
a partir de la DSN del ejercicio anterior.



EJERCICIO N3

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

828 Entidad Clientes | By reycito2011

Crear un informe usando la conexin Conexin Ejercicio del ejercicio anterior donde
aparezca el listado de clientes de la base de datos MANEMPSA ordenado por nombre
de cliente.

El ttulo de este listado debe ser: Listado de Clientes y luego guarde el informe con el
nombre clientes.

PROGRAMACIN

JAVA iREPORT


EJERCICIO N1

Crea un listado de clientes usando la opcin mago de informes de iReport. Este listado
debe mostrar los siguientes campos: nombre, direccin y los dos telfonos. El listado
debe salir ordenado por nombre.


Una vez creado el listado, debe realizar las siguientes modificaciones en l:

- El ttulo del listado debe ser: Clientes de MANEMPSA. Y debe tener las
siguientes caractersticas:
o Color de fondo: Azul.
o Tamao de la letra: 18.
o Color de letra: Blanco.
o En cursiva.

- La cabecera del listado debe tener las siguientes caractersticas:
o Tamao de letra: 10
o Cada campo de la cabecera debe tener una alineacin Centro.
o Los campos deben estar en negrita y subrayados
o Deben ser de color Azul.

- Los datos del listado deben tener las siguientes caractersticas:
o Deben tener alineacin centro.
o Deben tener un tamao de letra de 10 y el tipo de letra debe ser Comic
Sans.
o Los nombres deben aparecer en color verde, al igual que las direcciones.
o Los telfonos deben aparecer en color rojo y en negrita.


Una vez hecho esto, si quiere experimentar realizando algn cambio ms, hgalo.
21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

829 Entidad Clientes | By reycito2011


PROGRAMACIN

JAVA iREPORT


EJERCICIO N1

Se pide realizar un informe en el que aparezcan los servicios realizados al
cliente Seguros Segasa, cuyo CIF es B11223212.


Interesa que el informe tenga el siguiente diseo:


- El ttulo ser NOTA DE SERVICIOS SEGASA

- En el encabezado de pgina debe aparecer una ficha como la que sigue:



Ficha de Cliente.

CIF: ---el cif del cliente---
NOMBRE: ---el nombre del cliente---
DIRECCIN: ---direccin del cliente---
TELEFONO 1: ---telfono 1 del cliente---
TELEFONO 2: ---telfono 2 del cliente---



- Incluya tambin en el encabezado de pgina un logotipo (bjese una
imagen de internet)

- El listado de servicios debe mostrar los datos: Fecha del servicio, tipo y
cantidad ordenado ascendentemente por fechas. Por supuesto, este
listado debe aparecer con su encabezado. Sera interesante que
destacara el encabezado colocndolo en negrita y separndolo del
listado de datos a travs de una lnea.

- En la zona del pie de columna, aada simplemente una lnea horizontal.

- En la zona del pie de pgina y del pie de ltima pgina debe aparecer el
siguiente texto centrado:


MANEMPSA
Mantenimiento Integral a Empresas

21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

830 Entidad Clientes | By reycito2011

Polgono Industrial Norte, C/ Bonanza 3
11404 Jerez (Cdiz)




































21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

831 Entidad Clientes | By reycito2011




































21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

832 Entidad Clientes | By reycito2011




































21 de marzo de 2011 [PROGRAMACION CON JAVA2 Y NETBEENS]

833 Entidad Clientes | By reycito2011

También podría gustarte