curso de netbeans

1192
MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com Ingenieroensistemas.com Curso de netbeans 7.3 cualquier versión (JAVA) 1 INDICE EJERCICIO GUIADO. JAVA: CUADROS DE VERIFICACIÓN .................................................................. 8 EJERCICIO GUIADO. JAVA: BOTONES DE OPCIÓN.......................................................................... 12 EJERCICIO GUIADO. JAVA: CUADROS DE LISTA ............................................................................. 21 EJERCICIO GUIADO. JAVA: CUADROS COMBINADOS ..................................................................... 28 EJERCICIO GUIADO. JAVA: MODELOS DE CUADRO DE LISTA ......................................................... 35 EJERCICIO GUIADO. JAVA: MODELOS DE CUADRO DE LISTA ......................................................... 42 EJERCICIO GUIADO. JAVA: TOGGLEBUTTONS................................................................................ 48 EJERCICIO GUIADO. JAVA: SLIDERS ............................................................................................... 57 EJERCICIO GUIADO. JAVA: SPINNER.............................................................................................. 65 EJERCICIO GUIADO. JAVA: SCROLLBARS ....................................................................................... 72 EJERCICIO GUIADO. JAVA: BARRA DE MENUS ............................................................................... 82 EJERCICIO GUIADO. JAVA: BARRA DE HERRAMIENTAS.................................................................. 93 EJERCICIO GUIADO. JAVA: MENUS EMERGENTES ....................................................................... 100 EJERCICIO GUIADO. JAVA: FILECHOOSER .................................................................................... 106 EJERCICIO GUIADO. JAVA: PANELES DE DESPLAZAMIENTO ......................................................... 115 EJERCICIO GUIADO. JAVA: VARIABLES GLOBALES ....................................................................... 127 EJERCICIO GUIADO. JAVA: CENTRALIZAR CÓDIGO ...................................................................... 135 EJERCICIO GUIADO. JAVA: LAYOUTS ........................................................................................... 148 EJERCICIO GUIADO. JAVA: LAYOUTS Y PANELES .......................................................................... 165 EJERCICIO GUIADO. JAVA: DIÁLOGOS ......................................................................................... 180 EJERCICIO GUIADO. JAVA: DISEÑO DE FORMULARIOS DESDE CÓDIGO ....................................... 199 EJERCICIO GUIADO. JAVA: EVENTOS DESDE CÓDIGO .................................................................. 222 Programación de eventos .......................................................................................................... 223 PROGRAMACIÓN DE EVENTOS DE ACCIÓN ............................................................................. 225 Eventos .............................................................................................................................. 225 actionPerformed ................................................................................................................ 225 EJERCICIO GUIADO. JAVA: EVENTOS DESDE CÓDIGO. EVENTOS DE RATÓN................................. 237

Upload: rodrigo-avendano

Post on 27-Oct-2015

562 views

Category:

Documents


30 download

TRANSCRIPT

Page 1: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1

INDICE

EJERCICIO GUIADO. JAVA: CUADROS DE VERIFICACIÓN .................................................................. 8

EJERCICIO GUIADO. JAVA: BOTONES DE OPCIÓN .......................................................................... 12

EJERCICIO GUIADO. JAVA: CUADROS DE LISTA ............................................................................. 21

EJERCICIO GUIADO. JAVA: CUADROS COMBINADOS ..................................................................... 28

EJERCICIO GUIADO. JAVA: MODELOS DE CUADRO DE LISTA ......................................................... 35

EJERCICIO GUIADO. JAVA: MODELOS DE CUADRO DE LISTA ......................................................... 42

EJERCICIO GUIADO. JAVA: TOGGLEBUTTONS................................................................................ 48

EJERCICIO GUIADO. JAVA: SLIDERS ............................................................................................... 57

EJERCICIO GUIADO. JAVA: SPINNER .............................................................................................. 65

EJERCICIO GUIADO. JAVA: SCROLLBARS ....................................................................................... 72

EJERCICIO GUIADO. JAVA: BARRA DE MENUS ............................................................................... 82

EJERCICIO GUIADO. JAVA: BARRA DE HERRAMIENTAS .................................................................. 93

EJERCICIO GUIADO. JAVA: MENUS EMERGENTES ....................................................................... 100

EJERCICIO GUIADO. JAVA: FILECHOOSER .................................................................................... 106

EJERCICIO GUIADO. JAVA: PANELES DE DESPLAZAMIENTO ......................................................... 115

EJERCICIO GUIADO. JAVA: VARIABLES GLOBALES ....................................................................... 127

EJERCICIO GUIADO. JAVA: CENTRALIZAR CÓDIGO ...................................................................... 135

EJERCICIO GUIADO. JAVA: LAYOUTS ........................................................................................... 148

EJERCICIO GUIADO. JAVA: LAYOUTS Y PANELES .......................................................................... 165

EJERCICIO GUIADO. JAVA: DIÁLOGOS ......................................................................................... 180

EJERCICIO GUIADO. JAVA: DISEÑO DE FORMULARIOS DESDE CÓDIGO ....................................... 199

EJERCICIO GUIADO. JAVA: EVENTOS DESDE CÓDIGO .................................................................. 222

Programación de eventos .......................................................................................................... 223

PROGRAMACIÓN DE EVENTOS DE ACCIÓN ............................................................................. 225

Eventos .............................................................................................................................. 225

actionPerformed ................................................................................................................ 225

EJERCICIO GUIADO. JAVA: EVENTOS DESDE CÓDIGO. EVENTOS DE RATÓN................................. 237

Page 2: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

2

Como enlazar eventos de ratón con un componente ................................................................. 239

EJERCICIO GUIADO ................................................................................................................. 242

EJERCICIO GUIADO. JAVA: EVENTOS DESDE CÓDIGO. IDEAS GENERALES .................................... 249

Ejemplo 1. Eventos del Ratón ..................................................................................................... 251

Ejemplo 2. Eventos del teclado .................................................................................................. 252

EJERCICIO GUIADO. JAVA: VECTORES ......................................................................................... 257

EJERCICIO GUIADO. JAVA: VECTORES Y EVENTOS ....................................................................... 276

EJERCICIO GUIADO. JAVA: INTRODUCCIÓN A LA POO ................................................................. 283

EJERCICIO GUIADO. JAVA: POO. CLASES PROPIAS ....................................................................... 294

CASO PRÁCTICO: MULTICINES AVENIDA ..................................................................................... 297

EJERCICIO PRÁCTICO .................................................................................................................. 306

EJERCICIO GUIADO. JAVA: POO. PROGRAMACIÓN DE UNA CLASE .............................................. 308

PROGRAMACIÓN DE UNA CLASE ................................................................................................ 311

EJERCICIOS RECOMENDADOS ..................................................................................................... 333

EJERCICIO GUIADO. JAVA: POO. USAR CLASES PROPIAS EN UN PROYECTO ................................. 338

EJERCICIO GUIADO. JAVA: POO. HERENCIA ................................................................................ 362

EJERCICIO GUIADO. JAVA: POO. HERENCIA. DIALOGOS PROPIOS ................................................ 390

EJERCICIO GUIADO. JAVA: POO. REUTILIZACIÓN DE CÓDIGO ...................................................... 406

EJERCICIO GUIADO 2 .................................................................................................................. 417

EJERCICIO GUIADO. JAVA: PROGRAMACIÓN MDI ....................................................................... 429

EJERCICIO GUIADO. JAVA: PROGRAMACIÓN MDI CONTINUACIÓN ............................................. 449

EJERCICIO GUIADO. BASES DE DATOS ......................................................................................... 458

Entidad Clientes ......................................................................................................................... 468

Entidad Trabajadores ................................................................................................................. 468

Entidad Servicios ........................................................................................................................ 468

Entidad Coches .......................................................................................................................... 468

Entidad Servicios ........................................................................................................................ 470

Entidad Trabajadores ................................................................................................................. 475

Page 3: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

3

Entidad Coches .......................................................................................................................... 475

Entidad Trabajadores ................................................................................................................. 476

Entidad Servicios ........................................................................................................................ 476

Entidad Servicios ........................................................................................................................ 476

Entidad Clientes ......................................................................................................................... 476

Entidad Coches .......................................................................................................................... 477

Entidad Trabajadores ................................................................................................................. 477

Entidad Servicios ........................................................................................................................ 477

Entidad Clientes ......................................................................................................................... 478

EJERCICIO GUIADO. BASES DE DATOS. Relaciones Muchas a Muchas ......................................... 492

EJERCICIO GUIADO. BASES DE DATOS. ACCESS ........................................................................... 510

EJERCICIO GUIADO. BASES DE DATOS. CONSULTAS EN ACCESS .................................................. 546

Criterios para campos numéricos ........................................................................................... 570

Criterios para campos de tipo Fecha/Hora.............................................................................. 573

Criterios para campos de tipo Texto o Memo ......................................................................... 574

Criterios complejos ................................................................................................................ 575

EJERCICIO GUIADO. BASES DE DATOS. SQL ................................................................................. 579

Operadores Relacionales ........................................................................................................ 587

Operadores Lógicos ................................................................................................................ 590

Forma de indicar los valores ................................................................................................... 591

Valores numéricos .............................................................................................................. 591

Valores de texto ................................................................................................................. 591

Valores de fecha ................................................................................................................. 592

Forma de indicar los campos .................................................................................................. 593

EJERCICIO GUIADO. BASES DE DATOS. SQL ................................................................................. 609

Alta de registros en SQL ............................................................................................................. 611

Modificación de registros en SQL ............................................................................................... 620

Eliminación de registros en SQL ................................................................................................. 625

Page 4: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

4

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS ................................................................ 630

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS ................................................................ 667

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS ................................................................ 719

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS ................................................................ 734

EJERCICIO GUIADO. JAVA. INFORMES DE BASE DE DATOS .......................................................... 855

EJERCICIO GUIADO Nº 1. INSTALACIÓN DE IREPORT ................................................................... 857

Definición de DSN .................................................................................................................. 858

EJERCICIO GUIADO Nº 3. CONEXIÓN DE IREPORT CON UNA BASE DE DATOS .............................. 867

EJERCICIO GUIADO Nº 4. CREACIÓN RÁPIDA DE INFORMES ........................................................ 876

EJERCICIO GUIADO. JAVA. INFORMES DE BASE DE DATOS .......................................................... 889

EJERCICIO GUIADO Nº 1. CREACIÓN Y MODIFICACIÓN DE UN INFORME ..................................... 890

EJERCICIO GUIADO. JAVA. INFORMES DE BASE DE DATOS .......................................................... 908

EJERCICIO GUIADO Nº 1. CREACIÓN DE UN INFORME DESDE CERO ............................................ 909

EJERCICIO GUIADO. JAVA. INFORMES DE BASE DE DATOS .......................................................... 939

EJERCICIO GUIADO Nº 1. CREACIÓN DE UN INFORME CON CÁLCULOS ....................................... 940

EJERCICIO GUIADO. JAVA. INFORMES DE BASE DE DATOS .......................................................... 965

EJERCICIO GUIADO Nº 1. CREACIÓN DE UN INFORME AGRUPADO ............................................. 966

EJERCICIO GUIADO Nº 1. CREACIÓN DEL INFORME COMPILADO ................................................ 974

EJERCICIO GUIADO Nº 2. CONEXIÓN CON UN INFORME DESDE JAVA ......................................... 979

EJERCICIO GUIADO. JAVA. INFORMES CON PARÁMETROS .......................................................... 991

EJERCICIO GUIADO Nº 1. CREACIÓN DE UN INFORME CON PARÁMETROS .................................. 993

EJERCICIO GUIADO Nº 2. USO DE PARÁMETROS DE UN INFORME DESDE JAVA .......................... 999

EJERCICIO GUIADO. JAVA. CARPETA DISTRIBUIBLE ....................................................................1008

EJERCICIO GUIADO. JAVA. INSTALABLE. .....................................................................................1019

Qué es IZPACK .......................................................................................................................1019

EJERCICIOS PARA PROGRAMAR .................................................................................................1033

PRIMEROS PROGRAMAS .......................................................................................................1033

Ejercicio 1 .............................................................................................................................1033

Page 5: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

5

LISTAS, COMBOS, MODELOS .................................................................................................1041

Ejercicio 1 .............................................................................................................................1041

Ejercicio 2..........................................................................................................................1042

JTOGGLEBUTTONS ................................................................................................................1045

Ejercicio 1 .............................................................................................................................1045

JSLIDER .................................................................................................................................1047

Ejercicio 1 .............................................................................................................................1047

JSPINNER ..............................................................................................................................1051

Ejercicio 1 .............................................................................................................................1051

JSROLLBAR ............................................................................................................................1054

Ejercicio 1 .............................................................................................................................1054

BARRA DE MENÚS .................................................................................................................1056

Ejercicio 1 .............................................................................................................................1056

BARRA DE HERRAMIENTAS ....................................................................................................1059

Ejercicio 1 .............................................................................................................................1059

MENÚS CONTEXTUALES ........................................................................................................1061

Ejercicio 1 .............................................................................................................................1061

DIALOGO ABRIR/GUARDAR FICHERO .....................................................................................1062

Notas Iniciales .......................................................................................................................1062

VARIABLES GLOBALES ...........................................................................................................1065

PROGRAMAS CON CÁLCULOS ................................................................................................1068

Ejercicio 1 .............................................................................................................................1068

CENTRALIZAR CÓDIGO ..........................................................................................................1076

CUADROS DE DIÁLOGO .........................................................................................................1082

ASIGNACIÓN DE EVENTOS DESDE CÓDIGO. EVENTOS DE RATÓN ...........................................1090

ASIGNACIÓN DE EVENTOS DESDE CÓDIGO. EVENTOS DE VENTANA ......................................1094

VECTORES DE COMPONENTES...............................................................................................1096

VECTORES DE COMPONENTES...............................................................................................1099

Page 6: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

6

POO. CREACIÓN Y USO DE CLASES PROPIAS ..........................................................................1102

CUADROS DE MENSAJE, CONFIRMACIÓN E INTRODUCCIÓN DE DATOS .................................1112

Ejercicio 1 .............................................................................................................................1112

POO. DIALOGOS PROPIOS .....................................................................................................1120

PROGRAMACIÓN MDI ...........................................................................................................1123

MODELO E-R .........................................................................................................................1132

TRASPASO A TABLAS .............................................................................................................1136

RELACIONES MUCHAS A MUCHAS .........................................................................................1137

CREACIÓN DE BASES DE DATOS EN ACCESS ...........................................................................1141

CREACIÓN DE CONSULTAS EN ACCESS ...................................................................................1142

CREACIÓN DE CONSULTAS USANDO SQL ...............................................................................1146

CREACIÓN DE CONSULTAS DE ACCIÓN USANDO SQL .............................................................1151

INSERCIÓN DE REGISTROS .....................................................................................................1152

MODIFICACIÓN DE REGISTROS ..............................................................................................1152

ELIMINACIÓN DE REGISTROS .................................................................................................1153

CADENAS ..............................................................................................................................1155

Ejercicio 1 .............................................................................................................................1155

CREACIÓN DE APLICACIONES JAVA USANDO BASE DE DATOS ................................................1158

FECHAS, NÚMEROS REALES, VALORES NULOS .......................................................................1161

CONSULTAS DEL USUARIO.....................................................................................................1163

ALTAS DE REGISTROS ............................................................................................................1165

BAJA DE REGISTROS ..............................................................................................................1166

MODIFICACIÓN DE REGISTROS ..............................................................................................1167

CADENAS (CONTINUACIÓN) ..................................................................................................1173

Ejercicio 1 .............................................................................................................................1173

EXCEPCIONES ........................................................................................................................1182

Ejercicio 1 .............................................................................................................................1182

Ejercicio 1 .............................................................................................................................1184

Page 7: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

7

CUADROS DE VERIFICACIÓN, BOTONES DE OPCIÓN...............................................................1187

Ejercicio 1 .............................................................................................................................1187

LISTAS Y COMBOS .................................................................................................................1190

Ejercicio 1 .............................................................................................................................1190

Page 8: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

8

EJERCICIO GUIADO. JAVA: CUADROS DE VERIFICACIÓN

1. Realiza un nuevo proyecto.

2. En la ventana principal debes añadir lo siguiente:

a. Un botón “Aceptar” llamado btnAceptar. b. Una etiqueta con borde llamada etiResultado.

3. Añade también tres cuadros de verificación. Estos cuadros son objetos del tipo JCheckBox.

4. Añade tres JCheckBox y cambia el texto de ellos, de forma que aparezca “Perro”, “Gato” y “Ratón”.

Page 9: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

9

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

6. La ventana tendrá el siguiente aspecto cuando termine:

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 botón Aceptar. En ese evento añada el siguiente código:

String mensaje="Animales elegidos: ";

if (chkPerro.isSelected()) {

Page 10: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

10

mensaje=mensaje+"Perro ";

}

if (chkGato.isSelected()) {

mensaje=mensaje+"Gato ";

}

if (chkRaton.isSelected()) {

mensaje=mensaje+"Raton ";

}

etiResultado.setText(mensaje);

8. Observa el código. 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 verificación chkPerro.

Si es así concateno a la cadena mensaje la palabra “Perro”. d. Luego compruebo si está seleccionada la casilla de verificación 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 método isSelected() propio de las casillas de verificación, permiten saber si una casilla está activada o no.

Page 11: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

11

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

CONCLUSIÓN

Los cuadros de verificación (JCheckBox) se usan cuando quieres seleccionar

varias opciones.

Page 12: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

12

EJERCICIO GUIADO. JAVA: BOTONES DE OPCIÓN

11. Realiza un nuevo proyecto.

12. En la ventana principal debes añadir lo siguiente:

a. Un botón “Aceptar” llamado btnAceptar. b. Una etiqueta con borde llamada etiResultado.

13. Añade un panel. Un panel es una zona rectangular que puede contener elementos (botones, etiquetas, etc) La forma de poner un panel es a través del objeto JPanel.

14. Una vez añadido el panel en el JFrame, le pondremos un borde para poder localizarlo fácilmente. Debes hacer lo siguiente:

a. Selecciona el panel que has añadido. b. Activa la propiedad Border (botón con tres puntos)

Page 13: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

13

c. Busca el tipo de borde llamado TitledBorder (borde con título) y pon el título colores.

15. Tu ventana debe quedar más o menos así:

Page 14: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

14

16. Ahora debes añadir tres botones de opción (botones de radio) dentro del panel. Estos botones son objetos del tipo JRadioButton.

Page 15: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

15

17. Añade tres JRadioButton y cambia el texto de ellos, de forma que aparezca “Rojo”, “Verde” y “Azul”.

18. Debe cambiar el nombre de cada uno de ellos. Se llamarán: optRojo, optVerde, optAzul.

19. La ventana tendrá el siguiente aspecto cuando termine:

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

Page 16: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

16

21. Hay que hacer que solo un botón de opción pueda estar seleccionado a la vez. Para ello, debe añadir un nuevo objeto. Realice los siguientes pasos:

a. Añada un objeto del tipo ButtonGroup al formulario. ¡Atención! Este objeto es invisible, y no se verá en el formulario, sin embargo, lo podréis 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.

Page 17: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

17

d. Selecciona el botón de opción optRojo y cambia su propiedad buttonGroup, indicando que pertenece al grupo colores (observa la imagen):

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

22. Acabas de asociar los tres botones de opción a un mismo grupo. Esto produce que solo una de las tres opciones pueda estar activada. Pruébelo ejecutando el programa.

23. Ahora interesa que la opción “Rojo” salga activada desde el principio. Una forma de hacer esto es programando en el “Constructor” lo siguiente:

optRojo.setSelected(true);

Page 18: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

18

El método setSelected hace que se pueda activar o desactivar un botón de opción.

Prueba el programa. Observa como la opción Rojo está activada inicialmente.

24. El programa no está terminado aún. Interesa que cuando el usuario pulse el botón Aceptar, en la etiqueta aparezca el color elegido. Para ello, en el actionPerformed del botón Aceptar programe lo siguiente:

String mensaje="Color elegido: ";

if (optRojo.isSelected()) {

mensaje=mensaje+"Rojo";

} else if (optVerde.isSelected()) {

mensaje=mensaje+"Verde";

} else if (optAzul.isSelected()) {

mensaje=mensaje+"Azul";

}

etiResultado.setText(mensaje);

25. Observa el código. En él se hace lo siguiente:

a. Se crea una variable de cadena llamada mensaje.

Page 19: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

19

b. En esa variable se introduce el texto “Color elegido: “ c. Luego se comprueba que opción está seleccionada, usando el método

isSelected de los botones de opción. Este método te dice si un botón está seleccionado o no.

d. Según la opción que esté seleccionada, se añade un texto u otro a la cadena mensaje.

e. Finalmente se muestra la cadena mensaje en la etiqueta etiResultado.

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

CONCLUSIÓN

Los botones de opción, también llamados botones de radio (JRadioButton) se usan

cuando quieres que el usuario pueda elegir una opción de entre varias.

Page 20: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

20

Es interesante que los botones de radio aparezcan dentro de un panel JPanel. Se

recomienda colocar un borde al panel.

Es totalmente necesario añadir 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 opción a la vez.

Page 21: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

21

EJERCICIO GUIADO. JAVA: CUADROS DE LISTA

27. Realiza un nuevo proyecto.

28. En la ventana principal debes añadir lo siguiente:

a. Un botón “Aceptar” llamado btnAceptar. b. Una etiqueta con borde llamada etiResultado.

29. Añade un cuadro de lista. Los cuadros de listas son objetos JList.

30. Cámbiale el nombre al JList. Ten cuidado, ya que en los JList aparecen siempre dentro de otro objeto llamado jScrollPane. Si miras en el Inspector, verás que al pulsar en el botón + del jScrollPane aparecerá tu JList:

Page 22: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

22

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

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

33. Busca la propiedad Model y haz clic en el botón de los tres puntos. Aparecerá un cuadro de diálogo parecido al siguiente. Solo tienes que seleccionar los elementos que quieras y pulsar el botón “Borrar” (Remove) para eliminarlos de la lista.

34. Puedes añadir elementos escribiéndolos en el cuadro Artículo y luego pulsando el botón “Añadir” (Add).

Page 23: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

23

35. Debes hacer que la lista sea la siguiente:

Rojo

Verde

Azul

36. Ahora programaremos el actionPerformed del botón Aceptar. Debes introducir el siguiente código:

String mensaje;

Page 24: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

24

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

etiResultado.setText(mensaje);

37. Observa el código:

a. Se crea una variable de cadena llamada mensaje. b. Y dentro de esta variable se introduce una concatenación de cadenas. c. Observa la parte: lstColores.getSelectedValue(), esta parte

devuelve el valor seleccionado de la lista. d. Hay que tener en cuenta que este valor no es una cadena, por eso hay que

convertirla a cadena añadiendo .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.

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

Page 25: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

25

39. Vamos a mejorar el programa. Puede suceder que el usuario no seleccione ningún valor del cuadro de lista, y sería interesante en este caso que el programa avisara de ello. Cambie el código del botón Aceptar por este otro código:

String mensaje;

if (lstColores.getSelectedIndex()==-1) {

mensaje="No hay un color seleccionado.";

} else {

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

}

etiResultado.setText(mensaje);

Page 26: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

26

40. Observa el código:

a. El método 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 método devuelve -1, entonces es señal de que no hay ningún elemento seleccionado.

d. Aprovecho esto para mostrar un mensaje indicando lo sucedido.

41. Si ejecuta el programa y pulsa el botón Aceptar sin seleccionar nada el resultado debería ser el siguiente:

42. Se podría haber prescindido del botón aceptar si el código anterior se hubiera puesto en el evento mouseClicked del cuadro de lista en vez de en el

Page 27: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

27

actionPerformed del botón Aceptar. En este caso, cada vez que se seleccionara un elemento de la lista, automáticamente aparecería el mensaje en la etiqueta.

Se anima a que realice esta modificación.

CONCLUSIÓN

El objeto JList permite crear cuadros de lista. Estos objetos contienen una serie de

elementos que pueden ser seleccionados.

A través del método getSelectedValue se puede obtener el elemento que está

seleccionado. (Recuerda convertirlo a cadena con toString)

A través del método getSelectedIndex se puede saber la posición del elemento

seleccionado. Si este índice es -1, entonces sabremos que no hay ningún elemento

seleccionado.

Page 28: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

28

EJERCICIO GUIADO. JAVA: CUADROS COMBINADOS

43. Realiza un nuevo proyecto.

44. En la ventana principal debes añadir lo siguiente:

a. Una etiqueta con borde llamada etiResultado.

45. Añade un cuadro combinado (combo). Los cuadros combinados son objetos del tipo JComboBox. Básicamente, un combo es una lista desplegable.

46. Cámbiale el nombre al JComboBox. El nombre será cboColores. Tu programa debe tener más o menos este aspecto.

Page 29: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

29

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

Page 30: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

30

48. Al igual que pasaba con los cuadros de lista, se pueden eliminar los elementos que contiene el combo y añadir elementos propios. Use los botones Añadir y Eliminar para añadir la siguiente lista de elementos:

Rojo

Verde

Azul

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

Page 31: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

31

50. 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 añadir el

siguiente código:

String mensaje="El color elegido es ";

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

etiResultado.setText(mensaje);

51. Este código 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 método getSelectedItem, se usa para saber el elemento

seleccionado del combo. Es necesario convertirlo a texto con toString.

Page 32: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

32

d. Finalmente se coloca el mensaje en la etiqueta.

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

53. Los cuadros combinados pueden funcionar también 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.

Page 33: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

33

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

CONCLUSIÓN

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

propuestas.

Los combos pueden funcionar también como cuadros de textos, si se activa la

opción editable.

A través del método getSelectedItem se puede extraer la opción seleccionada o el

texto escrito en el combo.

Se escribe aquí y

se pulsa enter

Page 34: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

34

Page 35: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

35

EJERCICIO GUIADO. JAVA: MODELOS DE CUADRO DE LISTA

55. Realiza un nuevo proyecto.

56. En la ventana principal debes añadir lo siguiente:

a. Una etiqueta con borde llamada etiResultado.

57. Añade un cuadro de lista al formulario (JList).

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

Page 36: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

36

59. Añade 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.

Page 37: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

37

60. En el evento actionPerformed del botón “Curso 1” programa lo siguiente:

DefaultListModel modelo = new DefaultListModel();

modelo.addElement("Juan");

modelo.addElement("María");

modelo.addElement("Luis");

lstNombres.setModel(modelo);

61. En el evento actionPerformed del botón “Curso 2” programa lo siguiente:

DefaultListModel modelo = new DefaultListModel();

modelo.addElement("Ana");

Page 38: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

38

modelo.addElement("Marta");

modelo.addElement("Jose");

lstNombres.setModel(modelo);

62. Explicación de los códigos anteriores:

a. Lo que hace cada botón es rellenar el cuadro de lista con una serie de nombres. En el caso del botón “Curso 1”, la lista se rellena con los nombres Juan, María y Luis, mientras que en el caso del botón “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.

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 través de la siguiente instrucción (será necesario añadir el import correspondiente, atento a la bombillita):

DefaultListModel modelo = new DefaultListModel();

f. El “modelo” tiene un método llamado addElement que permite introducir datos dentro de él. Así pues usamos este método para añadir los datos al modelo.

modelo.addElement("Ana");

modelo.addElement("Marta");

Page 39: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

39

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.

63. Prueba a ejecutar el programa. Observa como cuando pulsas cada botón cambia el contenido de la lista:

Click y cambia el

listado.

Page 40: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

40

64. Ahora añade el siguiente código al evento mouseClicked del cuadro de lista:

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

Esta instrucción hace que al seleccionar un elemento del cuadro de lista éste

aparezca en la etiqueta etiResultado. Recuerda que el método getSelectedValue

permite recoger el elemento seleccionado (hay que convertirlo a cadena con

toString)

65. Ejecuta el programa:

Click y aparece el

elemento

seleccionado en la

etiqueta.

Page 41: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

41

66. Una propuesta. Añada un botón “Vaciar” llamado btnVaciar. Este botón vaciará el contenido de la lista. Para esto lo único que tiene que hacer es crear un modelo y, sin introducir ningún valor en él, asociarlo al cuadro de lista.

CONCLUSIÓN

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

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.

Page 42: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

42

EJERCICIO GUIADO. JAVA: MODELOS DE CUADRO DE LISTA

67. Realiza un nuevo proyecto.

68. En la ventana principal debes añadir lo siguiente:

a. Un combo llamado cboNumeros. b. Un botón “Pares” llamado btnPares. c. Un botón “Impares” llamado btnImpares. d. Una etiqueta con borde llamada etiResultado.

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

70. Después de haber hecho todo esto, tu ventana debe quedar más o menos así:

71. En el evento actionPerformed del botón Pares, programa lo siguiente:

Page 43: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

43

int i;

DefaultComboBoxModel modelo = new DefaultComboBoxModel();

for (i=0;i<10;i+=2) {

modelo.addElement("Nº "+i);

}

cboNumeros.setModel(modelo);

72. Observa lo que hace este código: 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 instrucción:

DefaultComboBoxModel modelo = new DefaultComboBoxModel();

b. A continuación, se usa el objeto “modelo” creado y se rellena de datos. Concretamente, se rellena con los números pares comprendidos entre 0 y 10.

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

d. Se ha usado un bucle for para hacer la introducción de datos en el modelo más fácil.

e. Finalmente, se asocia el modelo al combo a través de la siguiente línea, con lo que el combo aparece relleno con los elementos del modelo:

Page 44: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

44

cboNumeros.setModel(modelo);

73. Ejecuta el programa y observa el funcionamiento del botón Pares.

74. El botón 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);

Se pulsa y se rellena

automáticamente

Page 45: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

45

}

cboNumeros.setModel(modelo);

75. La única diferencia de este código es el for, que está diseñado para que se introduzcan los números impares comprendidos entre 0 y 10 dentro del modelo.

76. Finalmente se programará el actionPerformed del combo para que al seleccionar un elemento este aparezca en la etiqueta. Esto se hace con una simple instrucción:

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

Recuerda el uso de getSelectedItem() para recoger el elemento seleccionado, y el

uso de toString() para convertirlo a texto.

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

Page 46: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

46

78. Sería interesante añadir un botón “Vaciar” llamado btnVaciar que vaciara el contenido del combo. Esto se haría simplemente creando un modelo vacío y asignarlo al combo. Se anima al alumno a que realice esta mejora.

CONCLUSIÓN

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

Page 47: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

47

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.

Page 48: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

48

EJERCICIO GUIADO. JAVA: TOGGLEBUTTONS

79. Realiza un nuevo proyecto.

80. Crearás una ventana como la que sigue teniendo en cuenta lo siguiente:

a. Se añadirá una etiqueta con el texto “Precio Base”. No hace falta cambiarle su nombre.

b. Se añadirá un cuadro de texto llamado txtPrecioBase.

c. Se creará un botón “Calcular”, llamado btnCalcular.

d. Se creará una etiqueta vacía y con borde llamada etiTotal. Use la propiedad font de esta etiqueta para hacer que el texto tenga un mayor tamaño.

e. Debes añadir también tres botones, con el texto “Instalación”, “Formación” y “Alimentación BD” respectivamente.

Page 49: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

49

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 llamarán respectivamente: tbtnInstalacion,

tbtnFormacion, tbtnAlimentacionBD.

f. Añade finalmente tres etiquetas conteniendo los números 40, 200, 200. La primera se llamará etiPrecioInstalacion, la segunda etiPrecioFormacion y la tercera etiPrecioAlimentacionBD.

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

Page 50: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

50

82. 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 continuación, si el cliente quiere la instalación, activará el botón

Instalación. c. Si el cliente quiere la formación, activará el botón Formación. d. Si el cliente quiere la Alimentación de Base de Datos, activará el botón

Alimentación BD. e. Ten en cuenta que el cliente puede querer una o varias de las opciones

indicadas. f. Finalmente se pulsará el botón calcular y se calculará el precio total. Este

precio se calcula de la siguiente forma:

Precio Total = Precio Base + Precio Extras.

Observa como al pulsar los

JToggledButton estos se quedan

pulsados.

Si se vuelven a activar se “despulsan”.

Page 51: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

51

El precio de los Extras dependerá de las opciones elegidas por el usuario.

Por ejemplo, si el usuario quiere Instalación y Formación, los extras

costarán 240 euros.

83. Así pues, se programará el actionPerformed del botón Calcular de la siguiente forma:

Page 52: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

52

double precio_base;

double precio_instal; //precio instalación

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 cálculos.

//Al precio base se le van añadiendo precio de extras

//según estén o no activados los JToggleButtons

double precio_total;

precio_total = precio_base;

if (tbtnInstalacion.isSelected()) { //Si se seleccionó instalación

precio_total = precio_total+precio_instal;

}

if (tbtnFormacion.isSelected()) { //Si se seleccionó formación

precio_total = precio_total+precio_for;

Page 53: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

53

}

if (tbtnAlimentacionBD.isSelected()) { //Si se seleccionó Alimentación BD

precio_total = precio_total+precio_ali;

}

//Finalmente pongo el resultado en la etiqueta

etiTotal.setText(precio_total+" €");

84. Veamos una explicación del código:

a. Primero se crean variables doubles (ya que se admitirán decimales) para poder hacer los cálculos.

b. Se extraerán los datos de la ventana y se almacenarán 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 numérica, ya se pueden hacer cálculos 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.

Page 54: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

54

double precio_total;

precio_total = precio_base;

d. A continuación se le suma al precio_total los precios de los extras si el botón correspondiente está seleccionado. Esto se hace a través de if. Por ejemplo, para sumar el extra por instalación:

if (tbtnInstalacion.isSelected()) { //Si se seleccionó instalación

precio_total = precio_total+precio_instal;

}

Esto significa: “Si el botón instalación está seleccionado, añade al precio

total el precio por instalación”

Observa el uso del método isSelected para saber si el botón tbtnInstalacion

ha sido seleccionado.

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

85. Comprueba el funcionamiento del programa…

Introduce una cantidad (usa el punto

para los decimales)

Selecciona los extras que desees.

Page 55: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

55

86. Supongamos que normalmente (en el 90 por ciento de los casos) la instalación es solicitada por el usuario. Podría ser interesante que el botón Instalación ya saliera activado al ejecutarse el programa. Para ello, añade en el Constructor la siguiente línea.

tbtnInstalacion.setSelected(true);

Esta línea usa el método setSelected para activar al botón tbtnInstalación.

Comprueba esto ejecutando el programa.

Page 56: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

56

CONCLUSIÓN

Los JToggleButton son botones que pueden quedarse pulsados.

A través del método isSelected podemos saber si un JToggleButton está

seleccionado.

También puedes usar el método setSelected para seleccionar o no un botón de este

tipo.

Realmente, estos botones no suelen ser muy usados, ya que pueden ser

sustituidos por Cuadros de Verificación (JCheckBox) que son más conocidos.

Page 57: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

57

EJERCICIO GUIADO. JAVA: SLIDERS

Introducción a los JSliders

La clase JSlider permite crear objetos como el siguiente:

Estos elementos tienen un pequeño recuadro que se puede arrastrar a derecha o

izquierda. Según la posición del recuadro, el JSlider tendrá un valor concreto.

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

También se puede configurar de forma que los valores mínimo y máximo sean distintos:

Page 58: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

58

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 continuación las características más interesantes de los JSlider y como

programarlos.

Ejercicio guiado

1. Crea un nuevo proyecto.

2. Añade en él un JSLider. Su nombre será slDeslizador.

3. Añade una etiqueta con borde. Su nombre será etiValor.

4. La ventana tendrá el siguiente aspecto:

Page 59: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

59

5. Un JSlider tiene un valor mínimo y un valor máximo. El valor mínimo es el valor que tiene cuando el recuadro está pegado a la parte izquierda, mientras que el valor máximo es el valor que tiene cuando el recuadro está pegado a la parte derecha.

El valor mínimo y máximo del JSlider se puede cambiar. Busca las propiedades

maximum y minimum del JSlider y asigna los siguientes valores:

Máximo: 500

Mínimo: 100

Page 60: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

60

6. Se puede asignar un valor inicial al JSlider a través de su propiedad value. Busque esta propiedad y asigne un valor de 400. Observe donde se sitúa el recuadro del JSlider.

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

Page 61: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

61

8. Esto, en realidad, no produce ningún cambio en el JSlider. Para que las divisiones se vean, es necesario que active también la propiedad paintTicks. Esta propiedad pintará divisiones en el JSlider:

9. Aún se puede mejorar la presentación del JSlider, si hacemos que aparezca el valor de cada división. Para ello debes activar la propiedad paintLabel.

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

Medidas cada 50

unidades

Page 62: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

62

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 explicación del código es la siguiente:

a. El método getValue del deslizador nos devuelve el valor que tiene actualmente el deslizador.

Page 63: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

63

b. Este valor es concatenado a la cadena “El valor es:” y es mostrado en la etiqueta a través del conocido setText.

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

orientation

Permite cambiar la orientación del JSlider. Podrías 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

Movemos aquí.

Y aparece el valor

Page 64: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

64

Cuando esta propiedad está activada, no podrás 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 línea sobre la que se desliza el JSlider.

Prueba a desactivarla.

CONCLUSIÓN

Los JSliders son objetos “deslizadores”. Permiten elegir un valor arrastrando un

pequeño recuadro de derecha a izquierda o viceversa.

El valor de un JSliders puede ser obtenido a través de su método getValue.

Si quieres programar el cambio (el arrastre) en el deslizador, tienes que programar

el evento llamado stateChanged.

Page 65: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

65

EJERCICIO GUIADO. JAVA: SPINNER

Introducción a los JSpinner

La clase JSpinner permite crear cuadros como el siguiente:

Son elementos muy comunes en los programas. A través de los dos botones triangulares

se puede hacer que el valor del cuadro aumente o disminuya. También se puede escribir

directamente un valor dentro del cuadro.

Ejercicio guiado

15. Crea un nuevo proyecto.

16. Añade en él un JSpinner. Su nombre será spiValor.

Page 66: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

66

17. Añade una etiqueta con borde. Su nombre será etiValor.

18. La ventana tendrá el siguiente aspecto:

19. Interesa que cuando cambie el JSpinner (ya sea porque se pulsaron los botones triangulares o porque se escribió dentro) aparezca el valor correspondiente dentro de la etiqueta. Para ello, tendrá que programar el evento stateChanged del JSpinner.

En el evento stateChanged introduzca el siguiente código:

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

Page 67: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

67

20. Como puedes observar, lo que hace el programa es recoger el valor que tiene el JSpinner a través del método getValue y luego se lo asigna a la etiqueta con el clásico setText. (Es muy parecido a los deslizadores)

Debes tener en cuenta que el valor devuelto no es un número ni una cadena, así

que en el ejemplo se ha usado el método toString() para convertirlo a una cadena.

21. Prueba el programa y observa su funcionamiento:

22. Observa como los valores del JSpinner aumentan o disminuyen en 1. Por otro lado, no parece haber un límite para los valores del JSpinner.

La pregunta ahora es: ¿Se puede modificar el contenido del JSpinner de forma

que tenga unos valores concretos? La respuesta es sí. Veamos como hacerlo.

23. Entra dentro del código del programa y, dentro del constructor, añade este código debajo de initComponents:

SpinnerNumberModel nm = new SpinnerNumberModel();

El usuario modifica el

valor del JSpinner...

Page 68: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

68

nm.setMaximum(10);

nm.setMinimum(0);

spiValor.setModel(nm);

24. Este código hace lo siguiente:

a. El JSpinner, al igual que los JList y los JComboBox, es un objeto que contiene otro objeto “modelo”, y es el objeto “modelo” el que contiene los números visualizados en el JSpinner.

b. En el código anterior se crea un “modelo” para el JSpinner, se definen los valores que contendrá, y luego se asigna al JSpinner. Estudiemos las líneas del código.

c. La primera línea crea un “modelo” llamado nm. Los modelos de los JSpinner son del tipo SpinnerNumberModel. Necesitarás incluir el import correspondiente (atento a la bombilla)

d. En la segunda línea se define como valor máximo del modelo el 10, a través de un método llamado setMaximum.

e. En la tercera línea se define como valor mínimo del modelo el 0, a través de un método llamado setMinimum.

f. Finalmente se asigna el modelo creado al JSpinner.

g. Este código, en definitiva, hará que el JSpinner muestre los valores comprendidos entre 0 y 10.

25. Prueba el programa y observa los valores que puede tomar el JSpinner.

Page 69: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

69

26. Vamos a añadir otra mejora. Cambie el código del constructor por este otro. (Observa que solo se ha añadido una línea):

SpinnerNumberModel nm = new SpinnerNumberModel();

nm.setMaximum(10);

nm.setMinimum(0);

nm.setStepSize(2);

spiValor.setModel(nm);

27. La línea añadida es:

nm.setStepSize(2);

Ahora los valores están

comprendidos entre 0 y

10

Page 70: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

70

Esta línea usa un método del modelo del JSpinner que permite definir el valor de

cambio del JSPinner. Dicho de otra forma, esta línea hace que los valores del

JSpinner salten de 2 en 2.

28. Ejecuta el programa de nuevo y observa como cambian los valores del JSpinner.

29. El modelo del JSpinner tiene también un método llamado setValue que permite asignar un valor inicial al modelo. Pruebe a usar este método para hacer que el JSpinner muestre desde el principio el valor 4.

CONCLUSIÓN

Los JSpinners son objetos que permiten seleccionar un número, ya sea

escribiéndolo en el recuadro, o bien a través de dos botones triangulares que

permiten aumentar o disminuir el valor actual.

Los JSpinners son objetos con “modelo”. Es decir, este objeto contiene a su vez

otro objeto “modelo” que es el que realmente contiene los datos.

Page 71: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

71

Datos à Modelo à JSpinner

Para definir el contenido del JSpinner es necesario crear un modelo del tipo

SpinnerNumberModel. Se le asigna al modelo los números deseados, y finalmente

se une el modelo con el JSpinner.

El objeto modelo del JSpinner permite definir el valor mínimo y el valor máximo, así

como el intervalo de aumento de los valores.

Page 72: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

72

EJERCICIO GUIADO. JAVA: SCROLLBARS

Introducción a las JscrollBars (Barras de desplazamiento)

La clase JScrollBar permite crear barras de desplazamiento independientes, como la que

se muestra a continuación:

La barra tiene un valor mínimo, 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.

Valor mínimo

Page 73: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

73

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.

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)

Page 74: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

74

Ejercicio guiado

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

2. Añade en el proyecto una barra de desplazamiento (JScrollBar) y llámala desValor.

3. La barra de desplazamiento aparecerá en vertical. Use la propiedad de la barra llamada Orientation para hacer que la barra aparezca en posición horizontal.

4. Añade también una etiqueta con borde y llámala etiValor.

5. La ventana debe quedar más o menos así:

Page 75: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

75

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 método getValue. Ejecuta el programa para ver su funcionamiento.

Pulsa aquí y observa

como el valor cambia

poco a poco…

Page 76: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

76

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

Minimum – Permite asignar el valor mínimo de la barra. Escribe un 50

Maximum – Permite asignar el valor máximo de la barra. Escribe un 150

UnitIncrement – Permite cambiar el incremento unitario. Escribe un 2.

Pero si pulsas aquí el

valor cambia en mayor

cantidad…

Page 77: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

77

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

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

5.

5

Page 78: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

78

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 mínimo, su

valor será de 50, ya que se

configuró así con la propiedad

minimum…

Page 79: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

79

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

Observa lo que sucede cuando llevas

la barra de desplazamiento al máximo:

aparece un valor de 145, cuando el

valor máximo que asignamos fue de

150 ¿por qué?

Valor máximo (150) *

Valor de la barra (145) **

5 ***

Page 80: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

80

* Nuestra barra tiene un valor máximo 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 través de la propiedad

VisibleAmount, el valor máximo que la barra puede alcanzar es de:

Valor = ValorMáximo – Ancho del recuadro.

Es decir,

Valor alcanzable = 150 – 5 = 145

11. A través del método 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.

CONCLUSIÓN

Page 81: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

81

Las JScrollBars son barras de desplazamiento independientes. Al igual que los

JSliders, las JScrollBars tienen un valor concreto, que puede ser obtenido a través

del método getValue.

Entre las características programables de una barra de desplazamiento, tenemos

las siguientes:

- Valor mínimo (propiedad Minimum)

- Valor máximo (propiedad Maximum)

- Incremento unitario (propiedad UnitIncrement)

- Incremento en bloque (propiedad BlockIncrement)

- Tamaño del recuadro de la barra (propiedad VisibleAmount)

Page 82: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

82

EJERCICIO GUIADO. JAVA: BARRA DE MENUS

Barras de Menús

La barra de menús nos permitirá acceder a las opciones más importantes del programa.

Todo programa de gran envergadura suele tener una barra de menús.

Ejercicio guiado

12. Veamos como añadir una barra de menús a nuestras aplicaciones. En primer lugar, crea un proyecto con el NetBeans.

13. Añade a tu ventana un objeto JMenuBar

14. En la parte superior de tu ventana aparecerá esto:

Page 83: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

83

15. En el inspector (parte inferior izquierda) observarás 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 menús.

16. Aprovecha el Inspector para cambiar el nombre al objeto JMenuBar. Llámalo barraMenus.

17. Cambia también el nombre al objeto JMenu. Asígnale el nombre menuArchivo. El Inspector tendrá el siguiente aspecto:

18. Ahora, la única opción de la barra de menús muestra el texto “Menu”. Esto se puede cambiar seleccionándola y cambiando su propiedad text. Asígnale el texto “Archivo” a la opción del menú:

Page 84: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

84

19. Ahora el aspecto de la barra de menús será el siguiente:

20. Puedes añadir más opciones principales a la barra de menús haciendo clic con el derecho sobre el objeto de la barra de menús y activando la opción “Añadir JMenu”.

Page 85: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

85

21. Añada dos opciones más a la barra de menús. El inspector debe tener ahora el siguiente aspecto:

22. Y la barra de menús presentará este otro aspecto:

23. Cambia los nombres de las dos nuevas opciones. Sus nombres serán: menuEdicion y menuInsertar.

24. Cambia los textos de ambas opciones. Sus textos serán: “Edición” e “Insertar”.

Page 86: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

86

25. Ya tenemos creada la barra de menús (JMenuBar) con sus opciones principales (JMenu). Ahora se tendrán que definir las opciones contenidas en cada opción principal. Por ejemplo, crearemos las opciones contenidas en el menú Archivo.

26. Haz clic con el botón derecho sobre el objeto menuArchivo y activa la opción “Añadir – JMenuItem”.

Los JMenuItem son objetos que representan las opciones contenidas en los menús

desplegables de la barra de menús.

27. Añade un JMenuItem más al menuArchivo y luego cambia el nombre a ambos. Sus nombres serán menuItemAbrir y menuItemGuardar. El aspecto del Inspector será el siguiente:

Page 87: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

87

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

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

Observa como la opción Archivo se despliega mostrando dos submenús: Abrir y

Guardar.

30. Seguiremos añadiendo elementos al menú. Ahora haga clic con el derecho sobre el elemento menuArchivo y añada un JSeparator.

Page 88: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

88

Los JSeparator son objetos que definen una separación entre las opciones de un menú.

Cámbiele el nombre y llámelo “separador1”:

31. Añada un nuevo JMenuItem al menú Archivo y ponle el nombre menuSalir. El texto de esta opción será “Salir” (use su propiedad text) El aspecto del Inspector será el siguiente:

32. Ejecuta el programa y observa el contenido de la opción Archivo del menú:

Page 89: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

89

Observa el efecto que produce el separador.

33. Un JMenu representa las opciones principales de la barra de menús. A su vez, un JMenu contiene JMenuItem, que son las opciones contenidas en cada opción principal, y que se ven cuando se despliega el menú.

Sin embargo, un JMenu puede contener a otros JMenu, que a su vez contendrán

varios JMenuItem. Usando el botón derecho del ratón y la opción “Añadir”, añade

un JMenu dentro de menuEdicion:

Page 90: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

90

34. Llama al nuevo JMenu menuColores y asignale el texto “Colores”.

35. Ahora añade dentro del menuColores tres JMenuItem llamados respectivamente: menuItemRojo, menuItemVerde, menuItemAzul. Sus textos serán “Rojo”, “Verde” y “Azul”.

36. Ejecuta el programa y observa como ha quedado el menú Edición:

Page 91: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

91

La opción Edición (JMenu) contiene una opción Colores (JMenu) que a su vez

contiene las opciones Rojo, Verde y Azul (JMenuItems)

37. De nada sirve crear un menú si luego este no reacciona a las pulsaciones del ratón. Cada objeto del menú tiene un evento ActionPerformed que permite programar lo que debe suceder cuando se active dicha opción del menú.

38. Marque en el inspector el objeto menuItemRojo y acceda a su evento ActionPerformed. Dentro de él programe este sencillo código:

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

Este código cambia el color de fondo de la ventana a rojo.

39. Compruebe el funcionamiento de la opción “Rojo” del menú ejecutando el programa.

40. Programa tu mismo las opciones “Verde” y “Azul”.

Page 92: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

92

CONCLUSIÓN

Las barras de menús 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 también puede contener otros JMenu, que a su vez contendrán

JMenuItems.

También puede añadir separadores (JSeparator) que permiten visualizar mejor las

opciones dentro de un menú.

Page 93: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

93

EJERCICIO GUIADO. JAVA: BARRA DE HERRAMIENTAS

Barras de herramientas

Una barra de herramientas es básicamente un contenedor de botones y otros elementos

propios de la ventana.

A través de estos botones se pueden activar de forma rápida las opciones del programa,

las cuales suelen estar también incluidas dentro de la barra de menús.

Ejercicio guiado

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

42. Añade a tu ventana un objeto JmenuBar (una barra de menús)

43. En la parte superior de tu ventana aparecerá esto:

Page 94: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

94

44. Debajo de la barra de menús colocaremos una barra de herramientas, así que añade un objeto del tipo JToolBar. Haz que la barra se coloque debajo de la barra de menús y que alcance desde la parte izquierda de la ventana a la parte derecha.

La ventana quedará así:

45. 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 añade

cuatro botones (JButton) dentro de la barra. Solo tienes que colocarlos dentro de

ella.

Page 95: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

95

46. Puedes ver si los botones están bien colocados observando el Inspector: Observa como los botones colocados se encuentran dentro de la barra.

47. Aprovecharemos el inspector para cambiar el nombre a la barra y a cada botón. A la barra la llamaremos barraHerramientas, y a los botones los llamaremos btnUno, btnDos, btnTres y btnCuatro:

Page 96: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

96

48. Cambia el texto de los botones. Estos contendrán el texto: “Uno”, “Dos”, “Tres” y “Cuatro”.

49. Ejecuta el programa y observa el resultado.

50. La forma de programar cada botón no varía, aunque estos se encuentren dentro de la barra herramientas. Solo hay que seleccionar el botón y acceder a su evento actionPerformed.

51. Solo como demostración de esto último, entra en el actionPerformed del primer botón y programa esto:

JOptionPane.showMessageDialog(null,"Activaste el botón uno");

Page 97: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

97

Luego ejecuta el programa y comprueba el funcionamiento del botón.

52. Los botones de la barra de herramientas normalmente no contienen texto, sino que contienen un icono que representa la función que realiza. La forma de colocar un icono dentro de un botón es a través de su propiedad icon.

53. A través de la propiedad icon de un botón podrá seleccionar un fichero de imagen que contenga la imagen a mostrar en el botón.

54. Activa la propiedad icon del primer botón. Luego elige la opción Fichero y pulsa el botón 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 pequeña.

Nota: Se recomienda buscar imágenes .gif en Internet para practicar.

Page 98: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

98

55. Una vez colocadas las imágenes a los botones, se puede quitar el texto de estos. Un ejemplo de cómo podría quedar la barra de herramientas es este:

Page 99: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

99

CONCLUSIÓN

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.

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

asociados.

Page 100: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

100

EJERCICIO GUIADO. JAVA: MENUS EMERGENTES

El evento mouseClicked

El evento mouseClicked es capaz de capturar un clic del ratón sobre un determinado

elemento de la ventana.

Este evento recibe como parámetro un objeto del tipo MouseEvent, y gracias a él se

puede conseguir información como la siguiente:

- Qué botón del ratón fue pulsado. - Cuantas veces (clic, doble clic, etc) - En qué coordenadas fue pulsado el botón. - Etc.

Se puede usar esta información para saber por ejemplo si se pulsó el botón derecho del

ratón, y sacar en este caso un menú contextual en pantalla.

En este ejercicio guiado se estudiarán las posibilidades del evento mouseClicked y se

aplicarán a la creación y visualización de menús contextuales (o emergentes)

Ejercicio guiado

56. Crea un nuevo proyecto.

Page 101: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

101

57. No hace falta que añada nada a la ventana.

58. Programaremos la pulsación del ratón sobre el formulario, así que haga clic sobre el formulario y active el evento mouseClicked.

59. Observe el código del evento:

private void formMouseClicked(java.awt.event.MouseEvent evt) {

// TODO add your handling code here:

}

Este evento recibe como parámetro un objeto llamado evt del tipo MouseEvent (en

rojo en el código) que nos permite saber en qué condiciones se hizo clic.

60. 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");

}

Page 102: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

102

61. Ejecuta el programa y haz clic sobre el formulario con el botón derecho, con el izquierdo y con el central. Observa el resultado.

62. Ahora quizás puedas comprender el código anterior. En él, se usa el método getButton del objeto evt para saber qué botón se pulsó. El método getButton devuelve un entero que puede ser 1, 2 o 3 según el botón pulsado.

63. Se puede aprovechar el método getButton para controlar la pulsación del botón derecho del ratón y así sacar un menú contextual. Pero antes, es necesario crear el menú.

64. Agrega a tu formulario un objeto del tipo JPopupMenu. Estos objetos definen menús emergentes.

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

66. Aprovecharemos el inspector para cambiar el nombre al menú. Llámalo menuEmergente.

67. Los menús emergentes se crean igual que las opciones de menús normales, añadiendo con el botón derecho del ratón objetos JMenuItem.

Page 103: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

103

68. Añada al menú emergente tres JMenuItem, y asígneles los siguientes nombres a cada uno: menuRojo, menuVerde, menuAzul. El inspector debería tener el siguiente aspecto:

69. Tienes que cambiar la propiedad text de cada opción del menú. Recuerda que esta propiedad define lo que aparece en el menú. Asignarás los siguientes textos: “Rojo”, “Verde” y “Azul”.

70. El menú emergente ya está construido. Ahora tenemos que hacer que aparezca cuando el usuario pulse el botón derecho del ratón sobre el formulario. Para ello, entraremos de nuevo en el evento mouseClicked del formulario y cambiaremos su código por el siguiente:

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

71. Este código significa lo siguiente:

- El método show le da la orden al menuEmergente para que se muestre. - El método show recibe tres elementos: por un lado la ventana donde actúa (this) - Por otro lado la posición x donde debe mostrarse el menú. Esta posición es

aquella donde se pulsó el ratón, y se puede conseguir gracias al método getX del objeto evt.

- Por último se necesita la posición y. Esta posición se puede conseguir gracias al método getY del objeto evt.

Page 104: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

104

Es decir, decidimos mostrar el menú emergente justo en las coordenadas donde

se hizo clic.

72. Ejecuta el programa y observa el resultado.

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

73. Para hacer que al pulsarse una opción suceda algo, solo hay que activar el método actionPerformed del JMenuItem correspondiente. Por ejemplo, active el actionPerformed del menuRojo y dentro programe lo siguiente:

Page 105: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

105

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

74. Ejecuta el programa y comprueba lo que sucede al pulsar la opción Rojo del menú contextual.

CONCLUSIÓN

Los menús 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 método show del menú emergente para mostrar dicho menú.

Page 106: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

106

EJERCICIO GUIADO. JAVA: FILECHOOSER

Cuadros de diálogo 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 información dentro de un fichero en alguna carpeta.

Java proporciona una clase llamada JFileChooser (elegir fichero) que permite mostrar la

ventana típica de Abrir o Guardar:

Ventana Abrir fichero:

Page 107: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

107

(La ventana de guardar es la misma, solo que muestra en su barra de título la palabra

Guardar)

El objeto JFileChooser nos facilita la labor de elegir el fichero, pero no realiza la apertura o

la acción de guardar la información en él. Esto tendrá que ser programado.

Page 108: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

108

Ejercicio guiado

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

76. Añade en el proyecto los siguientes elementos:

a. Una barra de menús. Llámala barraMenus. b. Dentro de ella una opción “Archivo” llamada menuArchivo. c. Dentro de la opción “Archivo”, introduce los siguientes elementos:

i. Una opción “Abrir”, llamada menuAbrir. ii. Un separador (llámalo como quieras) iii. Una opción “Salir”, llamada menuSalir.

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

78. Si ejecutas el programa el menú se verá así:

Page 109: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

109

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

80. Para que al pulsar la opción “Abrir” de nuestro programa aparezca el diálogo de apertura de ficheros, es necesario añadir a nuestro programa un objeto del tipo JFileChooser.

Los objetos JFileChooser se añadirán el la zona de “Otros Componentes” del

inspector.

81. Haz clic con el derecho sobre la zona de “otros componentes” y activa la opción Agregar desde Paleta – Swing – JFileChooser:

Page 110: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

110

82. 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í:

Page 111: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

111

83. Una vez hecho esto, ya podemos programar la opción Abrir del menú. Activa el evento actionPerformed de la opción “Abrir” y programa dentro de él lo siguiente:

int resp;

resp=elegirFichero.showOpenDialog(this);

if (resp==JFileChooser.APPROVE_OPTION) {

JOptionPane.showMessageDialog(null,elegirFichero.getSelectedFile().toString())

;

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

JOptionPane.showMessageDialog(null,"Se pulsó la opción Cancelar");

}

Page 112: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

112

84. Ejecuta el código y prueba la opción “Abrir” del menú. Prueba a elegir algún fichero y abrirlo. Prueba a cancelar la ventana de apertura. Etc

85. Analicemos el código anterior:

int resp;

resp=elegirFichero.showOpenDialog(this);

- Estas dos líneas crean una variable entera resp (respuesta) y a continuación hacen que se muestre la ventana “Abrir Fichero”. Observa que para conseguirlo hay que usar el método showOpenDialog del objeto elegirFichero. Este método lleva como parámetro la ventana actual (this)

- El método showOpenDialog no solo muestra la ventana “Abrir Fichero” sino que también devuelve un valor entero según el botón pulsado por el usuario en esta ventana. Esto es: botón “Abrir” o botón “Calcelar”.

- Se pueden usar dos if para controlar lo que sucede si el usuario pulsó el botón “Abrir” o el botón “Calcelar” de la ventana “Abrir Fichero”:

if (resp==JFileChooser.APPROVE_OPTION) {

JOptionPane.showMessageDialog(null,elegirFichero.getSelectedFile().toString())

;

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

JOptionPane.showMessageDialog(null,"Se pulsó la opción Cancelar");

}

Page 113: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

113

- 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 método getSelectedFile del objeto elegirFichero para recoger el camino del fichero elegido. Este camino debe ser convertido a cadena con el método toString.

- El programa aprovecha esto para mostrar dicho camino en pantalla gracias al típico JOptionPane.

- En el caso del que el usuario pulsara el botón “Cancelar” el programa muestra un mensaje indicándolo.

86. Hay que volver a dejar claro que el cuadro de diálogo “Abrir” realmente no abre ningún fichero, sino que devuelve el camino del fichero elegido usando el código:

elegirFichero.getSelectedFile().toString()

Luego queda en manos del programador el trabajar con el fichero correspondiente

de la forma que desee.

CONCLUSIÓN

Los objetos JFileChooser permiten mostrar el cuadro de diálogo “Abrir Fichero” o

“Guardar Fichero”.

Page 114: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

114

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.

Page 115: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

115

EJERCICIO GUIADO. JAVA: PANELES DE DESPLAZAMIENTO

Paneles de Desplazamiento

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 podría contener una imagen tan grande que no

se viera entera:

Los paneles de desplazamiento son objetos del tipo JScrollPane.

Ejercicio guiado 1

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

88. Añade en el proyecto un JScrollPane.

89. Un JScrollPane, por sí mismo, no contiene nada. Es necesario añadir dentro de él el objeto que contendrá. Para nuestro ejemplo añadiremos dentro de él una etiqueta (JLabel)

90. El formulario debe tener ahora este aspecto:

Page 116: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

116

91. Si observas el Inspector verás claramente la distribución de los objetos:

Observa como tienes un JScrollPane que contiene una etiqueta.

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

Page 117: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

117

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

94. Luego introduciremos una imagen dentro de la etiqueta, a través de la propiedad icon. La imagen la introduciremos desde fichero, y elegiremos la siguiente imagen de tu disco duro:

Mis Documentos / Mis Imágenes / Imágenes de Muestra / Nenúfares.jpg

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

Page 118: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

118

96. Puedes mejorar el programa si agrandas el panel de desplazamiento de forma que ocupe todo el formulario:

Page 119: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

119

De esta forma, cuando ejecutes el programa, al agrandar la ventana, se agrandará

el panel de desplazamiento, viéndose mejor la imagen contenida.

97. Ejecuta el programa y compruébalo.

Ejercicio guiado 2

Los JScrollPane no solo están diseñados para contener imágenes. Pueden contener

cualquier otro elemento. Vamos a ver, con otro proyecto de ejemplo, otro uso de los

JScrollPane.

Page 120: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

120

1. Crea un nuevo proyecto.

2. Añade a la ventana una etiqueta con el texto “Ejemplo 2 de JScrollPane” y un JScrollPane de forma que esté asociado a los límites de la ventana. Observa la imagen:

3. Ahora añade dentro del JScrollPane un panel normal (JPanel). En la ventana no notarás ninguna diferencia, pero en el Inspector debería aparecer esto:

Page 121: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

121

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.

Además, los JPanel pueden ser diseñados independientemente de la ventana. Haz

doble clic sobre el panelDatos en el Inspector y observa lo que ocurre:

7. En la pantalla aparecerá únicamente el JPanel, para que puede ser diseñado aparte de la ventana completa:

Page 122: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

122

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

- Cambia el color de fondo y asígnale un color verde. - Añade en él una etiqueta con el texto “Panel de Datos”. - Añade varias etiquetas y cuadros de textos correspondientes a los días de la

semana. - Agranda el panel.

El panel debería quedar así. Toma como referencia esta imagen:

Page 123: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

123

Es muy interesante que observes el Inspector. En él podrás observar la

distribución de los objetos en la ventana. Podrás 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 aún no les

hemos asignado un nombre:

Page 124: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

124

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

Page 125: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

125

Como ves, el JPanel contenido en el JScrollPane es más 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.

CONCLUSIÓN

Page 126: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

126

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 imágenes, paneles y otros elementos

cuyo tamaño pueda ser mayor que la propia ventana.

Page 127: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

127

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.

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 según se necesite.

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

variables globales.

Ejercicio guiado 1

98. Crea un nuevo proyecto llamado ProyectoParking. Dentro de él añade un paquete llamado paqueteParking. Y finalmente añade un JFrame llamado Parking. El aspecto de tu proyecto será el siguiente:

Clase Principal

Page 128: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

128

99. Tu clase principal es la clase Parking.

100. Se pretende hacer un pequeño 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:

101. Esta ventana contiene lo siguiente:

i. Un botón “Entró un coche” llamado btnEntro. ii. Un botón “Salió un coche” llamado btnSalio. iii. Un botón “Reiniciar” llamado btnReiniciar. iv. Una etiqueta con el texto “Coches en el Parking”. v. Una etiqueta con borde llamada etiCoches que contenga un “0”.

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

a. Cuando el usuario pulse el botón “Entró un coche”, el número de coches del parking aumenta en 1, mostrándose en la etiqueta etiCoches.

Page 129: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

129

b. Si el usuario pulsa el botón “Salió un coche”, el número de coches del parking disminuye en 1, mostrándose en la etiqueta etiCoches.

c. El botón Reiniciar coloca el número de coches del parking a 0.

103. Para poder controlar el número 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.

104. Para crear una variable global haz clic en el botón “Origen” para acceder al código:

105. Luego busca, al comienzo del código una línea que comenzará por

public class

Seguida del nombre de tu clase principal “Parking”.

Debajo de dicha línea es donde se programarán las propiedades de la clase (las

variables globales)

Aquí se declaran las variables

globales, también llamadas

propiedades de la clase.

Page 130: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

130

106. En dicho lugar declararás la variable coches de tipo int:

107. 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. Añade lo siguiente al código:

Declaración de una variable

global int llamada coches.

Page 131: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

131

Inicializamos a cero ya que se supone que cuando arranca el programa no hay

ningún coche dentro del parking.

108. 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 pulsación del botón “Entró un coche”.

Acceda a su evento actionPerformed y programe esto:

coches=coches+1;

etiCoches.setText(“”+coches);

Como ves, se le añade a la variable coches uno más y luego se coloca su valor

actual en la etiqueta.

Inicialización de la propiedad

coches.

Page 132: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

132

109. Ejecuta el programa y prueba este botón varias veces.

110. Ahora programaremos el botón “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.

Pulsas, y aparece aquí el valor de

la propiedad coches.

Page 133: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

133

Se usa un if para controlar que no pueda restarse un coche cuando el parking esté

vacío. (Si hay cero coches en el parking no se puede restar uno)

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

Al pulsar aquí aumentas en uno la

propiedad coches.

Al pulsar aquí disminuyes en uno

Page 134: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

134

112. Finalmente se programará el botón Reiniciar. Este botón, 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.

113. Ejecuta el programa y comprueba el funcionamiento de este botón.

CONCLUSIÓN

Las variables globales, también 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.

Las variables globales se declaran justo después de la línea public class.

La inicialización de estas variables se realiza en el constructor.

Page 135: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

135

EJERCICIO GUIADO. JAVA: CENTRALIZAR CÓDIGO

El problema de la repetición de código

Es muy habitual en Java que varios eventos tengan que ejecutar el mismo código. En este

caso se plantea la necesidad de “copiar y pegar” ese código en los distintos eventos a

programar:

Esta es una mala forma de programación, ya que se necesitara modificar el código, sería

necesario realizar la modificación en cada copia del código. Es muy fácil que haya olvidos

y aparezcan errores en el programa que luego son muy difíciles de localizar.

Lo mejor es que el código que tenga que ser ejecutado desde distintos eventos aparezca

solo una vez, y sea llamado desde cada evento:

Evento 1

Evento 2

Evento 3

Código A

Código A

Código A

Page 136: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

136

Veamos algunos ejemplos en los que el código se puede repetir y como evitar esta

repetición.

Ejercicio guiado 1

114. Crea un nuevo proyecto en java que se llame ProyectoCalculos. Este proyecto tendrá un paquete llamado PaqueteCalculos. Y dentro de él creará un JFrame llamado VentanaCalculos. El proyecto tendrá el siguiente aspecto:

Evento 1

Evento 2

Evento 3

Código A

Page 137: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

137

115. La VentanaCalculos debe estar diseñada de la siguiente forma:

Esta ventana contiene los siguientes elementos:

- Una barra de menús a la que puede llamar menuBarra. - La barra de menús 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 “Número 1”. (no importa su nombre) - Una etiqueta con el texto “Número 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 botón “Sumar” con el nombre btnSumar. - Un botón “Restar” con el nombre btnRestar. - Un botón “Borrar” con el nombre btnBorrar.

Page 138: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

138

116. Aquí puedes ver la ventana en ejecución con el menú “Calcular” desplegado:

117. El objetivo de programa es el siguiente:

a. El usuario introducirá dos números en los cuadros de texto. b. Si pulsa el botón Sumar, se calculará la suma. c. Si pulsa el botón Restar, se calculará la resta. d. Si pulsa el botón Borrar, se borrarán ambos cuadros de texto. e. Si elige la opción del menú Calcular-Sumar entonces se calculará la suma. f. Si elige la opción del menú Calcular-Restar entonces se calculará la resta. g. Si elige la opción del menú Calcular-Borrar entonces se borrarán ambos

cuadros de texto. h. Si se pulsa enter en alguno de los dos cuadros de texto se debería calcular

la suma.

Page 139: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

139

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

119. Para que el código esté “centralizado”, es decir, que aparezca solo una vez, será necesario construir en la clase un método. Un método en java es el equivalente de una función o procedimiento en C. Veamos como hacerlo:

120. Accede al código de tu programa a través del botón Origen.

Pulsar Botón 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

Page 140: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

140

121. Un buen sitio para programar tus procedimientos puede ser debajo del constructor. Puedes distinguir fácilmente al constructor porque tiene el mismo nombre que la clase que estás programando, o dicho de otro modo, tiene el mismo nombre que la ventana que estás programando: VentanaCalculos.

122. 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 prácticamente la misma estructura que en C.

Programe lo siguiente:

Este es el constructor

Este es un buen sitio para crear

Page 141: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

141

123. Si observas el código, es el típico procedimiento de C, cuya cabecera comienza con void y el nombre que le hayas asignado (en nuestro caso Sumar)

void Sumar() {

....

}

Si estudias las líneas del código, verás que lo que hace es recoger el contenido de

los dos cuadros de texto en dos variables de cadena llamadas cad1 y cad2.

Este es el procedimiento

que tienes que introducir en

el programa.

Page 142: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

142

Luego convierte dichas cadenas en números 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.

124. Hay que destacar que este código no pertenece ahora mismo a ningún evento en concreto, por lo que no tiene efecto ninguno sobre el programa. Será necesario pues asociar los eventos correspondientes con este procedimiento.

125. Interesa que al pulsar el botón “Sumar” se ejecute la suma, así pues entre en el evento actionPerformed del botón “Sumar” y añada la siguiente línea:

Sumar();

126. Como también interesa que al pulsar la opción del menú “Calcular-Sumar” se ejecute la suma, entre en el evento actionPerformed de la opción del menú “Sumar” y añade de nuevo la siguiente línea:

Sumar();

127. También se quiere que al pulsar la tecla enter en el cuadro de texto del número 1 se ejecute la suma. Por lo tanto, en el evento actionPerformed del cuadro de texto txtNumero1 hay que añadir la siguiente línea:

Sumar();

128. Y como también se quiere que al pulsar la tecla enter en el cuadro de texto del número 2 se ejecute la suma, también habrá que introducir en su actionPerformed la siguiente línea:

Sumar();

Page 143: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

143

129. Antes de continuar, ejecute el programa, introduzca dos números, y compruebe como se calcula la suma al pulsar el botón Sumar, o al activar la opción del menú Calcular–Sumar, 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.

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

actionPerformed btnSumar

actionPerformed menuSumar

actionPerformed txtNumero1

Procedimiento

actionPerformed txtNumero2

Pulsar Botón Restar

Activar Calcular – Restar en el menú

Page 144: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

144

131. Para centralizar el código, crearemos un método Restar que se encargará de hacer la resta de los números introducidos en los cuadros de texto. Este método se puede colocar debajo del anterior método Sumar:

Calcular la resta y

mostrar el resultado.

Programa este

procedimiento.

Page 145: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

145

132. El código de este procedimiento es prácticamente idéntico al del procedimiento Sumar, así que no se comentará.

133. Ahora, es necesario que cuando se activen los eventos indicados antes, estos hagan una llamada al procedimiento Restar para que se efectúe la resta. Así pues, entre en el evento actionPerformed del botón “Restar” y añada esta línea de código:

Restar();

134. Igualmente, entre en el evento actionPerformed de la opción del menú “Calcular – Restar” y añada la misma llamada:

Restar();

135. Ejecute el programa y compruebe como funciona el cálculo de la resta, da igual que lo haga pulsando el botón “Restar” o la opción del menú “Restar”. Ambos eventos llaman al mismo método:

actionPerformed btnRestar

actionPerformed menuRestar Procedimiento

Page 146: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

146

136. Finalmente se programará el borrado de los cuadros de texto a través del botón “Borrar” y de la opción del menú “Borrar”. En primer lugar, programa el siguiente método (puedes hacerlo debajo del método “Restar”):

137. Ahora programa las llamadas al procedimiento borrar desde los distintos eventos. En el evento actionPerformed del botón “Borrar” y en el evento actionPerformed de la opción del menú “Borrar” programa la siguiente llamada:

Borrar();

Programa el

procedimiento Borrar...

Page 147: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

147

138. Ejecuta el programa y prueba su funcionamiento.

CONCLUSIÓN

En java se pueden programar procedimientos al igual que en C. Normalmente, estos

procedimientos se programarán debajo del constructor, y tienen la misma

estructura que en C.

Se puede llamar a un mismo procedimiento desde distintos eventos, evitando así la

repetición de código.

Page 148: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

148

EJERCICIO GUIADO. JAVA: LAYOUTS

El problema de la distribución de elementos en las ventanas

Uno de los problemas que más quebraderos de cabeza da al programador es el diseño de

las ventanas y la situación de los distintos componentes en ellas.

Para diseñar más cómodamente las ventanas, Java proporciona una serie de objetos

denominados Layouts, que definen la forma que tendrán los elementos de situarse en las

ventanas.

Así pues, un Layout define de qué forma se colocarán las etiquetas, botones, cuadros de

textos y demás componentes en la ventana que diseñamos.

Ejercicio guiado

“Diseño Libre”

139. Crea un nuevo proyecto en java.

140. Añade una etiqueta y un botón. Muévelos a la posición que se indica en la imagen. Deben aparecer las líneas “guía” de color azul que se muestran:

Page 149: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

149

141. Las líneas azules que aparecen indican con qué otro elemento está relacionado un componente de la ventana. La situación de un elemento dependerá siempre de la situación del otro.

Dicho de otra forma, las líneas azules indican las distancias que siempre se

respetarán. Observa la siguiente imagen:

Page 150: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

150

142. 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 botón mantienen sus distancias relativas entre sí y con los bordes derecho e inferior de la ventana.

Tanto el botón como la

etiqueta estarán siempre

a esta distancia del borde

derecho de la ventana…

El botón siempre estará a

esta distancia de la

etiqueta…

El botón siempre estará a

esta distancia del borde

inferior de la ventana…

Siempre se mantienen las

distancias relativas

definidas en el diseño

aunque el tamaño de la

ventana cambie.

Page 151: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

151

143. Este comportamiento de los elementos en la ventana viene dado por una opción del NetBeans llamada Diseño Libre (Free Design)

El Diseño Libre permite que los elementos de una ventana mantengan una

distribución relativa da igual el tamaño que tenga la ventana. Dicho de otra forma,

los elementos se redistribuyen al cambiar el tamaño de la ventana.

El problema del Diseño Libre es el poco control que se tiene sobre los elementos

que se añaden a la ventana.

Se puede observar como a veces los elementos no se colocan en la posición que

deseamos o como cambian de tamaño 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 más elementos tengamos en una ventana,

más difícil será el colocarlos usando el Diseño Libre.

“AboluteLayout. Posiciones Absolutas”

144. El Diseño Libre es la opción que está activada por defecto cuando se crea un proyecto en NetBeans. Sin embargo, esta opción se puede cambiar por distintos “Layouts” o “Distribuciones”.

145. En el Inspector de tu proyecto pulsa el botón derecho del ratón sobre el objeto JFrame y activa la opción Establecer Disposición – AbsoluteLayout.

Page 152: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

152

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

distribución AbsoluteLayout permite al programador colocar cada elemento donde

él quiera, sin restricciones, sin tener en cuenta distancias relativas.

Page 153: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

153

147. Sitúa la etiqueta y el botón donde quieras. Observa que no aparece ninguna línea guía que defina distancias relativas:

148. La ventana de definir una distribución AbsoluteLayout es la facilidad para colocar cada elemento en la ventana (no tendrás los problemas del Diseño Libre). Sin embargo, la desventaja es que los elementos no mantienen una distribución relativa respecto al tamaño de la ventana.

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

Page 154: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

154

Verás que los elementos de la ventana son inamovibles aunque la ventana cambie

de tamaño. En cambio, en el Diseño Libre los elementos intentaban siempre estar

dentro de la ventana.

“Distribución en línea. FlowLayout”

150. Practiquemos ahora con otro tipo de distribución. Accede al Inspector y pulsa el botón derecho del ratón sobre el objeto JFrame. Activa la opción Establecer Disposición – FlowLayout.

Page 155: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

155

151. Observa como el layout “AbsoluteLayout” es sustituido por la distribución “FlowLayout”. Una elemento solo puede tener un tipo de distribución a la vez.

152. Observa la ventana. Los elementos se han colocado uno detrás de otro. Se han colocado “en línea”. Esto es lo que hace el “FlowLayout”. Fuerza a los distintos elementos a que se coloquen en fila.

Page 156: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

156

153. Si seleccionas el FlowLayout en el Inspector, podrás acceder a sus propiedades (los layout son objetos como los demás) Una de las propiedades del FlowLayout se llama alineación y permite que los elementos estén alineados a la izquierda, derecha o centro. El FlowLayout tiene una alineación centro por defecto.

154. El FlowLayout no permite controlar la posición de los elementos en la ventana, pero sí procura que los elementos estén siempre visibles aunque la ventana se cambie de tamaño. Ejecuta el programa y observa el comportamiento del FlowLayout al agrandar o achicar la ventana:

“Distribución en rejilla. GridLayout”

En el FlowLayout, los elementos

intentan siempre estar dentro de

la ventana, aunque esta se

cambie de tamaño…

Page 157: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

157

155. Otra distribución que se puede usar es la distribución GridLayout. Esta distribución coloca a los elementos en filas y columnas, como si formaran parte de una tabla. Al añadir esta distribución es necesario indicar cuantas filas y columnas tendrá la rejilla.

156. Cambia el layout del JFrame por un GridLayout:

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

Page 158: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

158

158. 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 adaptarán al espacio que tienen asignado, y cambiarán

de tamaño.

159. Ya que solo tienes dos elementos en la ventana (una etiqueta y un botón), añade otros cuatro elementos más (cuatro botones) para observar como se distribuyen en la cuadrícula.

Page 159: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

159

160. En un GridLayout, los elementos estarán situados siempre en una casilla de la rejilla, ocupando todo su espacio. El programador no tiene mucho control sobre la disposición de los elementos.

161. Ejecuta el programa y agranda y achica la ventana. Observa como los elementos siempre mantienen su disposición en rejilla y siempre aparecen dentro de la ventana aunque el tamaño de esta varíe.

Con un GridLayout los

elementos aparecen en

filas y columnas.

Siempre aparecen dentro

Page 160: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

160

“BorderLayout”

162. Otra de las distribuciones posibles es la llamada BorderLayout. Esta distribución 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.

163. Haz clic con el derecho sobre el JFrame y asigna una distribución “BorderLayout”.

Page 161: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

161

164. Para poder entender el funcionamiento del BorderLayout, se recomienda que el JFrame contenga únicamente 5 botones (elimine los elementos que tiene ahora y añada cinco botones)

La ventana tendrá un aspecto parecido al siguiente:

Page 162: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

162

165. Como se puede observar, cada botón se ha colocado en una zona, y su tamaño ha variado hasta ocupar la zona entera. Tenemos un botón 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 disposición de los elementos en la

ventana al usar esta distribución.

166. Ejecuta el programa y observa como los elementos siempre se mantienen dentro de la ventana aunque esta cambie de tamaño.

Page 163: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

163

CONCLUSIÓN

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

Diseño Libre – Esta distribución viene activada por defecto en el NetBeans, y define

una distribución de componentes en la que se respetan las distancias entre ellos

cuando la ventana cambia de tamaño.

AbsoluteLayout – En esta distribución el programador puede colocar cada elemento

en la posición que desee de la ventana. Los distintos elementos mantienen su

posición aunque la ventana cambie de tamaño, lo que puede hacer que si la ventana

se reduce de tamaño algunos elementos no se vean.

Con un GridLayout los

elementos aparecen

zonas.

Siempre aparecen dentro

Page 164: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

164

FlowLayout – En esta distribución los elementos se colocan uno detrás de otro. Los

elementos intentarán estar dentro de la ventana aunque esta se reduzca de tamaño.

GridLayout – Esta distribución coloca a los elementos en filas y columnas. Los

elementos siempre estarán dentro de la ventana aunque esta se reduzca de tamaño.

BorderLayout – Esta distribución coloca a los elementos en zonas. Los elementos

siempre estarán dentro de la ventana aunque esta se reduzca de tamaño.

Page 165: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

165

EJERCICIO GUIADO. JAVA: LAYOUTS Y PANELES

Técnicas de distribución de elementos en las ventanas

A la hora de diseñar una ventana se tienen en cuenta dos cosas:

- La facilidad a la hora de colocar muchos componentes en la ventana. - Que dichos componentes estén siempre visibles independientemente del tamaño

de la ventana.

La distribución 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 tamaño.

El Diseño Libre en cambio permite crear ventanas en las que sus componentes se

“recolocan” según el tamaño de estas pero a cambio crece la dificultad del diseño.

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,

según 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 más le

convenga al programador (FlowLayout, Diseño Libre, AbsoluteLayout, etc…) Finalmente,

dentro de cada panel se añaden los componentes de la ventana.

JFrame

(BorderLayout o GridLayout)

Page 166: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

166

JPanel 1

(Diseño Libre, AbsoluteLayout o

JPanel 2

(Diseño Libre, AbsoluteLayout o

Componentes Componentes

etc…

Page 167: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

167

Ejercicio guiado

167. Crea un nuevo proyecto en java.

Se pretende crear un proyecto con una ventana de diseño complejo. Para ello

sigue los siguiente pasos:

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

169. El BorderLayout divide la ventana principal en zonas. Ahora añade un panel (JPanel) a la zona norte de la ventana.

Page 168: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

168

170. Cambia el nombre a este panel y llámalo panelTitulo, ya que contendrá el nombre del programa.

171. Añade otro panel, esta vez a la parte central. El panel se llamará panelDatos:

Panel en la zona norte.

Page 169: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

169

172. Añade 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 opción Agregar desde paleta – Swing – JPanel.

Page 170: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

170

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

Page 171: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

171

El panel debería estar situado finalmente en el sur de la ventana:

174. El Inspector tendrá la siguiente forma ahora:

Page 172: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

172

175. Añade ahora tu solo un panel en la zona oeste llamado panelBotonera y otro en la zona esta llamado panelVerificacion. El Inspector debería tener la siguiente forma al finalizar:

176. Cada panel puede ser diseñado de forma individual, simplemente haciendo doble clic sobre él. Así pues, empezaremos diseñando el panel panelBotonera. Haz doble clic sobre él.

177. En la parte izquierda del NetBeans aparecerá únicamente el panelBotonera. Agrándalo para que tenga la siguiente forma:

Page 173: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

173

178. 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 debería quedar así:

179. Ahora añade cuatro botones al panel. Observa como tienes libertad total para colocar cada botón donde quieras. Procura que el panel quede así:

Page 174: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

174

(No nos vamos a preocupar en este ejercicio de los nombres de los componentes)

180. Ahora diseña el panel panelVerificación haciendo doble clic sobre él.

181. Asígnale también un layout AbsoluteLayout.

182. Coloca en él cuatro casillas de verificación. El aspecto del panel al terminar debe ser parecido al siguiente:

Page 175: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

175

Y el Inspector debe tener un estado similar a este:

183. Ahora se diseñará el panelTitulo. Haz doble clic sobre él.

184. En este caso se le añadirá un FlowLayout. Recuerda que este layout hace que cada elemento se coloque uno detrás de otro.

185. Añade 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...

Page 176: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

176

186. El panelEstado lo diseñaremos sin asignar ningún layout, es decir, usando el Diseño Libre. En él añadiremos tres etiquetas de forma que estas mantengan una distancia relativa con respecto al límite derecho del panel. Dicho de otra forma, que siempre estén pegadas a la parte derecha del panel:

Observa las líneas “guía”. 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.

187. El panelDatos lo vamos a complicar un poco. Haz doble clic sobre él para diseñarlo y asígnale un GridLayout.

188. Marca el GridLayout y asígnale 2 filas y 2 columnas, para que interiormente tenga forma de una rejilla como esta:

Page 177: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

177

189. A cada una de las divisiones del GridLayout del panelDatos le asignaremos un nuevo panel. Añade al panelDatos cuatro paneles. Esto lo puedes hacer fácilmente haciendo clic con el botón derecho del ratón sobre el panelDatos en el Inspector y eligiendo la opción Añadir desde paleta – Swing – JPanel.

El aspecto del inspector debería ser como el que sigue, en lo que se refiere al

panelDatos:

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

Page 178: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

178

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

191. Ahora añada al panelEtiqueta1 y al panelEtiqueta2 sendas etiquetas. Y al panelCuadro1 y panelCuadro2 sendos cuadros de textos. El panel panelDatos debe quedar así:

Page 179: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

179

192. Finalmente ejecuta el programa y comprueba como se comportan los elementos según el panel donde se encuentre y el layout asignado a cada uno.

CONCLUSIÓN

Para el diseño 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 añade un JPanel, al que se le asigna un

AbsoluteLayout, un FlowLayout o se mantiene el Diseño Libre.

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.

Page 180: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

180

EJERCICIO GUIADO. JAVA: DIÁLOGOS

Cuadros de Diálogo

Un cuadro de diálogo es un cuadro con opciones que aparece normalmente cuando se

activa una opción del menú principal del programa.

Los cuadros de diálogo tienen forma de ventana aunque no poseen algunas

características de estas. Por ejemplo, no pueden ser minimizados ni maximizados.

Los cuadros de diálogo, aparte de las opciones que muestran, suelen contener dos

botones típicos: el botón Aceptar y el botón Cancelar. El primero de ellos da por válidas

las opciones elegidas y cierra el cuadro de diálogo. El segundo simplemente cierra el

cuadro de diálogo sin hacer ninguna modificación.

He aquí algunos ejemplos de cuadros de diálogo del programa Word:

Page 181: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

181

Para crear cuadros de diálogo en Java, se usa un tipo de objetos llamado JDialog. Estos

objetos pueden ser diseñados como si fueran ventanas, aunque representan realmente

cuadros de diálogo.

Page 182: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

182

Ejercicio guiado

193. Crea un nuevo proyecto en java.

194. Diseña el JFrame de forma que la ventana tenga el siguiente aspecto:

Los elementos de la ventana tendrán los siguientes nombres:

- Cuadro de texto de unidades: txtUnidades. - Cuadro de texto de precio: txtPrecio. - Etiqueta con borde del total: etiTotal. - Botón Calcular: btnCalcular. - Botón Configuración: btnConfiguracion.

195. Se pretende que cuando se pulse el botón Calcular se calcule el total de la venta (esto se hará luego) Para hacer el cálculo se tendrán en cuenta el IVA y el Descuento a aplicar. Estos dos valores serán variables globales, ya que se usarán en distintos lugares del programa.

Page 183: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

183

196. Así pues entra en el código y declara una variable global iva y otra descuento tal como se indica a continuación (recuerda que las variables globales se colocan justo después de la línea donde se define la clase principal public class):

197. Cuando el programa arranque, interesará que el iva por defecto sea 0, y que el descuento por defecto sea 0 también, así que en el constructor, inicializaremos las variables globales iva y descuento a 0:

Variables

globales

Page 184: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

184

198. Estamos ya preparados para programar el botón btnCalcular. Entra en su actionPerformed y allí se programará la realización del cálculo 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 números)

unidades = Double.parseDouble(txtUnidades.getText());

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

//Calculo el total sin iva, la cantidad de iva y la cantidad de descuento

totalsiniva=precio*unidades;

Inicialización de

variables

globales

Page 185: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

185

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);

199. Puedes ya ejecutar el programa y comprobar que el botón Calcular funciona, aunque el cálculo que realiza lo hace con un iva 0 y un descuento 0.

200. A continuación se programará el botón Configuración de forma que nos permita decidir qué iva y qué descuento queremos aplicar. Este botón mostrará un CUADRO DE DIÁLOGO que permita al usuario configurar estos datos.

201. Para añadir un cuadro de diálogo al proyecto, se tiene que añadir un objeto del tipo JDialog sobre el JFrame.

Page 186: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

186

202. 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 menús contextuales o los JFileChooser. Observa tu inspector, allí verás el JDialog que has añadido:

203. Cámbiale el nombre. Lo llamaremos dialogoConfiguracion.

204. Los diálogos normalmente traen por defecto el layout BorderLayout. Para nuestro ejemplo cambiaremos el layout del JDialog por el Diseño Libre:

Page 187: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

187

205. Los JDialog se pueden diseñar 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.

206. Así pues debes diseñar el dialogoConfiguracion para que quede de la siguiente forma:

Los elementos del cuadro de diálogo tienen los siguientes nombres:

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

Si observas el Inspector debe tener el siguiente aspecto:

Page 188: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

188

Page 189: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

189

207. Se ha dicho que cuando se pulse el botón Configuración en la ventana principal, debe aparecer el cuadro de diálogo dialogoConfiguracion, que acabas de diseñar:

208. Para conseguir esto, debes programar el actionPerformed del botón btnConfiguracion de la siguiente forma:

Haces clic sobre Configuración

y aparece el diálogo

Page 190: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

190

dialogoConfiguracion.setSize(250,200);

dialogoConfiguracion.setLocation(100,100);

dialogoConfiguracion.setVisible(true);

209. El código anterior hace lo siguiente:

i. A través del método setSize se asigna un tamaño de 250 x 200 al cuadro de diálogo.

ii. A través del método setLocation se determina que el cuadro de diálogo aparecerá en la posición (100, 100) de la pantalla.

iii. A través del método setVisible hacemos que el cuadro de diálogo se muestre.

210. Ejecuta el programa y observa lo que sucede cuando pulsas el botón Configurar. Debería aparecer el cuadro de diálogo en la posición programada y con el tamaño programado:

Page 191: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

191

211. Los botones Aceptar y Cancelar del cuadro de diálogo aún no hacen nada. Así que los programaremos. Empezaremos por el más sencillo, el botón Cancelar.

212. El botón Cancelar de un cuadro de diálogo simplemente cierra dicho cuadro de diálogo. Para ello, debes añadir el siguiente código en el actionPerformed del botón Cancelar del diálogo:

dialogoConfiguracion.dispose();

El método dispose se usa para cerrar un cuadro de diálogo. También se puede

usar con un JFrame para cerrarlo.

Page 192: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

192

213. Ejecuta el programa de nuevo y comprueba el funcionamiento del botón Cancelar del cuadro de diálogo.

214. Ahora se programará el botón Aceptar. Cuando el usuario pulse este botón, se confirmará el valor del iva y del descuento que haya introducido. Es decir, se traspasarán 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 diálogo se debe cerrar.

215. Este es el código que hace lo anterior. Debe programarlo en el actionPerformed del botón Aceptar:

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

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

dialogoConfiguracion.dispose();

216. Observe el código. Primero se traspasa los valores de los cuadros de texto a las variables globales y luego se cierra el cuadro de diálogo.

217. 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 botón Configuración, e introduzca un iva del 16. El

descuento déjelo 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.

218. Se pretende ahora mejorar un poco el cuadro de diálogo, añadiéndole un título. Seleccione el cuadro de diálogo en el Inspector y luego busque su propiedad title. En ella escriba “Configuración de iva y descuento”.

Page 193: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

193

219. Vuelva a ejecutar el programa. Observe la barra de título del cuadro de diálogo:

220. Ahora se estudiará el concepto de cuadro de diálogo modal y cuadro de diálogo no modal.

• Un cuadro de diálogo no modal. Es aquel que permite activar la ventana desde la que apareció. Los cuadros de diálogo añadidos a un proyecto son por defecto no modales.

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

a. Pulsa el botón Configurar. Aparecerá el cuadro de diálogo. b. Pulsa sobre la ventana.

Page 194: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

194

c. Observarás que la ventana se activa, colocándose sobre el cuadro de diálogo.

Pulsa sobre la

ventana.

La ventana se activa

colocándose por encima

del cuadro de diálogo.

Page 195: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

195

d. Esto es posible gracias a que el cuadro de diálogo es no modal.

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

f. Ahora ejecuta el programa de nuevo y haz que se visualice el cuadro de diálogo de configuración. Podrás comprobar que se puede activar la ventana e incluso escribir en sus cuadros de textos, y que el cuadro de diálogo sigue visible:

Se puede activar la

ventana trasera, e

incluso escribir en ella.

Esto es gracias a que el

cuadro de diálogo es no

modal.

Por otro lado, el cuadro

de diálogo sigue

mostrándose delante de

la ventana. Esto es

Page 196: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

196

g. Es muy común, cuando tenemos un cuadro de diálogo no modal, usar la propiedad alwaysOnTop, para que siempre aparezca delante de la ventana.

222. Ahora se estudiará el concepto de cuadro de diálogo modal.

• Un cuadro de diálogo modal es aquel que no permite que se active otra ventana hasta que este no se haya cerrado.

223. Para convertir nuestro cuadro de diálogo en modal, será necesario que lo selecciones en el inspector y busques la propiedad modal. Debes activar esta propiedad.

224. Ahora ejecuta el programa comprueba lo siguiente:

a. Haz que se visualice el cuadro de diálogo de configuración.

b. A continuación intenta activar la ventana haciendo clic sobre ella. Verás como no es posible activarla. Es más, intenta escribir en sus cuadros de texto. No será posible hacerlo. (Incluso observarás un parpadeo en el cuadro de diálogo avisándote de ello). Esto es debido a que ahora nuestro cuadro de diálogo es modal.

Page 197: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

197

c. Solo cuando pulses, Aceptar, o Cancelar, o cierres el cuadro de diálogo, podrás seguir trabajando con tu ventana.

CONCLUSIÓN

Aunque intentes activar la

ventana o escribir en ella, no

podrás, ya que el cuadro de

diálogo es modal.

Incluso verás un parpadeo en

el cuadro de diálogo cuando

intentas activar la otra

ventana.

Se podría decir que un cuadro

de diálogo modal es un

acaparador, y que no te deja

usar otro elemento hasta que

no acabes con él.

Page 198: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

198

Los Cuadros de Diálogo son ventanas simplificadas que muestran distintas

opciones al usuario.

Los objetos JDialog son los que permiten la creación y uso de cuadros de diálogo

en un proyecto java.

Para visualizar un JDialog será necesario llamar a su método setVisible. También

son interesantes los métodos setSize para asignarles un tamaño y setLocation para

situar el cuadro de diálogo en la pantalla.

Para cerrar un JDialog será necesario invocar a su método dispose.

Existen dos tipos de cuadros de diálogo: los modales y no modales.

Los cuadros de diálogo modales no permiten que se active otra ventana hasta que

el cuadro de diálogo no se haya cerrado.

Los cuadros de diálogo no modales permiten trabajar con otra ventana a pesar de

que el propio cuadro de diálogo no haya sido cerrado.

Page 199: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

199

EJERCICIO GUIADO. JAVA: DISEÑO DE FORMULARIOS DESDE CÓDIGO

La Ventana de Diseño

La ventana de diseño es una gran herramienta que nos permite diseñar formularios de

forma relativamente sencilla. Simplemente tenemos que añadir los componentes del

formulario: botones, etiquetas, cuadros de textos, etc, y cambiar sus propiedades según

nos interese.

Todo esto tiene un código asociado que se genera de forma automática, y del que no nos

hemos preocupado hasta el momento.

Por ejemplo, cada vez que añades un botón o una etiqueta, se generan automáticamente

las instrucciones de código que permiten crear dicho botón o dicha etiqueta. También se

genera el código que permite cambiar el texto del botón, 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 añade en su ventana un botón (JButton), una etiqueta (JLabel) y un cuadro de texto (JTextField).

2. El nombre del botón será “btnBoton”, el de la etiqueta “etiEtiqueta” y el del cuadro de texto “txtCuadroTexto”.

3. A continuación asigna un texto a cada elemento. La ventana final podría tener un aspecto como el que sigue:

Page 200: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

200

4. Todas estas operaciones que has realizado tienen asociado unas instrucciones de código que se han generado automáticamente. Para estudiar estas instrucciones, activa el botón Origen en la parte superior de la pantalla:

5. En el código, observarás una línea llamada Código Generado. Esta línea está señalada en color azul (al igual que todas las instrucciones generadas automáticamente) Observarás que tiene un + en la parte izquierda. Si haces clic sobre el signo + aparecerá el código generado automáticamente:

Page 201: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

201

6. El código generado (señalado 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 código generado.

Aquí se crea el botón,

la etiqueta y el cuadro

de texto…

Page 202: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

202

En esta explicación guiada, se diseñará el formulario entero directamente desde código,

sin usar la ventana de diseño. De esta forma, se podrá entender mejor la generación de

código del NetBeans y se tendrá más control sobre los componentes.

Ejercicio guiado 2

A. CREACIÓN DEL PROYECTO

Aquí se asigna el texto

a cada elemento…

ETC…

Page 203: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

203

1. Crear un nuevo proyecto con las siguientes características: 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 código, pulsando el botón Origen. No usaremos la ventana de diseño en este proyecto.

B. ESTRUCTURA DEL CÓDIGO (estructura de una clase)

3. Analizaremos el código del programa ahora. Empezaremos por arriba:

Nombre del proyecto.

Nombre del paquete.

En la parte superior del código verás un

comentario.

En este comentario aparece el nombre del fichero

que contiene el código, que como puedes observar

tiene el mismo que el del JFrame.

Page 204: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

204

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

Observarás también una instrucción que indica que

este fichero (ventanaprincipal.java) pertenece al

paquete ventanas.

También verás 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.

Page 205: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

205

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

public class nombredelaclase {

…programación de la clase…

}

6. Esto lo puedes observar claramente en el código de tu proyecto:

Page 206: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

206

7. Dentro de la clase, tenemos una serie de funciones y procedimientos llamados MÉTODOS. Es en los métodos donde se programan los eventos que pueden suceder sobre el formulario.

8. Hay un método especial muy importante denominado CONSTRUCTOR. Dentro de este método se programa el diseño de la ventana y las características iniciales de la ventana.

Programación

de la clase

Page 207: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

207

El constructor se puede distinguir fácilmente porque tiene el mismo nombre que la

clase. En nuestro ejemplo, ventanaprincipal.

Observarás que el constructor contiene una llamada a un método llamado

initComponents. El método initComponents define características iniciales de la

ventana, y es código generado automáticamente. Si quieres verlo, solo tienes que

desplegar la parte de Código Generado:

El método initComponents al que hace referencia el constructor es un

método generado automáticamente, y no puede ser modificado.

Puedes verlo dentro de la sección de Código Generado.

Clic aquí

para

ocultar el

código

generado

Page 208: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

208

El contenido del método initComponents no resulta interesante para el ejercicio

que estamos realizando, así que puedes ocultar de nuevo el Código Generado,

haciendo clic en el símbolo menos -

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

La tarea que desempeña este método es la de generar la ventana principal y

mostrarla en pantalla.

El método main, es similar a la función main del lenguaje C. En el caso del java, el

NetBeans genera automáticamente el método main, de forma que no tendremos

que hacer cambios en él.

C. DISEÑO DE LA VENTANA DESDE CÓDIGO

Vamos ahora a diseñar la ventana de nuestro programa (sin usar la ventana de diseño,

solo a partir de código). Al final de esta explicación, la ventana del proyecto tendrá el

siguiente aspecto:

Page 209: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

209

Para conseguir esto, sigue los siguientes pasos:

10. Para realizar el diseño de la ventana, crearemos un método propio al que llamaremos por ejemplo CreacionVentana. Un buen sitio para colocar este método puede ser debajo del constructor:

11. Lo primero que se va a hacer es definir características propias de la ventana, como por ejemplo su título, tamaño, etc. Recuerda que la forma de hacer referencia a la propia ventana es a través de la palabra reservada this.

Así pues, programa lo siguiente dentro del método CreacionVentana:

El método donde

diseñaremos nuestra

ventana…

Page 210: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

210

Este código hace lo siguiente:

- Usa el método setTitle de la ventana para definir el texto de la barra de título. - Usa el método setSize de la ventana para definir un tamaño de 500x300. - Usa el método setLocation de la ventana para definir la posición de la ventana

en la posición (100,100) de la pantalla.

Con setTitle cambias

la barra de título… Con setLocation

decides la posición de

la ventana…

Con setSize defines el

ancho y alto de la

ventana…

Page 211: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

211

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

13. Ya puedes ejecutar el programa. En el momento en que se ejecuta el programa, el constructor llama al método CreacionVentana y se definen las características programadas.

14. Ahora vamos a empezar a añadir componentes a la ventana. Concretamente, empezaremos creando la etiqueta que contiene el texto “Número 1:” y luego definiremos algunas características propias para finalmente situarla en la ventana.

Page 212: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

212

Al comienzo de la clase, después del public class, donde se suelen definir las

variables globales, añade el siguiente código:

Este código declara una variable de tipo JLabel (etiqueta) y le da el nombre

etiNum1.

15. Al escribir este código, aparecerá un error en la línea, ya que será necesario importar la librería donde se encuentra el tipo de objeto JLabel. Podrás usar la bombilla del NetBeans para agregar el import correspondiente automáticamente.

16. Los imports aparecerán en la parte superior del código. Puedes observarlo:

17. Ahora agrega este código a tu método CreacionVentana:

Importación de la librería para el

objeto JLabel, que define las

etiquetas.

(Agregada automáticamente al pulsar

Page 213: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

213

18. La explicación del código es la siguiente:

- La primera línea 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 “Número 1:”. Esto lo hacemos con el típico método setText:

Page 214: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

214

etiNum1.setText(“Número 1: “);

- Hay que definir la posición que tendrá el objeto y el tamaño. Para ello, se usará el método setBounds. Este método recibe la posición (x, y) del objeto y el ancho y el alto. En el ejemplo, la etiqueta está situada en la posición (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 método add del panel de contenidos. Recuerda que para obtener este panel se usa el método getContentPane:

this.getContentPane().add(etiNum1);

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

20. Hemos añadido una etiqueta. Ahora añadiremos la siguiente. Para ello, primero tienes que declarar la etiqueta en la zona de las variables globales:

21. Luego, en el método ConstruirVentana, añadiremos el siguiente código:

Page 215: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

215

22. Este código es prácticamente igual al anterior. En él se constuye la etiqueta declarada antes con el nombre etiNum2. Luego se le asigna el texto “Número 2:”, luego se usa el método setBounds para situarla en la posición (10, 60) y asignarle un ancho de 100 y un alto de 20. Finalmente se añade la etiqueta al panel de contenidos de la ventana.

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

Page 216: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

216

24. Sigamos añadiendo elementos. Ahora añadiremos un cuadro de texto llamado txtNum1. Primero declara la variable del cuadro de diálogo en la zona de variables globales:

Tendrás que agregar el import correspondiente para el tipo de objeto JTextField.

25. Luego añade el siguiente código en el método CreacionVentana:

26. Este código realiza lo siguiente:

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

- Esta línea se subrayará en rojo ya que será necesario añadir el import para la librería de los JTextField.

- La siguiente línea introduce la cadena “0” dentro del cuadro de texto.

- La siguiente línea asigna la posición y el tamaño a través del método setBounds.

Page 217: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

217

- Y finalmente, la última línea añade el cuadro de texto al panel de contenidos de la ventana.

27. Ejecuta el programa y comprueba el funcionamiento de este código.

28. Ahora se añadirá un nuevo cuadro de texto llamado txtNum2. El código es similar. Declara la variable global:

29. Y ahora añade el código que construye el objeto en el método ConstruirVentana. Este código es similar al del cuadro de texto anterior. Solo cambia el nombre del objeto y la posición donde se colocará:

Page 218: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

218

30. Ejecuta el programa y comprueba como va el diseño 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 añadir el import correspondiente a la clase JButton a través de la bombilla). El botón se llamará btnSumar:

32. Y a continuación construiremos y le daremos forma al botón, añadiendo el siguiente código en el método ConstruirVentana:

Page 219: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

219

33. La explicación del código anterior es similar a los anteriores:

- La primera línea construye el botón btnSumar. - A continuación se asigna el texto “Sumar” al botón. - Luego se asigna la posición y el tamaño del botón con el método setBounds. - Finalmente se añade el botón al panel de contenido de la ventana.

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

35. Ahora se añadirá otro botón llamado btnRestar. Declara la variable JButton:

36. Tienes que escribir el siguiente código:

Page 220: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

220

37. El código es prácticamente igual que el del primer botón. Solo cambia el nombre del botón, el texto y la posición y tamaño del botón.

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

Page 221: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

221

CONCLUSIÓN

La ventana de diseño de NetBeans es una herramienta que nos permite diseñar las

ventanas sin tener que programar código.

Es posible prescindir de la ventana de diseño y realizar todo el diseño de la ventana

programando.

El diseño 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 métodos del objeto para trabajar con él.

Page 222: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

222

EJERCICIO GUIADO. JAVA: EVENTOS DESDE CÓDIGO

Eventos desde código

La ventana de diseño de NetBeans nos permite crear cada componente, colocarlo en la

ventana y acceder a los eventos que necesitemos fácilmente para programar en ellos las

acciones que se tengan que realizar.

Sin embargo, si el diseño de la ventana se ha realizado directamente desde código, será

necesario crear también desde código 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 pulsación de un botón btnSumar.

La pulsación de un botón es un evento actionPerformed como ya se sabe.

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 botón btnSumar

Page 223: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

223

Programación de eventos

La programación 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 programación 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 patrón.

Para simplificar el estudio de la programación de eventos, nos limitaremos a los eventos

más usados, los cuales pueden clasificarse en los siguientes grupos:

- Eventos de Acción:

o actionPerformed § Activar un componente (pulsación de botón, 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 Ratón:

Page 224: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

224

o mousePressed § Se pulsó un botón del ratón.

o mouseReleased § Se soltó un botón del ratón.

o mousePressed § Se pulsó y soltó un botón del ratón.

o mouseEntered § El ratón entró en la superficie del control.

o mouseExited § El ratón salió de la superficie del control.

- Eventos de Ventana:

o windowOpened § Se abrió la ventana

o windowClosing § Se cerró la ventana

o windowActivated § Se activó la ventana

o windowDeactivated § Se desactivó la ventana

En esta explicación guiada nos limitaremos a estudiar los eventos de acción.

Page 225: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

225

PROGRAMACIÓN DE EVENTOS DE ACCIÓN

Un evento de acción hace referencia a la activación de un objeto (un botón, un cuadro de

texto, un combo, etc...)

Solo existe un tipo de evento de acción, llamado actionPerformed.

El evento actionPerformed pertenece a un objeto oyente llamado ActionListener.

Eventos de Acción

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);

}

});

Page 226: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

226

Para entender la sintaxis de la programación de un evento de acción, supongamos el

siguiente ejemplo:

Se quiere programar el evento de un botón llamado btnSumar desde código. He aquí el

código para crear el evento:

btnSumar.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

btnSumarActionPerformed(evt);

}

});

Una explicación del código:

btnSumar.addActionListener(new ActionListener() {

El método addActionListener

permite asignar el oyente al

botón.

El evento actionPerformed

pertenece a un objeto oyente

llamado ActionListener. El componente cuyo evento

se quiere programar. En

este ejemplo, el botón

btnSumar

Page 227: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

227

public void actionPerformed(ActionEvent evt) {

btnSumarActionPerformed(evt);

}

});

El código anterior permite crear y asignar el evento actionPerformed al botón 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 botón 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 función donde se programará el evento.

Hay que tener en cuenta que en el código expuesto antes participan nuevas clases como

son ActionEvent y ActionListener, y se tendrán que agregar los import correspondientes.

EJERCICIO GUIADO

El evento actionPerformed, es en

realidad un procedimiento, que tiene

como parámetro un objeto del tipo

ActionEvent al que llamaremos evt por

convención.

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”

Page 228: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

228

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 código la ventana de dicho proyecto. Esta ventana tiene el siguiente aspecto (Se indica también el nombre de los distintos componentes):

3. El objetivo del ejercicio es programar la pulsación del botón btnSumar para que aparezca un JOptionPane con la suma calculada. Luego haremos lo mismo con el botón btnRestar. Todo esto se hará desde código.

4. Para recordar, he aquí el código programado hasta ahora. Tenemos una llamada desde el constructor a un método CreacionVentana donde diseñamos cada uno de los elementos de la ventana:

txtNum1 y txtNum2

son los cuadros de

texto.

btnSumar es el

botón Sumar btnRestar es el

botón Restar

En el constructor hacemos una

llamada a nuestro método

CreacionVentana

Page 229: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

229

/** 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("Número 1:");

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

this.getContentPane().add(etiNum1);

etiNum2 = new JLabel();

etiNum2.setText("Número 2:");

etiNum2.setBounds(10,60,100,20);

this.getContentPane().add(etiNum2);

txtNum1 = new JTextField();

txtNum1.setText("0");

txtNum1.setBounds(110,10,100,20);

this.getContentPane().add(txtNum1);

Programamos algunos detalles

de la ventana principal…

Creamos la etiqueta “Número 1”…

Creamos la etiqueta “Número 2”…

Creamos el primer cuadro de texto…

Page 230: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

230

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 botón btnSumar. Esto lo haremos al final del método CreacionVentana, El código que debe añadir para el evento actionPerformed del botón btnSumar es el siguiente:

btnSumar.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

btnSumarActionPerformed(evt);

}

});

Creamos el segundo…

Creamos el botón Sumar…

Creamos el botón Restar…

Page 231: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

231

(Recuerda que el código es siempre igual, solo hay que indicar el nombre del

botón y el nombre del procedimiento al que se llama)

6. Será necesario añadir un import para el objeto oyente ActionListener y para la clase ActionEvent.

7. Ahora que se ha definido un evento actionPerformed para el botón btnSumar, será necesario programarlo. Esto se hace creando el procedimiento al que llama el código del actionPerformed. A este procedimiento le hemos dado de nombre btnSumarActionPerformed.

Así pues, añade el siguiente procedimiento a la clase. (No te vayas a equivocar, el

siguiente código está fuera del método CreacionVentana)

Este es el final del

método

CreacionVentana

Hay que

programar el

método al que

llama el evento…

Este es el código

que tienes que

añadir

Page 232: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

232

8. Es precisamente en este nuevo procedimiento que hemos creado donde se programa el evento actionPerformed del botón btnSumar. Lo que se pretende que haga el programa es que aparezca un JOptionPane con la suma de los números introducidos. Para ello, añade el siguiente código:

9. Bien, hemos programado la pulsación del botón Sumar. Hemos seguido dos pasos:

a. Primero hemos creado el evento actionPerformed y se lo hemos asignado al botón. Esto lo hemos hecho dentro del método CreacionVentana. Este

Programa el

código de lo que

tiene que hacer el

evento.

Page 233: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

233

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 código correspondiente a la pulsación del botón.

Ejecuta el programa y comprueba el funcionamiento del botón Sumar.

10. Ahora programaremos el botón btnRestar. Primero se tendrá que definir el evento actionPerformed y asignárselo al botón. Esto se hace añadiendo el código de creación del evento al final del método CreacionVentana.

btnRestar.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

btnRestarActionPerformed(evt);

}

});

(Observa que es idéntico al código de asignación del evento del botón btnSumar,

solo cambia el nombre del botón 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 botón Restar se resten los números introducidos.

Page 234: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

234

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 botón Restar.

13. Resumiendo una vez más. Para programar un evento sobre un componente, primero hay que enlazar el oyente del evento con el componente, y luego programar el método al que llama el evento. Observa el código que hemos programado:

Asignación de un actionPerformed

al botón btnSumar.

Page 235: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

235

Asignación de un actionPerformed

al botón btnRestar.

Programación del método

btnSumarActionPerformed

Programación del método

btnRestarActionPerformed

Page 236: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

236

CONCLUSIÓN

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 código:

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 asignación

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.

Page 237: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

237

EJERCICIO GUIADO. JAVA: EVENTOS DESDE CÓDIGO. EVENTOS DE RATÓN

Eventos desde código

Se estudió en la hoja de teoría anterior la forma de programar eventos desde código.

Concretamente se estudió como programar eventos de acción. En esta hoja se estudiará

como programar eventos de ratón.

Los eventos de ratón son los siguientes:

- mouseEntered o Indica que el ratón entró en la superficie del elemento (etiqueta, botón, etc)

- mouseExited o Indica que el ratón salió de la superficie del elemento (etiqueta, botón, etc)

- mousePressed o Indica que un botón del ratón ha sido presionado sobre el elemento.

- mouseReleased o Indica que un botón del ratón ha sido soltado sobre el elemento.

- mouseClicked o Indica que se ha pulsado/soltado un botón del ratón.

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 ratón pertenecen a un objeto

“adaptador” llamado MouseAdapter.

Cada uno de los eventos se programará dentro del adaptador MouseAdapter. Cada

evento es en realidad un procedimiento que recibe un parámetro con información sobre el

evento. Este parámetro, en el caso de los eventos del ratón, 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.

Page 238: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

238

Todo esto resulta complicado al principio, pero verás 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 parámetro que recibe cada evento.

Page 239: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

239

Como enlazar eventos de ratón con un componente

Supongamos que tenemos un componente (botón, etiqueta, etc...) llamado XXX.

Si queremos asociarle eventos de ratón, tendremos que añadir el siguiente código 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);

}

Page 240: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

240

});

Veamos este mismo código 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);

}

public void mouseClicked(MouseEvent evt) {

Los eventos de ratón

pertenecen al adaptador

llamado MouseAdapter

Para asignar el adaptador al elemento

XXX se usa el método addMouseListener

Estos son los eventos de

ratón que pertenecen al

adaptador MouseAdapter.

En realidad no hay que

ponerlos todos, solo hay

Page 241: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

241

XXXMouseClicked(evt);

}

});

Cada evento recibe como parámetro un

objeto del tipo MouseEvent al que por

convención se le suele llamar evt.

Este objeto suele contener información

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.

Es luego en estos procedimientos donde

Page 242: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

242

EJERCICIO GUIADO

14. Crea un nuevo proyecto.

15. Accede al código 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 diseñar la ventana. Introduce el siguiente código dentro del procedimiento CreacionVentana:

La llamada...

Y el procedimiento.

Page 243: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

243

19. Ejecuta ya el programa para observar el resultado de nuestro diseño. El aspecto debe ser el siguiente:

Detalles de la ventana

Se diseña la primera

etiqueta

Se diseña la segunda

etiqueta

Page 244: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

244

20. El objetivo del programa es simple. Queremos que al entrar el ratón dentro de la superficie de la etiqueta roja, aparezca un mensaje en la otra etiqueta indicándolo. También queremos que aparezca un mensaje al salir el ratón de la etiqueta. Y también al pulsar un botón del ratón sobre la etiqueta.

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 método CreacionVentana lo siguiente:

Page 245: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

245

23. Observa el código:

a. Se añade un MouseAdapter al objeto etiZona.

b. El MouseAdapter que se añade solo contiene los tres eventos que necesitamos: mouseEntered, mouseExited y mousePressed.

c. Será necesario añadir imports para las clases MouseAdapter y MouseEvent.

d. Es normal que las llamadas a los procedimientos de cada evento den error ya que todavía no han sido programadas.

24. Ahora se programará cada procedimiento que es llamado desde cada evento. Recuerda que esto debe hacerse fuera del método CreaciónVentana. Aquí tienes lo que debes programar:

(Llave del método

CreacionVentana)

Page 246: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

246

25. Ahora ya puedes ejecutar el programa y comprobar lo que sucede cuando interactúas con el ratón sobre la etiqueta de color rojo.

26. Vamos a añadir una pequeña mejora que nos servirá para estudiar ese objeto llamado evt del tipo MouseEvent que llevan todos los eventos de ratón como parámetro.

Se dijo antes que este parámetro contiene información sobre la acción del ratón.

Por ejemplo, nos puede servir para saber cuantas veces se pulsó el ratón, con qué

botón, etc. Aprovecharemos este parámetro para indicar qué botón del ratón es el

que se ha pulsado sobre la etiqueta.

Cambia el procedimiento etiZonaMousePressed y déjalo de la siguiente forma:

Debes

programar

este código

Page 247: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

247

27. En el código anterior aprovechamos los métodos que tiene el objeto MouseEvent para averiguar que botón se ha pulsado. Usamos el método getButton que nos dice el botón pulsado. Aprovechamos las constantes de la clase MouseEvent para saber si se pulsó el botón izquierdo, central o derecho.

28. Ejecuta el programa y comprueba el funcionamiento.

CONCLUSIÓN

Hay grupos de eventos que pertenecen a un mismo oyente o adaptador. Por

ejemplo, los eventos de ratón pertenecen al adaptador llamado MouseAdapter.

Si se quiere asignar eventos de ratón a un componente XXX, hay que usar el

siguiente código:

XXX.addMouseListener(new MouseAdapter() {

public void mouseEntered(MouseEvent evt) {

XXXMouseEvent(evt);

Page 248: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

248

}

... otros eventos de ratón...

});

Ten en cuenta que solo añades al adaptador aquellos eventos que necesites.

Cada evento de ratón lleva como parámetro un objeto evt del tipo MouseEvent que

contiene información sobre el evento: qué botón del ratón se pulsó, cuantas veces,

etc.

Page 249: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

249

EJERCICIO GUIADO. JAVA: EVENTOS DESDE CÓDIGO. IDEAS GENERALES

Eventos desde código. Consideraciones Generales

Se finalizará el estudio de los eventos desde código, planteando de forma general el

código 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 parámetro asociado con información sobre el evento.

- Cada evento realiza una llamada a un procedimiento y es en este procedimiento donde se programa la respuesta al evento.

La sintaxis general de programación de eventos es la siguiente:

Componente.MetodoParaAñadirOyente(new TipoOyente() {

public void evento1(TipoEvento evt) {

Page 250: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

250

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 método usado para asignar el oyente al componente. - El nombre del evento. - El tipo de evento para el parámetro.

Page 251: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

251

Ejemplo 1. Eventos del Ratón

Los eventos de ratón son: mouseEntered, mouseExited, mousePressed, mouseReleased,

mouseClicked.

Pertenecen al adaptador MouseAdapter.

El adaptador se asigna al componente con el método addMouseListener.

Los métodos llevan como parámetro un objeto del tipo MouseEvent.

Conociendo esto, si queremos programar los eventos del ratón 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) {

Page 252: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

252

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 pulsación 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.

El adaptador anterior se asigna a un componente a través del método addKeyListener.

Page 253: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

253

Los eventos de teclado llevan como parámetro un objeto del tipo KeyEvent.

Sabiendo lo anterior, si se quisieran programar los eventos de teclado de un cuadro de

texto llamado txtDato el código necesario sería 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 programación de eventos siempre se hace de la misma forma, solo tienes que conocer el adaptador/oyente, el método para asignar dicho adaptador/oyente, el nombre de los eventos, y el tipo de objeto que llevan como parámetro.

Page 254: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

254

Sabiendo estos datos, la programación 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 código, ¿cómo puedo saber cual es

su adaptador/oyente, el método para asignar dicho adaptador/oyente al componente, y el

tipo de datos del parámetro?

Para este caso, se aconseja crear un proyecto de prueba desde la ventana de diseño y

asignar el evento X que se quiere estudiar a un componente. Luego simplemente hay que

analizar el código generado por el NetBeans.

Page 255: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

255

--- NO HAY EJERCICIO GUIADO EN ESTA HOJA ---

CONCLUSIÓN

Para programar desde código 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 método para asignar el oyente/adaptador al componente sobre el que actúa el

evento.

* El tipo de datos de objeto recibido como parámetro por el evento.

Conociendo estos datos, la programación siempre se hace igual:

Componente.MetodoParaAñadirOyente(new NombreOyenteAdaptador() {

public void nombreEvento1(TipoDatoParametro evt) {

LlamadaAProcedimientoEvento1(evt);

}

Page 256: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

256

public void nombreEvento2(TipoDatoParametro evt) {

LlamadaAProcedimientoEvento2(evt);

}

});

Se puede aprender mucho sobre los eventos asociándolos desde diseño y luego

mirando en el código generado.

Page 257: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

257

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.

Declaración de un vector

Para declarar un vector se seguirá la siguiente sintaxis:

tipodatos nombrevector[];

- 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

declaración será la siguiente:

int v[];

Como puedes ver, en la declaración de un vector no se indica la dimensión, de éste, es

decir, el número de elementos que tiene. Esto se hace en la construcción del vector.

Page 258: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

258

Construcción 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 dimensión del vector (el número 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 construcción del vector, podemos usar una variable entera para

asignar el número de elementos que se quiera.

Por ejemplo, en el siguiente caso el número de elementos del vector v viene dado por la

variable num:

v = int[num];

Page 259: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

259

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 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 posición cuarta del

vector v.

Ejemplo 2:

for (i=0;i<10;i++) {

v[i]=0;

}

Este código recorre un vector de 10 elementos y almacena en dichos 10 elementos un 0.

Page 260: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

260

Longitud de un vector

Una forma rápida 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 número de elementos que tiene) sería:

v.length

El siguiente código rellena el vector v con ceros, da igual el número de elementos que

tenga:

for (i=0;i<v.length;i++) {

v[i]=0;

}

Page 261: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

261

Creación de un vector e inicialización con datos al mismo tiempo

Es posible crear un vector e introducir datos directamente en él al mismo tiempo. La forma

general de hacerlo sería la siguiente:

tipodatos nombrevector[] = {elemento1, elemento2, elemento3, …, elemento n};

Por ejemplo:

int v[] = {5, 2, 7, 6};

Este código crea un vector con cuatro números enteros: 5, 2, 7, 6.

Ejemplo 2:

String dias[] = {“Lunes”, “Martes”, “Miércoles”, “Jueves”, “Viernes”, “Sábado”,

“Domingo”};

Este código crea un vector que contiene 7 cadenas, correspondientes a los días de la

semana.

Page 262: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

262

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

función parecida, y que tengan que ser tratados en conjunto.

Por otro lado, nos ahorra mucho tiempo ya que no se tienen que diseñar estos elementos

en la misma ventana de diseño.

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 típico for

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 posición y tamaño

veti[i].setText(“Etiqueta “+i); //se asigna un texto

this.getContentPane().add(veti[i]); //se coloca en la ventana

Page 263: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

263

}

Realiza el siguiente ejercicio guiado para entender el ejemplo:

Page 264: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

264

Ejercicio guiado

225. Crea un nuevo proyecto en java.

226. Empecemos definiendo desde código las características de la ventana. Crearemos el método CreacionVentana, y lo llamaremos desde el constructor del proyecto:

227. Vamos a situar en la ventana 10 cuadros de verificación (JCheckBox). Para ello, usaremos un vector de 10 JCheckBox. Este vector se declarará en la zona de variables globales (será necesario añadir el típico import):

Page 265: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

265

228. La construcción de los vectores de componentes, se realiza en el mismo constructor (en nuestro caso en el método CreaciónVentana, que es llamado desde el constructor). Construiremos el vector de forma que contenga 10 JCheckBox:

Page 266: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

266

229. Se acaba de construir un vector con 10 cuadros de verificación. 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. (Añade el siguiente código dentro de CreacionVentana):

Page 267: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

267

230. Analiza este código que se acaba de añadir:

a. Observa como cada elemento del vector debe ser construido:

vcuadros[i] = new JCheckBox();

b. El texto que tendrá cada elemento será: “Opción 0”, “Opción 1”, etc…

vcuadros[i].setText(“Opción “+i);

c. Los cuadros de verificación se colocan uno debajo de otro. Estudia la línea siguiente y observa como varía la posición vertical de cada cuadro:

vcuadros[i].setBounds(10, 10+30*i, 100, 20);

231. Ejecuta el programa y observa el resultado:

Page 268: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

268

Page 269: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

269

Page 270: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

270

232. Mejoremos la presentación de los cuadros cambiando los rótulos de cada uno. Para ello, será necesario usar otro vector auxiliar que contenga los textos de cada uno de los cuadros. Modifica el código anterior de forma que quede así:

233. En este código 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, verás que cada cuadro tiene su texto correspondiente a un color.

Page 271: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

271

234. Ahora añade un botón con su evento actionPerformed. Añade en la zona de variables globales lo siguiente:

JButton btnAceptar;

Y luego, dentro de CreacionVentana, añade el siguiente código:

Page 272: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

272

235. 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 código anterior (la línea que da error):

Así pues, fuera de CreacionVentana, programa el siguiente procedimiento:

Page 273: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

273

236. En este código se puede observar como se usa un for para recorrer fácilmente el vector de cuadros y averiguar cuales de ellos está activado. Aumentamos un contador y lo demás es sencillo.

Si este programa se hubiera hecho desde diseño, el código para contar el número

de cuadros activados sería mucho más engorroso. Piénsalo.

237. Ejecuta el programa. Selecciona varios cuadros y pulsa el botón Aceptar. Observa el resultado:

Page 274: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

274

CONCLUSIÓN

Page 275: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

275

En Java, los vectores debe declararse y luego construirse. Es en la construcción

del vector cuando a este se le asigna un número 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 diseño.

Page 276: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

276

EJERCICIO GUIADO. JAVA: VECTORES Y EVENTOS

Asignación 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 rápidamente por código estos

componentes y trabajar sobre ellos sin tener que usar muchas líneas de código.

En esta hoja se verá como se pueden asignar eventos a los componentes de un vector.

Ejercicio guiado

238. Crea un nuevo proyecto en java.

239. Empecemos definiendo desde código las características de la ventana. Crearemos el método CreacionVentana, y lo llamaremos desde el constructor del proyecto:

Page 277: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

277

240. 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:

241. Dentro del procedimiento CreacionVentana construiremos el vector y construiremos cada uno de los botones que contiene, asignando las distintas características de cada uno. Debes añadir el siguiente código a CreacionVentana:

Page 278: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

278

242. En el código anterior se crea un vector de cadenas (String) con el texto de cada botón.

Luego se construye el vector de botones, asignándole 5 botones.

A continuación, usando un for, construimos cada botón del vector, le asignamos el

texto correspondiente, le asignamos su posición y su tamaño, y lo colocamos en el

panel de contenido de la ventana.

243. Ejecuta el programa para observar su aspecto hasta ahora:

Page 279: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

279

244. Ahora, interesaría asignar un evento actionPerformed a cada botón. Esto se hará aprovechando el que todos los botones pertenezcan a un vector, usando un bucle for. Añade el siguiente código al final de CreacionVentana:

Este código asigna a cada botón un evento actionPerformed que hace una llamada

a un procedimiento al que se le ha llamado botonesActionPerformed. (Esta

llamada da error porque aún no ha sido programado el procedimiento. Esto se

hará a continuación.)

Page 280: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

280

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:

245. 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 través 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, ¿cómo saber qué botón se ha pulsado?

Es aquí donde entra en funcionamiento el parámetro evt que suelen llevar todos

los eventos.

246. Modifica el procedimiento botonesActionPerformed de forma que quede así:

Page 281: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

281

Este código resulta muy interesante. El parámetro evt tiene siempre un método

llamado getSource que devuelve el componente de la ventana sobre el que ha

sucedido el evento. De esta manera obtenemos el botón que ha sido pulsado.

(Observa que es necesario hacer un cast) Aprovechamos esto para introducir el

botón en una variable auxiliar que hemos llamado botonPulsado.

Luego solo hay que usar la variable botonPulsado como un botón normal y

corriente. Por ejemplo, la usamos en el JOptionPane mostrando el texto que

contiene el botón pulsado con el método getText.

247. Ejecuta el programa y observa el resultado.

CONCLUSIÓN

Se pueden asignar eventos a los elementos de un vector a través 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 parámetro evt junto con el método 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:

Page 282: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

282

TipoComponente variable = (TipoComponente) evt.getSource();

La variable variable contendrá el componente activado.

Page 283: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

283

EJERCICIO GUIADO. JAVA: INTRODUCCIÓN A LA POO

Introducción a la Programación Orientada a Objetos

La programación orientada a objetos es una nueva forma de entender la creación de programas.

Esta filosofía de programación se basa en el concepto de objeto.

Objeto

Un objeto se define como un elemento que tiene unas propiedades y métodos.

Un objeto posee unas características (ancho, alto, color, etc…) A las características de un objeto

se les llama propiedades.

Un objeto es un elemento “inteligente”. A un objeto se le puede dar órdenes y él obedecerá. A

estas órdenes se les llama métodos. Con los métodos podemos cambiar las características del

objeto, pedirle información, 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.

Page 284: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

284

Como objeto que es, la etiqueta etiTexto tiene una serie de características, como por ejemplo: el

color de fondo, el tamaño, la posición 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 través de métodos.

A través de los métodos podemos por ejemplo cambiar las características del objeto. Por ejemplo,

se puede cambiar el tamaño y posición de la etiqueta usando el método setBounds:

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

Normalmente, los métodos que permiten cambiar las características del objeto son métodos cuyo

nombre empieza por set.

Los métodos también permiten pedirle al objeto que me de información. Por ejemplo, podríamos

usar el conocido método getText para recoger el texto que contenga la etiqueta y almacenarlo en

una variable:

String texto;

texto = etiTexto.getText();

Los métodos que le piden información al objeto suelen tener un nombre que empieza por get.

Los métodos también 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 método repaint:

etiTexto.repaint();

Page 285: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

285

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, características. Nuestro cuadro de texto txtCuadro tiene

características propias: un color de fondo, un ancho, un alto, una posición en la ventana, el estar

activado o no, el estar visible o no, etc…

A un objeto se le puede dar órdenes, llamadas métodos. Estas órdenes nos permiten cambiar las

características del objeto, pedirle información, o simplemente pedirle al objeto que haga algo.

Por ejemplo, podemos cambiar el color de fondo del cuadro de texto txtCuadro usando el método

llamado setBackground:

txtCuadro.setBackground(Color.RED);

Otros métodos 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

Page 286: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

286

setBounds - permite cambiar el tamaño y posición del objeto

setToolTipText - permite asociar un texto de ayuda al cuadro de texto

etc…

Un objeto nos da información sobre él. Para pedirle información a un objeto usaremos métodos del

tipo get. Por ejemplo, para pedirle al cuadro de texto el texto que contiene, usaremos el método

getText:

String cadena = txtCuadro.getText();

Otros métodos que le piden información 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…

También 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 través del método selectAll:

txtCuadro.selectAll();

Otros métodos que ordenan al cuadro de texto son:

repaint - le ordena al cuadro de texto que se vuelva a pintar

Page 287: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

287

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 declaración de un objeto es algo similar a la declaración 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;

Page 288: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

288

Por ejemplo, para declarar la etiqueta del ejemplo 1, se usaría el siguiente código:

JLabel etiTexto;

Para declarar, en cambio, el cuadro de texto del ejemplo 2, se usaría el siguiente código:

JTextField txtCuadro;

Construir un Objeto

En el momento de la “construcción” de un objeto, se le asignan a este una serie de propiedades

iniciales. Es decir, unas características 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 métodos del objeto.

Es necesario construir el objeto para poder usarlo. La construcción del objeto se hace a través del

siguiente código general:

nombreobjeto = new Clase();

Por ejemplo, para construir la etiqueta del ejemplo 1, se haría lo siguiente:

etiTexto = new JLabel();

Para construir el cuadro de texto del ejemplo 2, se haría lo siguiente:

Page 289: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

289

txtCuadro = new JTextField();

NOTA. En algunos casos, la sintaxis de la declaración y la construcción se une en una sola línea.

Por ejemplo, supongamos que queremos declarar la etiqueta etiTexto y construirla todo en una

línea, entonces se puede hacer lo siguiente:

JLabel etiTexto = new JLabel();

En general, para declarar y construir un objeto en una sola línea 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();

Page 290: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

290

JLabel etiResultado = new JLabel();

JLabel etiDato = new JLabel();

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 través de los distintos métodos

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 método 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:

- ¿Cuál es el nombre de la clase de los botones normales que usa en sus ventanas? - ¿Cómo declararía un botón llamado btnAceptar, y otro llamado btnCancelar? - ¿Cómo construiría dichos botones?

Page 291: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

291

- Indique algunos métodos para cambiar propiedades de dichos botones (métodos set) - Indique algunos métodos para pedirle información a dichos botones (métodos get) - Indique algún método para dar órdenes a dichos botones (algún método que no sea ni set

ni get)

Page 292: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

292

CONCLUSIÓN

Un Objeto es un elemento que tiene una serie de características llamadas

PROPIEDADES.

Por otro lado, al objeto se le pueden dar órdenes que cumplirá de inmediato. A

dichas órdenes se les denomina MÉTODOS.

Los métodos se pueden dividir básicamente en tres tipos:

Para cambiar las propiedades del objeto (Métodos set)

Para pedir información al objeto (Métodos get)

Para dar órdenes al objeto.

Todo objeto pertenece a una CLASE.

La CLASE nos permite declarar objetos y construirlos:

Declaración:

CLASE nombreobjeto;

Construcción:

Page 293: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

293

nombreobjeto = new CLASE();

Declaración y Construcción en una misma línea

CLASE nombreobjeto = new CLASE(),

En la construcción de un objeto se asignan unas propiedades (características) por

defecto al objeto que se construye, aunque luego, estas características pueden ser

cambiadas por el programador.

Page 294: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

294

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 verificación (JCheckBox), botones de opción

(JRadioButton), colores (Color), imágenes de icono (ImageIcon), modelos de lista

(DefaultListModel), etc, etc.

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 diseño:

Ancho, alto, color, alineación, etc.

Aunque también poseen métodos que nos permiten cambiar estas propiedades durante la

ejecución 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 tamaño y la

posición del objeto, etc.

Page 295: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

295

En cualquier momento le podemos pedir a un objeto que nos de información sobre sí mismo

usando los métodos 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 “pequeños robots” a los que se les puede dar órdenes, usando los métodos

que tienen disponible.

Por ejemplo, le podemos decir a un objeto que se pinte de nuevo usando el método

repaint, podemos ordenarle a un cuadro de texto que coja el cursor, con el método

requestFocus, etc.

Todos estos objetos, con sus propiedades y métodos, nos facilitan la creación de nuestros

programas. Pero a medida que nos vamos introduciendo en el mundo de la programación y nos

especializamos en un tipo de programa en concreto, puede ser necesaria la creación de objetos

propios, programados por nosotros mismos, de forma que puedan ser usados en nuestros futuros

programas.

Page 296: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

296

Objetos propios

A la hora de diseñar un objeto de creación propia, tendremos que pensar qué propiedades debe

tener dicho objeto, y métodos serán necesarios para poder trabajar con él. Dicho de otra forma,

debemos pensar en qué características 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, declarándolos y construyéndolos como si de

cualquier otro objeto se tratara.

A continuación se propondrá un caso práctico de creación de objetos propios, con el que

trabajaremos en las próximas hojas.

Lo que viene a continuación es un planteamiento teórico de diseño de una Clase de Objetos.

Page 297: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

297

CASO PRÁCTICO: 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 información. Para

facilitar el control de la información de cada sala programaremos una Clase de objeto a la que

llamaremos SalaCine.

La Clase SalaCine

La Clase SalaCine definirá características de una sala de cine, y permitirá crear objetos que

representen salas de cine. Cuando la Clase SalaCine esté programada, se podrán hacer cosas

como las que sigue:

Los Multicines Avenida tienen una sala central donde se proyectan normalmente los estrenos. Se

podría 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();

Page 298: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

298

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

podría crear un objeto llamado salaVO de la clase SalaCine de la siguiente forma:

SalaCine salaVO; //declaración

salaVO = new SalaCine(); //construcción

Propiedades de los objetos de la clase SalaCine

A la hora de decidir las propiedades de un objeto de creación propia, tenemos que preguntarnos,

¿qué información me interesa almacenar del objeto? Trasladando esta idea a nuestro caso

práctico, ¿qué información me interesaría tener de cada sala de cine?

Para este ejemplo supondremos que de cada sala de cine nos interesa tener conocimiento de las

siguientes características (propiedades):

- Aforo: define el número de butacas de la sala (un número entero). - Ocupadas: define el número de butacas ocupadas (un número entero). - Película: define la película que se está proyectando en el momento en la sala (una cadena

de texto) - Entrada: define el precio de la entrada (un número double)

Page 299: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

299

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 tamaño 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 características de un objeto SalaCine en el momento de construirse serán las

siguientes:

Aforo: 100

Ocupadas: 0

Película: “” (la cadena vacía)

Entrada: 5,00

Observa este código, en él construimos el objeto correspondiente a la sala central del multicine:

SalaCine central;

central = new SalaCine();

Page 300: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

300

En este momento (en el que el objeto central está recién construido) este objeto tiene asignado un

aforo de 100, el número de butacas ocupadas es 0, la película 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á según su conveniencia.

Métodos de los objetos SalaCine

Para comunicarnos con los objetos de la Clase SalaCine que construyamos, tendremos que

disponer de un conjunto de métodos que nos permitan asignar valores a las propiedades de los

objetos, recoger información de dichos objetos y que le den órdenes al objeto.

Será el programador el que decida qué métodos le interesará que posea los objetos de la Clase

que está programando.

Para nuestro caso particular, supondremos que los objetos de la Clase SalaCine deberán tener los

siguientes métodos:

Métodos de cambio de propiedades (Métodos 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 título de película a la sala de cine

setEntrada - fijará el precio de las entradas a la sala de cine

Page 301: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

301

Gracias a estos métodos podemos dar forma a un objeto SalaCine recién 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 película

“Metrópolis” y que la entrada para ver la película es de 3 euros. La sala está vacía de momento.

Para crear el objeto, se usaría el siguiente código:

//Se construye el objeto

SalaCine salaVO;

salaVO = new SalaCine();

//Se le asignan características

salaVO.setAforo(50); //aforo 50

salaVO.setPelicula(“Metrópolis”); //la película 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

Page 302: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

302

Película: “”

Entrada: 5,00

Gracias a los métodos disponibles hemos asignados estos nuevos valores:

Aforo: 50

Ocupadas: 0

Película: “Metrópolis”

Entrada: 3,00

Métodos para pedirle información al objeto (Métodos get)

Se programarán los siguientes métodos get en la clase SalaCine:

getAforo - devuelve el aforo que tiene el objeto

getOcupadas - devuelve el número de butacas ocupadas que tiene el objeto

getLibres - devuelve el número de butacas que tiene libres el objeto

getPorcentaje - devolverá el porcentaje de ocupación de la sala

getIngresos - devolverá los ingresos producidos por la sala (entradas vendidas por precio)

getPelicula - devolverá el título de la película que se está proyectando

getEntrada - devolverá el precio de la entrada asignado al objeto

Estos métodos nos permitirán obtener información de un objeto del tipo SalaCine. Por ejemplo,

supongamos que tenemos el objeto llamado central (correspondiente a la sala principal del

Page 303: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

303

multicine), para obtener la película que se está proyectando en dicha sala solo habría que usar

este código:

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();

Métodos para dar órdenes al objeto

Se programarán los siguientes métodos para dar órdenes a los objetos de la clase SalaCine.

vaciar

- Este método pondrá el número de plazas ocupadas a cero y le asignará a la película la cadena vacía.

entraUno

- Este método le dice al objeto que ha entrado una nueva persona en la sala. (Esto debe producir que el número de plazas ocupadas aumente en uno)

Page 304: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

304

RESUMEN SALACINE

He aquí un resumen de la Clase de objetos SalaCine, la cual se programará en la próxima hoja:

Clase de objetos: SalaCine

Propiedades de los objetos SalaCine:

Aforo - número entero (int)

Ocupadas - número entero (int)

Película - cadena (String)

Entrada - número decimal (double)

Valores por defecto de los objetos del tipo SalaCine:

Aforo: 100

Ocupadas: 0

Película: (cadena vacía)

Entrada: 5

Métodos de los objetos del tipo SalaCine:

Métodos de asignación de propiedades (set)

Page 305: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

305

setAforo - modifica la propiedad Aforo

setOcupadas - modifica la propiedad Ocupadas

setLibres - modifica la propiedad Ocupadas también

setPelicula - modifica la propiedad Película

setEntrada - modifica la propiedad Entrada

Métodos de petición de información (get)

getAforo - devuelve el valor de la propiedad Aforo

getOcupadas - devuelve el valor de la propiedad Ocupadas

getLibres - devuelve el número de butacas libres

getPorcentaje - devuelve el porcentaje de ocupación de la sala

getIngresos - devuelve los ingresos obtenidos por la venta de entradas

getPelicula - devuelve el valor de la propiedad Película

getEntrada - devuelve el valor de la propiedad Entrada

Métodos de orden

Vaciar - vacía la ocupación de la sala y borra la película

entraUno - le indica al objeto que ha entrado una persona más en la sala

Page 306: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

306

EJERCICIO PRÁCTICO

Supongamos que programamos una Clase de objetos llamada Rectangulo, la cual permitirá

construir objetos que representen a rectángulos.

1. ¿Cómo declararía y construiría 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é métodos de tipo set programaría para cambiar las propiedades de los objetos del tipo

Rectangulo?

3. Como ejemplo de los métodos anteriores, suponga que quiere asignar al objeto suelo una base de 30 y una altura de 50. ¿Qué código usaría?

4. Teniendo en cuenta que nos puede interesar conocer el área de un objeto Rectangulo y su perímetro, y teniendo en cuenta que los objetos Rectangulo tienen dos propiedades (Base y Altura), ¿qué cuatro métodos get serían interesantes de programar para los objetos del tipo Rectangulo?

5. Teniendo en cuenta los métodos del punto 4. Supongamos que quiero almacenar en una variable double llamada area el área del objeto suelo. ¿Qué código usaría? Y si quiero almacenar el perímetro del objeto suelo en una variable llamada peri?

Page 307: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

307

CONCLUSIÓN

Para crear un objeto propio, necesita tener claro lo siguiente:

Nombre de la Clase del objeto.

Propiedades que tendrán los objetos de dicha clase.

Valores iniciales que tendrán las propiedades cuando se construya cada

objeto.

Métodos que serán interesantes de programar:

Métodos de ajuste de propiedades (set)

Métodos de petición de información (get)

Métodos de orden

Una vez que se tenga claro lo anterior, se podrá empezar la programación de la

Clase de objetos.

Page 308: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

308

EJERCICIO GUIADO. JAVA: POO. PROGRAMACIÓN DE UNA CLASE

Programación 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 características que hemos decidido para la Clase SalaCine en la hoja anterior:

CLASE SALACINE

Nombre de la Clase: SalaCine

Propiedades de los objetos SalaCine:

Aforo - número entero (int)

Ocupadas - número entero (int)

Película - cadena (String)

Entrada - número decimal (double)

Valores por defecto de los objetos del tipo SalaCine:

Aforo: 100

Page 309: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

309

Ocupadas: 0

Película: (cadena vacía)

Entrada: 5

Métodos de los objetos del tipo SalaCine:

Métodos de asignación de propiedades (set)

setAforo - modifica la propiedad Aforo

setOcupadas - modifica la propiedad Ocupadas

setLibres - modifica la propiedad Ocupadas también

setPelicula - modifica la propiedad Película

setEntrada - modifica la propiedad Entrada

Métodos de petición de información (get)

getAforo - devuelve el valor de la propiedad Aforo

getOcupadas - devuelve el valor de la propiedad Ocupadas

getLibres - devuelve el número de butacas libres

getPorcentaje - devuelve el porcentaje de ocupación de la sala

getIngresos - devuelve los ingresos obtenidos por la venta de entradas

getPelicula - devuelve el valor de la propiedad Película

getEntrada - devuelve el valor de la propiedad Entrada

Métodos de orden

Page 310: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

310

Vaciar - vacía la ocupación de la sala y borra la película

entraUno - le indica al objeto que ha entrado una persona más en la sala

Page 311: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

311

PROGRAMACIÓN DE UNA CLASE

Fichero de la Clase

La programación 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 extensión 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 creación de la clase. De momento, solo veremos de forma teórica como

hay que programar la clase. (No tiene que introducir lo que viene a continuación en ningún sitio)

Estructura básica de la Clase

Dentro del fichero de la clase, comenzará la programación de esta de la siguiente forma:

public class SalaCine {

}

Page 312: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

312

La programación de una clase comienza siempre con una línea de código como la que sigue:

public class NombreDeLaClase {

}

Toda la programación 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 básicamente variables globales de ésta. Si introducimos las

propiedades de la clase SalaCine, esta nos quedaría así:

public class SalaCine {

int Aforo;

int Ocupadas;

String Película;

double Entrada;

}

Page 313: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

313

Constructor de la Clase

Cuando se planteó la clase SalaCine, se tuvo que decidir qué valores iniciales deberían 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 método (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 programación del constructor sigue la siguiente sintaxis:

public NombreDeLaClase() {

propiedad1 = valor;

propiedad2 = valor;

etc…

}

La clase SalaCine, añadiendo el Constructor, tendrá el siguiente aspecto:

public class SalaCine {

int Aforo;

int Ocupadas;

String Película;

double Entrada;

Page 314: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

314

//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 diseño de la clase que se hizo en la hoja anterior.

Métodos del tipo set

Todas las clases suelen contener métodos del tipo set. Recuerda que estos métodos permiten

asignar valores a las propiedades de la clase.

Debes tener en cuenta también que cuando se habla de método de una clase, en realidad se está

hablando de un procedimiento o función, que puede recibir como parámetro determinadas

variables y que puede devolver valores.

Los métodos del tipo set son básicamente procedimientos que reciben valores como parámetros

que introducimos en las propiedades. Estos métodos no devuelven nada, así que son void.

Se recomienda, que el parámetro del procedimiento se llame de forma distinta a la propiedad que

se asigna.

Constructor

Page 315: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

315

Veamos la programación del método setAforo, de la clase SalaCine:

public void setAforo(int afo) {

Aforo = afo;

}

Observa este método:

- Es void, es decir, no devuelve nada (el significado de la palabra public se verá más adelante)

- El método recibe como parámetro 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 método es asignar la variable pasada como parámetro a la propiedad.

La mayoría de los procedimientos set usados para introducir valores en las propiedades tienen la

misma forma. Aquí tienes la programación de los demás procedimientos set de la clase SalaCine.

//Método setOcupadas

public void setOcupadas(int ocu) {

Ocupadas = ocu;

}

Page 316: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

316

//Método setPelicula

public void setPelicula(String peli) {

Pelicula = peli;

}

//Método setEntrada

public void setEntrada(double entra) {

Entrada = entra;

}

Hay un método set de la clase SalaCine llamado setLibres cuya misión es asignar el número de

localidades libres del cine. Sin embargo la clase SalaCine no tiene una propiedad “Libres”. En

realidad, este método debe modificar el número de localidades ocupadas. Observa su

programación:

//Método setLibres

public void setLibres(int lib) {

int ocu;

ocu = Aforo – lib;

Ocupadas = ocu;

}

Al asignar un número de localidades ocupadas, estamos asignando indirectamente el número de

localidades libres. Como puedes observar en el método, lo que se hace es calcular el número de

localidades ocupadas a partir de las libres, y asignar este valor a la propiedad Ocupadas.

Page 317: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

317

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, añadiendo los métodos set, quedaría de la siguiente forma:

Page 318: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

318

public class SalaCine {

int Aforo;

int Ocupadas;

String Película;

double Entrada;

//Constructor

public SalaCine() {

Aforo = 100;

Ocupadas = 0;

Pelicula = “”;

Entrada = 5.0;

}

//Métodos set

//Método setAforo

public void setAforo(int afo) {

Aforo = afo;

}

//Método setOcupadas

public void setOcupadas(int ocu) {

Ocupadas = ocu;

Page 319: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

319

}

//Método setPelicula

public void setPelicula(String peli) {

Pelicula = peli;

}

//Método setEntrada

public void setEntrada(double entra) {

Entrada = entra;

}

//Método setLibres

public void setLibres(int lib) {

int ocu;

ocu = Aforo – lib;

Ocupadas = ocu;

}

}

Métodos Set

Page 320: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

320

Métodos del tipo get

Al igual que los métodos set, los métodos get son muy fáciles de programar ya que suelen tener

siempre la misma forma.

Estos métodos no suelen llevar parámetros y devuelven el valor de la propiedad correspondiente

usando la típica instrucción return usada tanto en las funciones. Por tanto, un método get nunca es

void. Siempre será del mismo tipo de datos que la propiedad que devuelve.

Veamos la programación del método getAforo:

//Método getAforo

public int getAforo() {

return Aforo;

}

Como puedes ver el método simplemente devuelve el valor de la propiedad Aforo. Como esta

propiedad es int, el método es int.

Los métodos que devuelven el resto de las propiedades son igual de sencillos de programar:

//Método getOcupadas

public int getOcupadas() {

return Ocupadas;

}

//Método getPelicula

Page 321: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

321

public String getPelicula() {

return Película;

}

//Método getEntrada

public double getEntrada() {

return Entrada;

}

Todos estos métodos son iguales. Solo tienes que fijarte en el tipo de datos de la propiedad que

devuelven.

Existen otros métodos get que devuelven cálculos realizados con las propiedades. Estos métodos

realizan algún cálculo y luego devuelven el resultado. Observa el siguiente método get:

//Método getLibres

public int getLibres() {

int lib;

lib = Aforo – Ocupadas;

return lib;

}

No existe una propiedad Libres, por lo que este valor debe ser calculado a partir del Aforo y el

número 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 métodos get que quedan por programar de la clase SalaCine son parecidos:

Page 322: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

322

//Método getPorcentaje

public double getPorcentaje() {

double por;

por = (double) Ocupadas / (double) Aforo * 100.0;

return por;

}

Este método calcula el porcentaje de ocupación de la sala (es un valor double)

//Método getIngresos

public double getIngresos() {

double ingre;

ingre = Ocupadas * Entrada;

return ingre;

}

Los ingresos se calculan multiplicando el número de entradas por lo que vale una entrada.

La clase SalaCine una vez introducidos los métodos get quedaría de la siguiente forma:

public class SalaCine {

int Aforo;

int Ocupadas;

Page 323: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

323

String Película;

double Entrada;

//Constructor

public SalaCine() {

Aforo = 100;

Ocupadas = 0;

Pelicula = “”;

Entrada = 5.0;

}

//Métodos set

//Método setAforo

public void setAforo(int afo) {

Aforo = afo;

}

//Método setOcupadas

public void setOcupadas(int ocu) {

Ocupadas = ocu;

}

//Método setPelicula

public void setPelicula(String peli) {

Page 324: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

324

Pelicula = peli;

}

//Método setEntrada

public void setEntrada(double entra) {

Entrada = entra;

}

//Método setLibres

public void setLibres(int lib) {

int ocu;

ocu = Aforo – lib;

Ocupadas = ocu;

}

//Métodos get

//Método getAforo

public int getAforo() {

return Aforo;

}

//Método getOcupadas

Métodos Get

Page 325: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

325

public int getOcupadas() {

return Ocupadas;

}

//Método getPelicula

public String getPelicula() {

return Película;

}

//Método getEntrada

public double getEntrada() {

return Entrada;

}

//Método getLibres

public int getLibres() {

int lib;

lib = Aforo – Ocupadas;

return lib;

}

//Método getPorcentaje

Métodos Get

Page 326: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

326

public double getPorcentaje() {

double por;

por = (double) Ocupadas / (double) Aforo * 100.0;

return por;

}

//Método getIngresos

public double getIngresos() {

double ingre;

ingre = Ocupadas * Entrada;

return ingre;

}

}

Métodos de orden

Para finalizar la programación de la clase SalaCine, se programarán los dos métodos de orden que

hemos indicado en el planteamiento de la clase. Estos métodos suelen realizar alguna tarea que

involucra a las propiedades de la clase, modificándola internamente. No suelen devolver ningún

valor, aunque pueden recibir parámetros.

Page 327: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

327

Veamos la programación del método Vaciar, cuyo objetivo es vaciar la sala y quitar la película en

proyección:

//Método Vaciar

public void Vaciar() {

Ocupadas = 0;

Película = “”;

}

Como se puede observar, es un método muy sencillo, ya que simplemente cambia algunas

propiedades de la clase.

El método entraUno es también muy sencillo de programar. Este método le indica al objeto que ha

entrado un nuevo espectador. Sabiendo esto, el objeto debe aumentar en uno el número de

localidades ocupadas:

//Método entraUno

public void entraUno() {

Ocupadas++;

}

Añadiendo estos dos últimos métodos, la programación de la clase SalaCine quedaría finalmente

como sigue:

public class SalaCine {

int Aforo;

int Ocupadas; Propiedades (variables globales)

Page 328: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

328

String Película;

double Entrada;

//Constructor

public SalaCine() {

Aforo = 100;

Ocupadas = 0;

Pelicula = “”;

Entrada = 5.0;

}

//Métodos set

//Método setAforo

public void setAforo(int afo) {

Aforo = afo;

}

//Método setOcupadas

public void setOcupadas(int ocu) {

Ocupadas = ocu;

}

//Método setPelicula

public void setPelicula(String peli) {

Constructor

Métodos Set

Page 329: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

329

Pelicula = peli;

}

//Método setEntrada

public void setEntrada(double entra) {

Entrada = entra;

}

//Método setLibres

public void setLibres(int lib) {

int ocu;

ocu = Aforo – lib;

Ocupadas = ocu;

}

Page 330: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

330

//Métodos get

//Método getAforo

public int getAforo() {

return Aforo;

}

//Método getOcupadas

public int getOcupadas() {

return Ocupadas;

}

//Método getPelicula

public String getPelicula() {

return Película;

}

//Método getEntrada

public double getEntrada() {

return Entrada;

}

//Método getLibres

public int getLibres() {

Métodos Get

Page 331: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

331

int lib;

lib = Aforo – Ocupadas;

return lib;

}

//Método getPorcentaje

public double getPorcentaje() {

double por;

por = (double) Ocupadas / (double) Aforo * 100.0;

return por;

}

//Método getIngresos

public double getIngresos() {

double ingre;

ingre = Ocupadas * Entrada;

return ingre;

}

//Métodos de orden

//Método Vaciar

public void Vaciar() {

Ocupadas = 0; Métodos de orden y otros

métodos.

Page 332: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

332

Película = “”;

}

//Método entraUno

public void entraUno() {

Ocupadas++;

}

}

Page 333: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

333

EJERCICIOS RECOMENDADOS

Supongamos que tenemos una clase llamada Rectangulo que nos permitirá generar objetos de tipo

rectángulo.

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

Métodos:

Métodos set:

Page 334: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

334

setBase – permite asignar un valor a la propiedad Base.

setAltura – permite asignar un valor a la propiedad Altura.

Métodos get:

getBase – devuelve el valor de la propiedad Base

getAltura – devuelve el valor de la propiedad Altura

getArea – devuelve el área del rectángulo

getPerímetro – devuelve el perímetro del rectángulo

Otros métodos:

Cuadrar – este método debe hacer que la Altura tenga el valor de la Base.

SE PIDE:

Realiza (en papel) la programación de la clase Rectangulo a partir del planteamiento anterior.

Page 335: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

335

Page 336: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

336

CONCLUSIÓN

La programación de una clase se realiza en un fichero que tiene el mismo nombre

que la clase y extensión .java

La estructura general de una clase es la siguiente:

public class NombreClase {

Propiedades (variables globales)

Constructor

Métodos set

Métodos get

Métodos de orden y otros métodos

}

Page 337: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

337

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 métodos set son void y reciben como parámetro un valor que se asigna a la

propiedad correspondiente.

Los métodos get no tienen parámetros y devuelven el valor de una propiedad de la

clase, aunque también pueden realizar cálculos y devolver sus resultados.

Los métodos de orden realizan alguna tarea específica y a veces modifican las

propiedades de la clase de alguna forma.

Page 338: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

338

EJERCICIO GUIADO. JAVA: POO. USAR CLASES PROPIAS EN UN PROYECTO

Aplicación de una Clase Propia

Una vez programada una Clase de creación propia, podremos usar esta en uno de nuestros

proyectos para crear objetos de dicha clase. En este ejercicio guiado veremos un ejemplo sobre

cómo usar de forma práctica la clase SalaCine en un proyecto java hecho con NetBeans.

EJERCICIO GUIADO

El Multicines Avenida nos encarga un programa para gestionar el funcionamiento de las dos

salas con las que cuenta este pequeño 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 película en esta sala es de 8.00 euros.

La segunda de las salas es la “sala de versiones originales”. En esta sala se proyectan

películas clásicas en versión original. Es una sala con un aforo más pequeño, concretamente,

de 80 localidades. El precio para ver una película 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 ocupación 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:

Page 339: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

339

2. Diseñar la ventana principal de forma que quede parecida a la siguiente. Usa la ventana de diseño para hacer el diseño del formulario. Los nombres de los componentes se indica a continuación.

Etiqueta:

Botones:

btnCentralNueva

btnCentralOcupacion

Page 340: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

340

3. Antes de empezar la programación de cada botón del programa, incluiremos en el proyecto la clase SalaCine, para así poder generar objetos del tipo “sala de cine” y aprovecharlos en nuestro programa.

Etiqueta:

Botones:

btnOriginalNueva

btnOriginalOcupacion

Botón

Panel:

Panel:

Page 341: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

341

4. Para añadir un fichero de clase propio en un proyecto Java con NetBeans, debes hacer clic con el botón derecho sobre el paquete donde quieras introducir la clase. En nuestro caso, haremos clic con el botón derecho sobre el paqueteprincipal, que es el único que tenemos:

5. Elegiremos la opción Nuevo / Clase Java…

Page 342: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

342

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 botón Terminar.

Page 343: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

343

7. Si vuelves a observar el esquema del proyecto, verás 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, podrás ver en el centro de la ventana de NetBeans el código de dicha clase. NetBeans añade cierto código a la clase para ahorrarnos trabajo, por eso ya tendremos programado la instrucción inicial de la clase junto con el comienzo del constructor y algunos comentarios que se añaden automáticamente:

El fichero de la clase SalaCine

Page 344: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

344

9. Ahora ya solo tendremos que completar la programación de la clase, añadiendo las propiedades, completando el constructor, y añadiendo los distintos métodos que programamos en la hoja anterior. Debes modificar el fichero SalaCine para que quede así:

Inicio de la clase

Preparación del constructor

Esta instrucción, generada por NetBeans,

indica que la clase SalaCine está

programada dentro del paqueteprincipal

Page 345: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

345

/*

* 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 */

Page 346: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

346

//Constructor

public SalaCine() {

Aforo = 100;

Ocupadas = 0;

Pelicula = "";

Entrada = 5.0;

}

//Métodos set

//Método setAforo

public void setAforo(int afo) {

Aforo = afo;

}

//Método setOcupadas

public void setOcupadas(int ocu) {

Ocupadas = ocu;

}

//Método setPelicula

public void setPelicula(String peli) {

Pelicula = peli;

}

Page 347: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

347

//Método setEntrada

public void setEntrada(double entra) {

Entrada = entra;

}

//Método setLibres

public void setLibres(int lib) {

int ocu;

ocu = Aforo - lib;

Ocupadas = ocu;

}

//Métodos get

//Método getAforo

public int getAforo() {

return Aforo;

}

//Método getOcupadas

public int getOcupadas() {

return Ocupadas;

}

Page 348: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

348

//Método getPelicula

public String getPelicula() {

return Pelicula;

}

//Método getEntrada

public double getEntrada() {

return Entrada;

}

//Método getLibres

public int getLibres() {

int lib;

lib = Aforo – Ocupadas;

return lib;

}

//Método getPorcentaje

public double getPorcentaje() {

double por;

por = (double) Ocupadas / (double) Aforo * 100.0;

return por;

}

//Método getIngresos

Page 349: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

349

public double getIngresos() {

double ingre;

ingre = Ocupadas * Entrada;

return ingre;

}

//Métodos de orden

//Método Vaciar

public void Vaciar() {

Ocupadas = 0;

Pelicula = "";

}

//Método 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 características en nuestro programa.

Page 350: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

350

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 diseño 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, sería 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 código de la ventana principal:

14. En la zona de variables globales de la ventana principal declararemos dos objetos del tipo SalaCine:

Page 351: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

351

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 características que tendrán 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, Ocupación 0, Película (cadena vacía) y Entrada 5.0

Creamos dos objetos

“sala de cine”

Construimos los

objetos.

Page 352: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

352

Será necesario modificar las características de ambas salas ya que no tienen ahora mismo

los valores correctos.

Se dijo al comenzar el ejercicio que la sala central tenía las siguientes características:

Aforo: 500 y un precio de entrada de 8 euros.

Por lo tanto, modificamos las características del objeto en el constructor de la siguiente

forma:

17. En el caso de la sala de versión original sucede lo mismo. Sus características son la siguientes:

Aforo: 80. Precio entrada: 6.0 euros.

Por tanto será necesario modificar el objeto vo para asignar estos valores:

Modificamos las

características del objeto

central (sala central)

Page 353: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

353

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 dándoles las características apropiadas. A partir de ahora, usaremos esos objetos en la programación de cada botón de la ventana.

19. Empezaremos programando el botón btnCentralCambiar. El objetivo de este botón es asignar a la sala central un título de película. Ese título se debe mostrar también en la etiqueta etiCentralPelicula:

20. Entra en el actionPerformed del botón btnCentralCambiar y programa lo siguiente:

Modificamos las

características del objeto

vo (sala versión original)

Cambia el título

de la película de

la sala central.

Page 354: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

354

El código de este botón hace lo siguiente:

- Le pide al usuario que introduzca un título para la película, usando un JOptionPane.showInputDialog. El título introducido se recoge en una variable de cadena llamada titulo.

- Luego se asigna dicho título a la sala central del multicines. Esta línea es interesante, ya que se usa el método setPelicula del objeto central para asignar el título de la película.

- Y finalmente se coloca el título en la etiqueta para que el usuario pueda verlo.

Page 355: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

355

21. Ejecuta el programa y observa el funcionamiento del botón.

22. Ahora se programará el botón btnCentralNueva:

Cada vez que un espectador compre una entrada para la sala central, el usuario del

programa deberá pulsar este botón. Internamente, el programa debe decirle al objeto

central que ha entrado una nueva persona en la sala. Esto se hace con el método

entraUno.

Así pues, programe el actionPerformed del botón 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 método entraUno.

Page 356: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

356

23. Programaremos ahora el botón btnCentralOcupacion. Este botón nos mostrará información sobre la sala central. Concretamente, este botón debe mostrar lo siguiente:

Película que se está proyectando.

Aforo total de la sala.

Butacas Ocupadas.

Butacas Libres.

Porcentaje de ocupación.

Para mostrar toda esta información, será necesario pedirle al objeto central (sala central)

que nos de información de la sala. Esto lo conseguiremos usando los distintos métodos get

del objeto.

Estudia atentamente la programación del botón btnCentralOcupacion:

Page 357: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

357

Observa el código:

- Primero se crea una variable de cadena llamada info (información)

- A continuación, se van concatenando textos a la variable de cadena. Recuerda que los \n permiten añadir saltos de línea.

- Observa como se va pidiendo información al objeto a través de métodos get y se va concatenando esta información 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 película a la sala central, luego pulsa varias veces el botón Nueva Venta y pulsa el botón %Ocupación para ver información sobre la sala:

Cambia el título

de la película

asignada a la sala

central

Pulsa este botón varias

veces, para simular la

venta de varias

entradas.

Pulsa aquí para ver

información actualizada

sobre la ocupación de la

Page 358: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

358

25. A continuación se programará el botón Vaciar de correspondiente a la sala central (btnCentralVaciar) Este botón debe situar la ocupación de la sala a cero y quitar la película asignada a la sala central.

Programa en el actionPerformed del botón lo siguiente:

Como puedes observar, el código es muy simple. Solo tengo que ordenar al objeto central

(sala central) que se vacíe. Debido a que ya no hay película asignada a la sala central, es

conveniente también borrar el contenido de la etiqueta que muestra el título de la película.

26. Programaremos ahora el botón Ingresos del panel de la sala central. Este botón nos debe dar información sobre los ingresos producidos por la sala en el momento en que se pulsa. Esta información la mostraremos en un JOptionPane. Programa el actionPerformed de este botón como sigue:

Page 359: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

359

Como puedes ver, la programación 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 ningún cálculo aquí. Solo

tenemos que pedirle al objeto que haga el cálculo 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 película a la sala central, vende algunas entradas, comprueba el porcentaje de ocupación y luego comprueba los ingresos. Vacía la sala central, y vuelve a comprobar el porcentaje de ocupación y los ingresos actuales.

Asigna una película y

vende varias

entradas…

…luego comprueba el

% de ocupación y los

ingresos… …prueba a vaciar la sala y

luego vuelve a comprobar

la ocupación y los

ingresos…

Page 360: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

360

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 programación es prácticamente igual, solo hay que actuar sobre el objeto vo en vez del objeto

central.

EJERCICIO

El botón IngresosTotales de la ventana, debería mostrar en un JOptionPane la suma de los

ingresos actuales de ambas salas. Programe dicho botón. Solo tiene que pedirle a cada objeto:

central y vo que le de sus ingresos, y sumar ambos.

Page 361: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

361

CONCLUSIÓN

Se pueden añadir 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 serán de creación propia. En el programa usaremos objetos derivados de

dichas clases.

Page 362: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

362

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 especialización 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 métodos que la Clase inicial, además de unas nuevas

propiedades y métodos que la Clase inicial no poseía. La nueva Clase creada puede incluso

redefinir métodos 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 métodos de la Clase Base más unas

propiedades y métodos añadidos.

CLASE BASE

CLASE

DERIVADA

Herencia

Page 363: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

363

La Herencia es una técnica muy útil que nos permite reutilizar código, es decir, que nos permite

usar de nuevo lo que ya teníamos programado añadiendo simplemente algunos cambios adecuar

el código al proyecto actual.

La Herencia se puede aplicar tanto a Clases Propias, como a Clases propias del lenguaje de

programación Java.

En esta explicación guiada, veremos un ejemplo de uso de la Herencia con clases propias del

lenguaje Java.

Page 364: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

364

EJERCICIO GUIADO

Planteamiento Inicial

“Botones Contadores”

Supongamos que en los proyectos cotidianos se plantea la necesidad de usar botones que

guarden el número de veces que son pulsados. Estos botones funcionarían exactamente igual que

los botones normales (JButton) y tendrían su mismo aspecto, pero sería interesante que además

tuvieran los siguientes métodos:

Método setPulsaciones.

Permitirá asignar un número de pulsaciones al botón.

btnContar.setPulsaciones(3);

//Se asignan 3 pulsaciones al botón btnContar

Método getPulsaciones.

Permitirá saber cuantas pulsaciones tiene un botón.

int p = btnContar.getPulsaciones(3);

//Se recoge el número de pulsaciones del botón btnContar

//en la variable p

Page 365: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

365

Método incrementa.

Permite incrementar en uno las pulsaciones que tiene un botón.

btnContar.incrementa();

//Incrementa en uno las pulsaciones del botón btnContar

Método decrementa.

Permite decrementar en uno las pulsaciones que tiene un botón

btnContar.decrementa();

//Decrementa en uno las pulsaciones del botón btnContar

Método reiniciar.

Permite colocar las pulsaciones de un botón a cero.

btnContar.reiniciar();

//Sitúa a cero las pulsaciones del botón btnContar

Método aumentar.

Permite aumentar en una determinada cantidad las pulsaciones del botón.

btnContar.aumentar(4);

//Aumenta en cuatro las pulsaciones del botón btnContar

Page 366: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

366

Método disminuir.

Permite disminuir en una determinada cantidad las pulsaciones del botón.

btnContar.disminuir(6);

//Disminuye en 6 las pulsaciones del botón btnContar

Los botones de este tipo tendrían una propiedad llamada pulsaciones de tipo entera que se

inicializaría a cero en el momento de construir el botón.

Desgraciadamente no existe un botón de este tipo en Java, así que no podemos acudir a la

ventana de diseño y añadir un botón como este.

Una posibilidad sería la de programar la clase correspondiente a un botón de este tipo desde cero,

pero esto es un trabajo tremendamente complejo.

La solución a este problema es la Herencia. Básicamente, lo que necesitamos es mejorar la Clase

JButton, la cual define botones normales y corrientes, de forma que estos botones admitan también

los métodos 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 características de los JButton y además le añadiremos los métodos mencionados

antes.

JButton

Herencia

Page 367: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

367

Gracias a la herencia, nuestra clase BotonContador poseerá todos los métodos de los JButton

(setText, getText, setForeground, setToolTipText, etc.) sin que tengamos que programar estos

métodos.

Por otro lado, añadiremos a la clase BotonContador nuestros propios métodos (setPulsaciones,

getPulsaciones, etc) y propiedades para que la clase esté preparada para nuestras necesidades.

Resumiendo: programaremos un botón propio, con características necesarias para nuestro trabajo,

aprovechando las características de un botón JButton.

Programación de la Clase BotonContador

Creación de la clase derivada

BotonContador

Page 368: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

368

La programación de la clase derivada BotonContador se hará en un fichero aparte, al igual que la

programación de las clases de creación propia.

Se comenzará definiendo el comienzo de la clase y añadiendo las llaves que limitan su contenido:

public class BotonContador extends JButton {

}

Observa el código añadido: extends JButton antes de la llave de apertura. Este es el código

que le permite indicar a Java que nuestra clase BotonContador derivará de la clase JButton.

Page 369: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

369

Creación 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 añadir nuestras propias

propiedades. En nuestro caso, necesitaremos una variable que contenga el número de pulsaciones

del botón en todo momento.

public class BotonContador extends JButton {

int pulsaciones;

}

Inicialización 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;

}

Page 370: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

370

}

Añadir métodos propios a la clase derivada

Se añadirán los nuevos métodos que queremos que la clase BotonContador posea. Estos son los

siguientes:

setPulsaciones - asigna un número de pulsaciones al botón.

getPulsaciones - devuelve el número de pulsaciones del botón.

incrementa - suma uno a las pulsaciones del botón

decrementa - resta uno a las pulsaciones del botón

reiniciar - pone a cero las pulsaciones del botón

aumentar - aumenta en una cantidad las pulsaciones del botón.

disminuir - disminuye en una cantidad las pulsaciones del botón.

Estos métodos trabajan con la propiedad pulsaciones. Una vez programados estos métodos, la

clase quedará de la siguiente forma (observa la programación de los distintos métodos para

entenderlos):

Page 371: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

371

public class BotonContador extends JButton {

//propiedades

int pulsaciones;

//constructor

public BotonContador() {

pulsaciones=0;

}

//métodos

//asigna una cantidad de pulsaciones

public void setPulsaciones(int p) {

pulsaciones=p;

}

//devuelve las pulsaciones del botón

public int getPulsaciones() {

return pulsaciones;

}

//incrementa en uno las pulsaciones

public void incrementa() {

pulsaciones++;

Page 372: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

372

}

//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;

}

}

Page 373: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

373

Como has podido observar, la creación de una clase heredada es exactamente igual que la

creación de una clase propia. La única diferencia es que hacemos que dicha clase herede de otra

clase ya existente, dándole más posibilidades sin necesidad de programar nada:

public class BotonContador extends JButton {

Page 374: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

374

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 continuación:

1. Crea un proyecto llamado Contadores, que tenga un paquete principal llamado paqueteprincipal y un JFrame llamado ventanaprincipal:

2. Añadiremos la Clase BotonContador. Para ello debes hacer clic con el botón derecho sobre el paqueteprincipal y activar la opción Nuevo à Clase Java. El nombre de la clase es BotonContador:

Page 375: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

375

3. Antes de empezar con el diseño 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 diseñado anteriormente usando herencia.

El fichero BotonContador.java debería quedar así:

Page 376: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

376

/*

* 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;

}

Page 377: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

377

//asigna una cantidad de pulsaciones

public void setPulsaciones(int p) {

pulsaciones=p;

}

//devuelve las pulsaciones del botón

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;

}

Page 378: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

378

//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 diseño de la ventana. Lo haremos desde código. Entra en el módulo ventanaprincipal.java y pasa a la zona de código:

5. En la zona de código programaremos el típico método CreacionVentana, llamado desde el constructor, donde se programará el diseño de la ventana:

Page 379: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

379

6. Nuestro programa tendrá dos botones del tipo BotonContador. Declara estos botones como variables globales de la clase:

7. En el método CreacionVentana definiremos características de la ventana y construiremos estos botones y los situaremos en la ventana:

Page 380: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

380

8. Como puedes ver, los botones contadores se construyen igual que los JButton, y, de hecho, tienen los mismos métodos que los JButton, ya que derivan de ellos. Así pues, un botón contador tiene un método setText, setBounds, etc…

9. Ejecuta el programa y observa el resultado. Verás que en la ventana aparecen los dos botones contadores, sin embargo, observarás 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.

Page 381: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

381

10. Ahora se añadirá un actionPerformed a cada botón contador, para controlar sus pulsaciones. Añade al final de CreacionVentana el siguiente código ya conocido, para la asignación de eventos actionPerformed a los botones:

11. Se tendrán que programar los procedimientos de respuesta a los eventos, que aquí se han llamado PulsacionBotonA y PulsacionBotonB. Prográmalos (fuera de CreacionVentana, claro está) de la siguiente forma:

Page 382: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

382

12. Cada vez que se pulse el botón A, debería aumentar su contador interno de pulsaciones en uno. Lo mismo debería pasar con el botón B. Esto se hace fácilmente usando el método incrementa, propio de los botones contadores:

13. Resumiendo, cada vez que se pulsa el botón A, se le da la orden al botón A de que se incremente su contador interno. Lo mismo sucede con el botón B.

14. Ahora programaremos dos botones más en la ventana, pero estos serán botones normales y los crearemos desde la ventana de diseño, para facilitar la tarea. Estos botones se llamarán btnVerPulsaciones y btnReiniciar.

Page 383: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

383

15. Cuando se pulse el botón Ver Pulsaciones debería aparecer un JOptionPane indicando cuantas veces se ha pulsado el botón A y cuantas el B. Esto se hará simplemente pidiendo a cada botón su número de pulsaciones almacenadas.

Accede al actionPerformed del botón Ver Pulsaciones y programa lo siguiente:

Page 384: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

384

En este botón le pedimos al Botón A que nos diga cuantas pulsaciones tiene anotadas (a

través del método getPulsaciones) y lo mismo hacemos con el Botón 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 botón A y el B. Verás que no sucede nada (aunque internamente cada uno de los botones está guardando el número de pulsaciones en su propiedad pulsaciones)

- Pulsa ahora el botón Ver Pulsaciones y comprobarás como este botón te muestra las veces que pulsaste cada botón.

Pulsa los botones varias

veces…

…y luego pulsa el botón

Ver Pulsaciones.

Aparecerá un JOptionPane

Page 385: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

385

17. Ahora programaremos el botón Reiniciar de forma que los contadores internos de ambos botones A y B se pongan a cero.

18. Accede al actionPerformed del botón Reiniciar y programa lo siguiente:

19. Puedes comprobar el funcionamiento de este botón ejecutando el programa y pulsando varias veces los botones A y B. Luego mira las pulsaciones almacenadas en ambos botones. Pulsa el botón Reiniciar y comprueba las pulsaciones de nuevo. Deberían ser cero en ambos botones.

Después de pulsar los

botones A y B…

… si se pulsa el botón

Reiniciar…

Page 386: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

386

EJERCICIO

Se propone al alumno que añada las siguientes modificaciones al programa:

- Añade desde código un nuevo botón Botón C (de tipo BotonContador) que al pulsarse aumente su número de pulsaciones interno en 2 (usa el método aumentar propio de la clase BotonContador).

- Cuando se pulse el botón Ver Pulsaciones también debería verse el número de pulsaciones del botón C.

- Cuando se pulse Reiniciar, el número de pulsaciones del Botón C debería situarse a cero también.

- Añade desde diseño un cuadro de texto y un botón normal (JButton) llamado Iniciar. En el cuadro de texto se introducirá un número, y al pulsar el botón Iniciar, los valores internos de los tres botones A, B y C se inicializarán al número introducido:

Se introduce un número…

Y al pulsar iniciar, los

contadores internos de los

botones se inicializan al

Page 387: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

387

Page 388: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

388

CONCLUSIÓN

La Herencia consiste en crear una clase que obtenga todas las características de

otra. Esta clase a su vez tendrá también características 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 creación propia derive o herede de otra ya

existente añadiendo:

extends NombreClaseBase

CLASE BASE

CLASE

DERIVADA

Herencia

Page 389: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

389

en la línea de creación de la clase.

La clase creada así obtendrá características de la clase de la que hereda.

Aparte, esta clase tendrá métodos propios añadidos por el programador.

Page 390: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

390

EJERCICIO GUIADO. JAVA: POO. HERENCIA. DIALOGOS PROPIOS

Reutilización de código

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 añadir algunos cambios

a la Clase original, sin que esta se vea afectada.

De esta manera, podemos tomar Clases de las librerías de Java y crear a partir de ellas nuevas

Clases para nuestras necesidades específicas. Estas clases luego pueden ser incluidas fácilmente

en futuros proyectos.

Cuadro de Diálogo Propio

Como ejemplo de todo esto, crearemos un cuadro de diálogo propio que puede ser usado muy a

menudo en nuestros proyectos. Concretamente, será un cuadro de diálogo que nos permita

introducir una fecha (dia / mes / año)

Debes tener en cuenta que los cuadros de diálogo son objetos de la clase JDialog, por lo que este

cuadro de diálogo propio tendrá que derivar (heredar) de la clase JDialog.

La clase JDialog se comporta como una ventana (un JFrame) así que su programación es

relativamente sencilla.

Veremos el caso concreto de programar un Cuadro de Diálogo Propio a través del ejercicio guiado

que viene a continuación.

Page 391: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

391

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 diálogo propio, debes hacer clic con el botón derecho del ratón sobre el paquete principal y activar la opción Nuevo – Archivo/Carpeta. A través de esta opción accedemos a un menú desde donde podemos añadir a nuestro proyecto distintos tipos de clases.

Page 392: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

392

22. En la ventana que aparece, escogeremos en la parte izquierda la opción Formularios GUI Java, y en la parte derecha escogeremos la opción Formulario JDialog. Luego activa el botón Siguiente.

Page 393: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

393

23. A continuación tendremos que indicar el nombre que tendrá la clase correspondiente a nuestro cuadro de diálogo propio. En nuestro caso llamaremos a esta clase dialogoFecha.

Page 394: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

394

24. Y pulsa el botón Terminar. Observarás que se ha creado una nueva Clase dentro del proyecto llamada dialogoFecha.

25. Es interesante que veas el código de esta clase. Haz doble clic sobre ella:

Page 395: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

395

Si observas el código verás 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

también verás que hay un constructor similar al de los JFrame, aunque con parámetros:

26. Además, tenemos la ventaja de poder usar la ventana de diseño para crear nuestro cuadro de diálogo dialogoFecha:

Hereda de JDialog

Constructor

Page 396: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

396

27. Usaremos la ventana de diseño para darle forma a nuestro cuadro de diálogo. Recuerda que la finalidad de este cuadro de diálogo será la de permitirle al usuario introducir una fecha. Diséñalo para que quede así:

28. Asigna nombre a cada elemento:

a. El cuadro de texto para el día se llamará: txtDia b. El cuadro de texto para el mes se llamará: txtMes c. El cuadro de texto para el año se llamará: txtAnio d. El botón Aceptar se llamará btnAceptar e. El botón Cancelar se llamará btnCancelar

29. Como ves, hasta ahora la creación de un cuadro de diálogo propio es algo muy sencillo, ya que es muy similar a la creación de una ventana. En este proceso (al igual que en la creación de una ventana) participa el concepto de herencia.

30. Ahora hay que dotar a nuestro cuadro de diálogo de las propiedades y los métodos necesarios para que sea fácil de usar. Antes de programar todo esto, aquí tienes una descripción de lo que queremos añadir al cuadro de diálogo:

Propiedades:

Dia - entero

Page 397: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

397

Mes - entero

Anio - entero

BotonPulsado - entero

Métodos:

getFecha()

- Este método devolverá una cadena (String) con la fecha en este formato: dia/mes/año

getFechaLarga()

- Este método devolverá una cadena con la fecha en el siguiente formato: Dia de Mes(en letras) de Año

getBotonPulsado()

- Este método devolverá el valor de la propiedad BotonPulsado. Esta propiedad podrá tener un 0 o un 1. Tendrá un 0 si se pulsa el botón Aceptar, y un 1 si se pulsa el botón Cancelar.

31. Bien, empecemos. Programar las propiedades es algo sencillo, ya que son simplemente variables globales a la clase dialogoFecha:

Page 398: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

398

32. Cuando el usuario pulse el botón Cancelar, el cuadro de diálogo de fecha debe introducir el valor 1 dentro de su propiedad BotonPulsado, y el cuadro de diálogo se cerrará. Para programar esto, acude a la ventana de diseño y entra en el actionPerformed del botón btnCancelar.

Como puedes observar en el código, asigno el 1 a la propiedad BotonPulsado y luego uso

el método dispose para cerrar el cuadro de diálogo.

33. Cuando el usuario pulse el botón Aceptar, el cuadro de diálogo 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 diálogo.

Accede al actionPerformed del botón btnAceptar y programa lo siguiente…

Propiedades de la clase

dialogoFecha

Page 399: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

399

34. Ya hemos programado las acciones a realizar cuando se pulse el botón Aceptar y Cancelar. Ahora programaremos el resto de los métodos. Empezaremos por el método getFecha.

El método getFecha devolverá una cadena con la fecha en formato dia/mes/año. Por tanto,

este método tendrá la siguiente forma. Debes escribir este código dentro de la clase

dialogoFecha. El mejor sitio puede ser debajo del constructor.

Observa el código. Se unen las propiedades dia, mes y año en una cadena, separadas por

el símbolo “/”. Luego se devuelve la cadena.

Page 400: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

400

35. Ahora programaremos el método getFechaCompleta. Este método devuelve la fecha con formato largo, usando el mes en letras. El método getFechaCompleta tendrá el siguiente aspecto. Puedes programarlo a continuación del método del punto anterior:

Como puedes observar, se concatena el día 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.

Page 401: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

401

36. Y ya para terminar con la programación de nuestro dialogoFecha, programaremos el método getBotonPulsado, que básicamente devuelve la propiedad BotonPulsado, la cual contiene un 0 si se pulsó Aceptar y un 1 si se pulsó Cancelar. La programación de este método es muy sencilla:

La clase dialogoFecha está terminada. Gracias a ella podremos crear cuadros de diálogo 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. Diseña esta ventana para que tenga la siguiente forma:

Page 402: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

402

El botón se llamará btnFechaNacimiento y la etiqueta con borde se llamará

etiFechaNacimiento.

39. El programa funcionará de la siguiente forma:

a. Al pulsar el botón Introducir Fecha Nacimiento aparecerá un cuadro de diálogo 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 diálogo del tipo dialogoFecha. Este cuadro lo declararemos en la zona de variables globales de la ventana principal y lo llamaremos nacimiento…

Page 403: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

403

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 diálogo hay que añadir dos parámetros: null,

y luego indicar true o false, según quieras que el cuadro de dialogo sea modal o no. En

nuestro caso, queremos que el cuadro de diálogo nacimiento sea modal, por lo que

indicaremos true:

42. Programa el actionPerformed del botón btnFechaNacimiento. Este botón mostrará al cuadro de diálogo 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 través de los métodos programados. Observa el código:

Se construye el

cuadro de diálogo

nacimiento. Será

modal (true)

Page 404: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

404

43. Ejecuta el programa y observa el funcionamiento del botón btnFechaNacimiento y del cuadro de diálogo nacimiento

1) Al pulsar el botón

aparece el cuadro de

diálogo diseñado por

nosotros…

2) Al pulsar Aceptar o Cancelar,

el cuadro de diálogo modifica sus

propiedades internas (dia, mes,

año y botón pulsado) y se cierra

3) El programa le pide

información al cuadro de diálogo

para saber que debe colocar en

la etiqueta.

Page 405: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

405

EJERCICIO

Añade otra etiqueta a la ventana principal. Modifica el código del botón btnFechaNacimiento de

forma que también aparezca en esta etiqueta la fecha elegida por el usuario en formato largo. Esto

debe suceder solo si el usuario Acepta el cuadro de diálogo. En caso de que el usuario cancele el

cuadro de diálogo esta etiqueta se borrará.

CONCLUSIÓN

Es posible crear cuadros de diálogos propios, con las características que más nos

interesen.

Estos cuadros de diálogo son clases que derivan de la clase JDialog.

Los cuadros de diálogo se comportan y manejan básicamente igual que las

ventanas.

La gran ventaja de crear cuadros de diálogos propios, es que luego se podrán usar

en otros proyectos.

Page 406: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

406

EJERCICIO GUIADO. JAVA: POO. REUTILIZACIÓN DE CÓDIGO

Reutilización de código

La reutilización de código 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 filosofía 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 más clases coleccione, más 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.

EJERCICIO GUIADO 1

1. Crea un nuevo proyecto. El nombre del proyecto será Reutilizacion. Contendrá un paquete llamado paqueteprincipal y dentro de él introducirás un JFrame al que llamaremos ventanaprincipal:

Page 407: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

407

2. Supongamos que en este proyecto queremos utilizar cuadros de diálogo 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:

Page 408: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

408

Observarás que el proyecto Fecha incluye la clase dialogoFecha dentro de su paquete

principal.

3. Para poder aprovechar la clase dialogoFecha en el proyecto Reutilización, solo hay que copiar el fichero de la clase desde un proyecto a otro. Así pues Copia dialogoFecha…

Proyecto Fecha

Proyecto Reutilizacion

Page 409: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

409

4. Y luego Pega en el paquete principal del proyecto Reutilizacion.

Page 410: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

410

4. Observarás como se añade una copia de dialogoFecha al paquete principal del proyecto Reutilizacion.

Page 411: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

411

A partir de ahora, podrás crear objetos de tipo dialogoFecha dentro del proyecto Reutilizacion y

aprovechar sus características, sin tener que programar ningún código adicional.

5. Cierra el paquete Fecha para despejar un poco la ventana de Proyectos (Botón derecho cerrar proyecto)

Page 412: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

412

6. Supongamos que necesitamos también la clase BotonContador creada en la hoja guiada nº 31. Solo tendremos que abrir el proyecto llamado Contadores, que se programó en dicha hoja…

Page 413: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

413

7. Y luego copiar la clase BotonContador desde Contadores a Reutilizacion. Hágalo y luego cierre la clase Contadores. Su ventana de proyectos debería quedar así:

8. A partir de este momento, puede crear botones contadores y cuadros de diálogo de introducción de fechas en el proyecto Reutilizacion sin tener que haber programado ni una línea de código.

Page 414: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

414

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 través de la creación de paquetes.

10. Para ver esta idea en nuestro proyecto Reutilizacion, crearemos un nuevo paquete (botón derecho sobre Paquetes de origen y luego Nuevo à Paquete Java)

11. El nombre del paquete será elementosventana. Su proyecto quedará así:

Page 415: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

415

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 creación 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 opción Previsualizar todos los cambios y pulsa Siguiente.

13. Una vez movidas las dos clases al paquete elementosventana, su proyecto debe quedar así:

Page 416: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

416

Ahora tiene mejor clasificadas sus clases en su proyecto.

14. Guarde el proyecto, pero no lo cierre, ya que se usará a continuación.

Page 417: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

417

EJERCICIO GUIADO 2

En el ejercicio guiado 1 hemos visto como podemos añadir 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 añadir al proyecto. Es decir, tengo que acordarme del proyecto que contiene la

clase.

Sería muy interesante que nuestras clases las tengamos reunidas en un solo proyecto, para no

tener que estar luego buscándolas 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 más fáciles de encontrar.

Veremos en este ejercicio guiado como crear una Biblioteca.

1. Para crear una Biblioteca activa la opción Archivo à Nuevo Proyecto, y en la ventana de opciones que aparece elige General y Biblioteca de clases java.

Page 418: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

418

2. Pulsa el botón Siguiente y asigna a la biblioteca el nombre MisClases. Pulsa Terminar.

Page 419: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

419

Observarás 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…:

Page 420: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

420

4. Y luego Pegar…

Page 421: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

421

5. Y el resultado es que hemos añadido un paquete a la biblioteca MisClases:

Page 422: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

422

6. Se podría agregar más paquetes de clases a la biblioteca. A medida que vayamos programando clases útiles para nuestro trabajo, deberíamos incluirlas en la biblioteca.

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 continuación.

EJERCICIO GUIADO 3

1. Para facilitar la inclusión 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.

Page 423: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

423

2. A continuación pulsa el botón de la barra de herramientas Limpiar y Construir proyecto principal:

3. Al pulsar este botón, 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 generación ha sido correcta:

Page 424: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

424

4. Si todo ha ido bien, se debe haber generado un fichero llamado MisClases.JAR que contiene toda la librería. 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 verás 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 añade un paqueteprincipal y dentro del paquete principal un JFrame llamado ventanaprincipal. El aspecto de su ventana de proyecto será el siguiente:

Page 425: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

425

8. Imagine que queremos usar en este proyecto la librería anteriormente creada y compactada. Para ello, haz clic con el botón derecho sobre el elemento del proyecto llamado Bibliotecas y activa la opción Agregar Archivo JAR / Carpeta.

9. Busca en el escritorio el fichero MisClases.JAR y ábrelo.

Page 426: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

426

10. En este momento, la librería de clases llamada MisClases ha sido añadida a tu proyecto, y esto significa que podrás usar cualquier clase que contenga MisClases. Es decir, podrás usar la clase BotonContador y dialogoFecha para crear tus objetos, así como cualquier otra clase que estuviera incluida en MisClases.

Page 427: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

427

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

(también llamadas librerías) - Las bibliotecas se pueden compactar en un solo fichero .JAR - Al incluir un fichero de biblioteca en un proyecto, puedes usar las clases que estén

contenidas en dicha biblioteca.

CONCLUSIÓN

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.

Page 428: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

428

Es interesante reunir las clases que más uses en un solo proyecto de tipo

biblioteca, para poder acceder a ellas fácilmente.

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 reutilización de código, es decir, el aprovechar

lo ya programado, para no tener que volverlo a programar.

Page 429: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

429

EJERCICIO GUIADO. JAVA: PROGRAMACIÓN MDI

Programación SDI y Programación MDI

Todo programa tiene una interfaz gráfica de usuario (gui) la cual permite a este manejar el

programa de forma sencilla. La interfaz gráfica de usuario consta de la ventana principal, cuadros

de diálogo, botones, cuadros de texto, etc…

Según 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 práctico de aplicación 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 estás

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 múltiples documentos. Esto quiere decir que las

aplicaciones MDI pueden mostrar varios documentos a la vez.

Page 430: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

430

Un ejemplo práctico de aplicación MDI es el programa de retoque fotográfico 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 explicarán las nociones básicas para crear una aplicación MDI en Java

con NetBeans.

Page 431: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

431

EJERCICIO GUIADO 1

Se pretende crear un visor de imágenes MDI, es decir, que permita la visualización de varias

imágenes a la vez. El programa constará de una ventana principal con un menú. Las opciones de

este menú permitirán al usuario abrir varias imágenes y cerrarlas a su gusto.

Al ser un proyecto MDI, las imágenes se abrirán en ventanas internas. Estas ventanas internas

tendrán que ser diseñadas de forma adecuada.

Para crear este proyecto, tendremos que seguir tres pasos generales:

- Diseño de la ventana principal. - Diseño de las ventanas internas. - Programación de la ventana principal / internas.

Diseño de la ventana principal

15. Crea un nuevo proyecto. El nombre del proyecto será VisorFotos. Añade un paquete llamado paqueteprincipal. Dentro de dicho paquete añade un JFrame llamado ventanaprincipal.

Page 432: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

432

16. Añade a la ventana principal una barra de menús, con una única opción Archivo, que contenga a su vez las siguiente opciones:

Asigna los siguientes nombres a cada elemento del menú:

17. Establece un layout de tipo BorderLayout al JFrame. Recuerda que este tipo de distribución divide la ventana en cinco zonas: norte, sur, este, oeste y centro.

Page 433: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

433

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 aplicación

MDI. En NetBeans este tipo de panel se muestra de color azul, para distinguirlo de los

paneles normales, por eso, cuando añadas el panel al JFrame este quedará así:

Page 434: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

434

19. Cámbiale el nombre al JDesktopPane y asígnale el nombre panelInterno:

Page 435: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

435

20. Si ejecutas el programa ahora, verás que la ventana sale reducida al mínimo tamaño posible. Esto lo vamos a evitar haciendo que la ventana aparezca maximizada al ejecutarse el programa. También le asignaremos un tamaño inicial. Para ello, acude al constructor del JFrame y programa lo siguiente:

Como ves, en el constructor se llama a un método ConfiguracionVentana y en este método se

asigna un tamaño por defecto a la ventana de 800x600 y se maximiza.

Llamada a un método

ConfiguracionVentana

Programación de dicho

método.

Page 436: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

436

Diseño de las ventanas internas

Se pretende que cuando se abra una imagen, el programa muestre una ventana interna que

contenga la imagen y nada más. La barra de título de esta ventana interna contendrá el camino de

la imagen.

Para diseñar la ventana interna de la aplicación, sigue los pasos que se indican a continuación:

21. Una ventana interna de una aplicación MDI es un objeto de la clase JInternalFrame. Será necesario añadir 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 categoría Formulario JInternalFrame.

Page 437: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

437

23. El nombre que le pondremos a este tipo de formulario será el de ventanainterna.

Page 438: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

438

24. Si observas la ventana de proyecto, verás que ahora tenemos dos clases: la ventana principal, y la ventana interna. Ahora diseñaremos la ventana interna, para ello, haz doble clic sobre ventanainterna.

25. Como se dijo anteriormente, las ventanas internas mostrarán 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á ningún texto dentro, y su nombre será etiImagen.

La etiqueta se llamará etiImagen…

Page 439: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

439

Y ocupará todo el JInternalFrame

26. En las hojas guiadas anteriores, se ha hablado de la programación orientada a objetos, y se ha comentado que los objetos poseen propiedades. Estas propiedades son básicamente variables globales internas. Para poder acceder a estas propiedades, es necesario programar métodos 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 método

set que permita modificar la etiqueta a nuestro antojo.

Básicamente, este método set debe ser capaz de introducir en la etiqueta una imagen.

Haremos que este método reciba como parámetro el camino de la imagen a mostrar.

27. Así pues, entra en la zona de código de la ventanainterna y añade después del constructor el siguiente método:

Page 440: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

440

28. En la programación MDI, será habitual crear métodos para poder acceder a los distintos elementos de la ventana interna (etiquetas, cuadros de texto, etc) En otras ocasiones, tendremos que crear métodos get para obtener información de las ventanas internas. Es algo muy similar a la programación de diálogos propios que se vio en hojas anteriores.

29. Bien, con la programación de este método de acceso a la etiqueta de la ventana interna, hemos terminado con el diseño de esta ventana, ahora empezaremos a programar la ventana principal. Vuelve a ella haciendo doble clic sobre la ventanaprincipal en la zona de proyectos:

Método para acceder a

la etiqueta etiImagen

Page 441: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

441

Page 442: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

442

Programación de la ventana principal

Se pretende ahora programar la opción Abrir del menú de forma que se elija el fichero de imagen a

mostrar y se muestre este en una ventana interna.

La opción Cerrar del menú permitirá cerrar la ventana interna activa en un momento determinado.

Sigue los pasos que se describen a continuación:

30. Ya estamos preparados para programar las opciones del menú. Empezaremos por la opción Abrir. Accede al actionPerformed de la opción Abrir y programa lo siguiente:

La opción Abrir se encargará de abrir un fichero de imagen y mostrarlo en una ventana

interna del programa. Lo primero que hace esta opción es mostrar el cuadro de diálogo

Abrir, que se usa para indicar el fichero que se quiere abrir.

Se crea un objeto del tipo JFileChooser a través de la línea:

Page 443: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

443

JFileChooser abrir = new JFileChooser();

Luego se le da la orden de que muestre el cuadro de diálogo Abrir. La variable boton

recoge el botón pulsado por el usuario (Aceptar / Cancelar)

int boton = abrir.showOpenDialog(null);

Luego, a través de un if, compruebo si se ha pulsado el botón Aceptar…

if (boton==JFileChooser.APPROVE_OPTION) {

}

Dentro de este if tendremos que programar la acción correspondiente a abrir la imagen y

mostrarla en pantalla. Vamos a ello.

31. Programa dentro del if anterior lo siguiente. El código se comentará a continuación.

Page 444: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

444

Atento a este código, porque define la creación de ventanas internas, conteniendo la

imagen elegida para mostrar. Es el corazón del programa…

La primera instrucción, crea una ventana interna llamada vi. Como puedes observar, es la

creación 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 características como

ventana. Concretamente se decide que sea una ventana con posibilidad de cambiar de

tamaño (setResizable), una ventana que pueda ser maximizada (setMaximizable), una

Page 445: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

445

ventana que pueda ser minimizada (setIconifiable) y finalmente que pueda ser cerrada

(setClosable)

vi.setResizable(true);

vi.setMaximizable(true);

vi.setIconifiable(true);

vi.setClosable(true);

Una vez definidas dichas características de la ventana interna, esta se añade 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 diálogo abrir.

String camino = abrir.getSelectedFile().toString();

Ahora aprovechamos el método 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 título de la ventana interna:

vi.setTitle(camino);

Page 446: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

446

Finalmente hacemos visible la ventana interna.

vi.setVisible(true);

32. Ejecuta el programa y prueba a abrir varios ficheros de imagen.

Observa la creación 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 tamaño, maximizarlas, minimizarlas y

cerrarlas.

Observa como todas las ventanas internas están encerradas dentro de los límites del panel

interno de la ventana principal:

Page 447: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

447

33. Este proyecto se usará en las próximas hojas. Guárdalo.

Page 448: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

448

CONCLUSIÓN

La programación MDI consiste en crear aplicaciones capaces de abrir varios

ficheros y mostrarlos en distintas ventanas internas.

Una aplicación MDI cuenta con dos elementos básicos:

- Un panel interno JDesktopPane, el cual contendrá las ventanas internas.

- Una clase del tipo JInternalFrame, la cual definirá el diseño de las ventanas

internas.

La clase JInternalFrame que añadamos, tendrá el nombre que queramos asignarle y

nos servirá de plantilla para crear las ventanas internas de nuestro proyecto. Esta

clase podrá tener métodos internos para acceder a los elementos de las ventanas

internas.

Desde la ventana principal, se crearán objetos de la clase ventana interna, y se

definirán opciones relativas a la posibilidad de maximizar, cerrar, minimizar, etc,

dichas ventanas.

Desde la ventana principal se usarán los métodos programados en la ventana

interna para poder manejarla con facilidad.

Page 449: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

449

EJERCICIO GUIADO. JAVA: PROGRAMACIÓN MDI CONTINUACIÓN

Ventanas Internas

Tal como se explicó en la hoja guiada anterior, una aplicación 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 añadir a su proyecto una clase heredada de JInternalFrame. Esta clase será

la ventana interna. El programador diseña el aspecto de esta ventana y añade los métodos que

considere necesarios para el manejo de dichas ventanas internas.

En la hoja anterior se creó un pequeño 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

En este ejercicio guiado inicial, programaremos la opción Cerrar del proyecto “Visor de Fotos”. Esta

opción 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 demás, y porque tiene

su barra de título de color azul, mientras que las demás aparecen en gris. La forma de seleccionar

una ventana interna es simplemente hacer clic sobre ella.

Page 450: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

450

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 opción del menú Cerrar y programa lo siguiente:

Ventana interna activa

Page 451: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

451

4. Ejecuta el programa y comprueba el funcionamiento de la opción Cerrar. Se recomienda que abra varias imágenes en su programa y luego seleccione una de ellas. Active la opción Cerrar y observe como la ventana interna se cierra.

5. El funcionamiento del código 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 métodos muy útiles para manipular las ventanas internas que contienen.

Uno de los métodos que más usaremos será getSelectedFrame. Este método devuelve la

ventana interna seleccionada ahora mismo, o null si no hay ninguna seleccionada.

En el código anterior, observarás que creamos un objeto vactiva del tipo ventanainterna, y

dentro de él metemos la ventana interna seleccionada en este momento, ejecutando el

método 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 continuación es cerrar la ventana activa vactiva usando el método dispose típico

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.

Page 452: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

452

6. Este código es muy común a la hora de trabajar en aplicaciones MDI. Primero se comprueba cual es la ventana activa y luego se actúa sobre ella. Veamos ahora otro ejemplo. Añade al menú la opción Info:

7. Accede al evento actionPerformed de esta nueva opción y programa lo siguiente:

8. Este código 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 método getSelectedFrame, almacenándola

en una variable llamada vactiva.

Page 453: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

453

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 título 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 título

aparezca el camino de la imagen)

9. Ejecuta el programa y comprueba el funcionamiento de la opción del menú Info.

10. Se ha visto que a través del método getSelectedFrame propio de los JDesktopPane se puede acceder a la ventana activa. Pero, ¿cómo puedo acceder a otra ventana interna aunque no esté activa?

Para hacer esto, la clase JDesktopPane posee un método llamado getAllFrames la cual

devuelve un vector conteniendo todas las ventanas internas que hay actualmente en el

JDesktopPane.

11. Para practicar con el método indicado en el punto anterior, añade al menú Archivo una nueva opción llamada Cerrar Todo:

Page 454: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

454

12. Accede al evento actionPerformed de la nueva opción y programa lo siguiente:

13. Analicemos el código anterior.

Lo primero que tienes que observar es el uso de getAllFrames. Este método devuelve un

vector conteniendo todas las ventanas internas actuales. En nuestro código, almacenamos

estas ventanas en un vector llamado v.

JInternalFrame v[] = panelInterno.getAllFrames();

A continuación, recorremos todo el vector y vamos cerrando cada ventana almacenada en

el vector.

Como puedes observar, este código hace que se cierren todas las ventanas de imagen

abiertas.

Page 455: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

455

14. Ejecuta el programa y comprueba el funcionamiento de la opción Cerrar Todo.

15. Este código es un ejemplo de actuación sobre todas las ventanas internas abiertas. A continuación usaremos esta misma idea para organizar las ventanas dentro del panel interno. Añade las siguientes opciones al menú:

16. La opción Cascada organizará las ventanas internas abiertas en cascada. Para ello entra en el evento actionPerformed de la opción y programa lo siguiente:

Page 456: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

456

17. Analicemos el código.

Observa de nuevo el uso de getAllFrames para almacenar todas las ventanas internas

abiertas en un vector v:

JInternalFrame v[] = panelInterno.getAllFrames();

A continuación se recorre el vector y se asigna a cada ventana interna (cada elemento del

vector) un tamaño con el método setSize y una posición con el método setLocation. Las

posiciones de cada ventana van variando para situar cada ventana una encima de la otra.

El vector se recorre al revés, desde la última ventana a la primera para mejorar la

visualización de dichas ventanas.

18. Ejecuta el programa y prueba el funcionamiento de la opción Cascada. Se recomienda que primero abra varias ventanas y luego pulse esta opción.

Page 457: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

457

CONCLUSIÓN

En la programación MDI siempre actúan dos elementos:

- Un panel interno JDesktopPane, el cual contendrá las ventanas internas.

- Una clase del tipo JInternalFrame, la cual definirá el diseño de las ventanas

internas.

El panel interno posee diversos métodos que permiten acceder a las ventanas

actualmente abiertas dentro de él. Entre estos métodos 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 métodos podemos acceder a las ventanas internas y actuar

sobre ellas.

Page 458: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

458

EJERCICIO GUIADO. BASES DE DATOS

Recapitulando… GUI y PROCESO DE DATOS

Un programa básicamente recibe una serie de datos, que introduce el usuario, luego

realiza una serie de cálculos 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 cálculos. Estos elementos son las

ventanas con todos sus componentes: botones, cuadros de diálogos, etiquetas, listas

desplegables, etc…

El programa realiza los cálculos con dichos datos y los resultados los presenta en

elementos de la ventana para que el usuario pueda verlos de forma cómoda. 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 gráfica 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

básicamente el diseño de las ventanas del programa.

Un buen diseño del GUI es vital. La interfaz de usuario debe hacer que el programa sea

intuitivo, fácil de usar. Un programa incómodo, por muy bueno que sea, será rechazado

por el usuario.

Page 459: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

459

Aparte del GUI, internamente el programa debe realizar una serie de cálculos para

obtener los resultados pedidos por el usuario. No hace falta decir que la programación de

estos cálculos debe ser precisa y correcta, ya que en caso contrario el programa no

serviría para nada, por muy buena que fuera la interfaz de usuario.

Todo lo anterior se puede representar gráficamente de la siguiente forma:

Cálculos,

procesos,

acciones…

Datos, órdenes Datos, órdenes

Resultados Resultados

Usuario GUI

Interfaz de usuario

Programación

interna:

Procedimientos,

funciones, clases,

Page 460: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

460

BASES DE DATOS

Ahora se va a dar una vuelta de tuerca más a lo indicado anteriormente añadiendo a todo

este entorno el concepto de Base de Datos.

Hay que tener en cuenta que la mayoría de las aplicaciones que solicitan las empresas

son programas cuya función principal es la de mantener datos de la propia empresa.

Estos programas suelen tener siempre las mismas funciones básicas. 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 condición. Por ejemplo: visualizar las facturas del mes de enero, o mostrar los productos que estén en stock, mostrar los trabajadores que hayan trabajado más de 100 horas, etc…

- Realizar cálculos 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.

Page 461: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

461

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 fáciles de manipular, es

necesario que tengan una organización determinada. Una Base de Datos mal organizada

se convierte simplemente en un cajón de sastre donde resulta imposible encontrar lo que

se busca.

Así pues, es necesario tener en cuenta la forma en que se organizarán los datos dentro

de la base de datos, o dicho de otra forma, el diseño de la base de datos.

En las próximas hojas guiadas se verán conceptos básicos para el diseño y creación 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.

Page 462: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

462

Acceso a la BASE DE DATOS desde la aplicación

Añadiendo el concepto de Base de Datos a la idea de usuario, GUI y Proceso de Datos,

podemos representar gráficamente un programa como sigue:

Cálculos,

procesos,

acciones,

Acceso a la

base de datos

Datos, órdenes,

consultas a la

Resultados Resultados

Usuario

GUI

Interfaz de usuario

Ventanas, botones,

Programación

interna:

Procedimientos,

funciones, clases,

Datos, órdenes,

consultas a la

SQL

Consultar la base

de datos.

Resultados

de la

consulta

BASE

DE

Page 463: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

463

Analicemos el gráfico 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 opción del menú que corresponda, o el botón de la barra de herramientas, etc. Dicho de otra manera, el usuario da una orden.

3. Es posible que el usuario tenga que introducir algún 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…

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 petición del usuario al módulo de Proceso de Datos. Este módulo es el corazón del programa, el que se encarga de ejecutar las órdenes.

Page 464: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

464

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 módulo de Proceso de Datos usará un lenguaje ideado para el acceso a bases de datos llamado SQL.

7. Gracias al lenguaje SQL, el módulo de Proceso de Datos obtendrá los datos necesarios que pedía el usuario (por ejemplo el listado de clientes) o bien los datos necesarios para realizar el cálculo (los ingresos de cada día del mes)

8. Una vez obtenido los resultados, el módulo 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 había pedido.

Teniendo en cuenta lo visto, para la creación de un programa hay que:

- Diseñar un GUI agradable, cómodo y fácil de usar. - Diseñar la base de datos de forma que el acceso a datos sea rápido. - Hacer el programa de forma que responda a las peticiones del usuario

transmitidas por el GUI accediendo a la base de datos y obteniendo información 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…

Page 465: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

465

A través 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.

DISEÑO DE BASE DE DATOS. MODELO ENTIDAD - RELACIÓN

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 diseño que tendrá

dicha base de datos. O dicho de otro modo, como se organizarán los datos en la base de

datos.

Para facilitar la tarea de organizar los datos en una base de datos, se usa una

representación gráfica llamada Modelo Entidad – Relación, o simplemente Modelo E-R.

Podríamos comparar el Modelo E-R a los Diagramas de Flujo. El Modelo E-R nos facilita

el diseño de bases de datos mientras que los Diagramas de Flujo nos facilitan el diseño

de algoritmos.

Page 466: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

466

EJERCICIO GUIADO Nº 1

Veremos en este ejercicio guiado como diseñar una base de datos a partir de la

información 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

dirección y dos teléfonos de contacto.

Por otro lado, MANEMPSA quiere guardar los datos de los trabajadores que están 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 (fontanería, 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.

Page 467: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

467

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 información de cada coche. Le interesa almacenar la matrícula, la marca, el

modelo y el año de compra.

MANEMPSA le encarga un programa para gestionar toda esta información. Se pide que

diseñe 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 través de una serie

de características.

Las entidades son aquellos elementos que juegan un papel importante en la base

de datos. Son los elementos sobre los que queremos almacenar información.

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.

Page 468: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

468

A la empresa le interesa almacenar información sobre las entidades. Es decir, le

interesa almacenar información sobre los clientes, los trabajadores, los servicios y

los coches.

La información 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 continuación se indican los atributos que se almacenarán de cada entidad,

teniendo en cuenta el supuesto:

Entidad Clientes

Atributos: CIF, nombre empresa, dirección, teléfono1, teléfono2.

Entidad Trabajadores

Atributos: nombre, apellidos, DNI, sueldo, fecha de entrada.

Entidad Servicios

Atributos: fecha, tipo, cantidad, comentario.

Entidad Coches

Atributos: matrícula, marca, modelo, año de compra.

Page 469: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

469

4. Atributos clave.

Un Atributo Clave es aquel atributo cuyo valor no se repite y no puede estar vacío para todos los elementos de una entidad.

Los Atributos Clave distinguen a cada elemento de una entidad.

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 tendrán 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 añadir 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 matrícula.

Entidad Servicios.

Page 470: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

470

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 podrían tener el mismo comentario, o no tener comentario en absoluto: el atributo comentario no puede ser atributo clave.

- Dos servicios distintos podrían 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 añadir un atributo que sea atributo clave, es decir, un

“código” o “identificador”.

En nuestro ejemplo, añadiremos un atributo “número” que será el número de

servicio realizado. Cada servicio tendrá un número distinto, por lo que el atributo

número será el atributo clave.

Así pues, los atributos de la entidad Servicios serán los siguientes:

Entidad Servicios

Atributos: fecha, tipo, cantidad, comentario, número.

Page 471: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

471

Y el atributo número 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 están implícitas. Por ejemplo, no se ha establecido una relación entre Trabajadores y Clientes:

“Un Trabajador hace trabajos a Clientes.”

Page 472: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

472

No está establecida una relación directa entre ambas entidades, pero sí se

relacionan a través de la entidad Servicios:

Trabajador --- Servicios --- Clientes

Así pues, en realidad, trabajadores y clientes se relacionan, a través de la entidad

servicios.

7. Cardinalidad de las relaciones o Tipo de relaciones.

Según la forma en que se relacionen dos entidades, tenemos tres tipos de

relaciones:

Relaciones 1 a 1

En este tipo de relación, un elemento de la primera entidad se relaciona con un

elemento de la segunda entidad, y viceversa.

En nuestro ejemplo, la relación 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

Page 473: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

473

En este tipo de relación, 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 relación 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 relación entre Clientes y Servicios es también 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 relación es el mismo que el anterior. Basta con “darle la vuelta” a la

relación.

Por ejemplo, se ha visto que la relación Trabajadores – Servicios es del tipo 1 a

Muchos. Por tanto, la relación Servicios – Trabajadores es del tipo Muchos a 1.

Relaciones Muchos a Muchos

En este tipo de relación un elemento de la primera entidad se relaciona con

muchos elementos de la segunda entidad, y viceversa.

En nuestro supuesto no tenemos ninguna relación de este tipo, pero supongamos

la siguiente relación entre Profesores y Cursos:

Page 474: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

474

“Un profesor puede dar varios cursos, y un curso es impartido por varios

profesores”

Esta relación sería del tipo Muchos a Muchos.

8. Averiguar el tipo de relaciones.

Para averiguar el tipo de cada relación, es necesario estudiar bien el enunciado del

supuesto, y pedir información al cliente que nos encarga el programa, de lo

contrario, tendremos que hacer suposiciones para asignar un tipo a cada relación.

En nuestro supuesto, las relaciones tienen el siguiente tipo:

Coches -1---1- Trabajadores -1---M- Servicios -M---1- Clientes

Relación Coches – Trabajadores. Tipo 1 a 1.

Relación Trabajadores – Servicios. Tipo 1 a Muchos.

Relación 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.

Page 475: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

475

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 añadir el atributo clave de Coches a

Trabajadores, y viceversa.

Así pues, será necesario añadir el atributo matrícula a Trabajadores, y el atributo

DNI a Coches.

Por tanto, las entidades Trabajadores y Coches quedarán así:

Entidad Trabajadores

Atributos: nombre, apellidos, DNI, sueldo, fecha de entrada, matricula

Entidad Coches

Atributos: matrícula, marca, modelo, año 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 relación 1, a la entidad de la parte de la relación Muchas.

Page 476: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

476

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 quedarán así:

Entidad Trabajadores

Atributos: nombre, apellidos, DNI, sueldo, fecha de entrada, matricula

Entidad Servicios

Atributos: fecha, tipo, cantidad, comentario, número, 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 quedarán así:

Entidad Servicios

Atributos: fecha, tipo, cantidad, comentario, número, DNI, CIF.

Entidad Clientes

Atributos: CIF, nombre empresa, dirección, teléfono1, teléfono2.

Page 477: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

477

10. Claves Foráneas.

La razón de traspasar el atributo clave de una entidad a otra es que exista un

elemento de unión, en ambas entidades relacionadas.

Cuando una entidad posee un atributo clave de otra entidad, se dice que ese

atributo es una clave foránea.

Después de realizar estos traspasos, nuestras entidades quedan con los

siguientes atributos.

Nota: se subraya con línea continua el atributo clave en cada entidad, y se subraya

con línea de puntos las claves foráneas de cada entidad.

Entidad Coches

Atributos: matrícula, marca, modelo, año de compra, DNI

Entidad Trabajadores

Atributos: nombre, apellidos, DNI, sueldo, fecha de entrada, matricula

Entidad Servicios

Atributos: fecha, tipo, cantidad, comentario, número, DNI, CIF.

Page 478: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

478

Entidad Clientes

Atributos: CIF, nombre empresa, dirección, teléfono1, teléfono2.

No confundas el concepto de atributo clave, con el concepto de clave foránea.

11. Modelo E-R.

Una vez definidas las entidades, los atributos, atributos claves, relaciones, tipos de

relaciones, y claves foráneas, todo esto se puede representar de forma gráfica

como sigue:

Page 479: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

479

El gráfico anterior es lo que se llama un Modelo Entidad Relación y es una

representación de la base de datos que acabamos de diseñar.

En este gráfico observarás 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 líneas con rombos. - Se indica el tipo de relación (1 a 1, o 1 a Muchos) añadiendo a la línea de la

relación un 1 o una M para indicar el tipo de relación.

Coches

Trabajadores Servicios

Clientes

CIF

nombre

dirección

Tfno1

Tfno2 matrícula

marca

modelo

año

DNI

DNI

nombre

apellidos

sueldo

fecha

matrícula

número

fecha

tipo cantidad

comentario

DNI

CIF

1

1

1

1

M

M

Page 480: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

480

Page 481: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

481

CONCLUSIÓN

Las Bases de Datos son elementos vitales en la creación de aplicaciones para

empresas.

Para diseñar una Base de Datos hay que especificar los siguientes elementos:

- Entidades cuya información queremos almacenar.

- Atributos de dichas entidades.

- Atributos claves para dichas entidades.

- Relaciones entre entidades.

- Definir el tipo de relaciones.

- Asignar las claves foráneas según el tipo de relación.

Una vez especificados estos elementos, todo el diseño se puede representar

gráficamente a través de un modelo gráfico llamado Modelo Entidad-Relación.

Page 482: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

482

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 través de tablas. Estas tablas contendrán la

información que se desea almacenar.

Estas tablas se relacionan entre sí, de forma que podamos extraer más información

uniendo las tablas.

A las bases de datos que se organizan a través de tablas que se relacionan entre sí se las

denomina Bases de Datos Relacionales, y son las bases de datos que más se usan.

Traspaso a Tablas de un Modelo E-R

El Modelo E-R representa el diseño de una base de datos. Este modelo es ideal para

tomarlo como base a la hora de crear las tablas que formarán 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 .

Page 483: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

483

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.

Page 484: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

484

EJERCICIO GUIADO Nº 1

Dado el Modelo E-R creado en la hoja anterior y que se muestra a continuación,

crearemos las tablas necesarias que formarán parte de la base de datos:

1. Tablas de la base de datos.

Page 485: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

485

Primero hay que tener en cuenta que existirán 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 información

que guardamos de cada elemento. A esta información que se guarda de cada

elemento se la denomina Campo.

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, también existe un campo

clave para cada tabla.

3. Teniendo en cuenta lo anterior, las tablas de la base de datos tendrán las siguientes cabeceras (se subraya el campo clave) :

Tabla Coches

Matrícula Marca Modelo Año DNI

Page 486: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

486

Tabla Trabajadores

DNI Nombre Apellidos Sueldo Fecha Matrícula

Tabla Servicios

Número Fecha Tipo Cantidad Comentario DNI CIF

Tabla Clientes

CIF Nombre Dirección Tfno 1 Tfno 2

Page 487: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

487

4. Estas tablas ya se pueden relacionar gracias a que contienen las distintas claves foráneas, las cuales añadimos en el momento de analizar las relaciones en el Modelo E-R.

Sin embargo, de momento, no es necesario hacer nada más.

Page 488: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

488

5. Veamos un ejemplo del aspecto que podría tener la base de datos en un momento dado. Como podrás observar, las tablas estarán rellenas de información:

Tabla Coches

Matrícula Marca Modelo Año 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 Matrícula

21.123.123-

A

Ana Ruiz 1200 02-03-2002 3322-ASR

12.321.567-

B

Juan Pérez 1120 04-05-2002 4433-ABB

Tabla Servicios

Número Fecha Tipo Cantidad Comentario DNI CIF

1 12-04-2004 Limpieza 300 21.123.123-

A

B11223212

2 22-05-2005 Fontanería 238 Arreglo

tuberías

12.321.567-

B

B22334466

Page 489: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

489

3 21-12-2005 Electricidad 130 Revisión

cableado

21.123.123-

A

B33221111

4 10-11-2006 Fontanería 250 12.321.567-

B

B11223212

Tabla Clientes

CIF Nombre Dirección Tfno 1 Tfno 2

B11223212 Seguros Segasa C/Ancha 2 956344334 629234323

B22334466 Academia La Plata C/La Plata 10 956302323

B33221111 Papelería Cuatro C/Larga 8 956305060

Si observas las tablas y sus claves foráneas, puedes llegar a conclusiones que

afectan a varias tablas. Por ejemplo:

Observando las tablas Coches y Trabajadores, puedes llegar a la conclusión de

que Ana conduce el SEAT y Juan el Citroen.

Observando las tablas Servicios, Clientes y Trabajadores, puedes llegar a la

conclusión de que el servicio de Fontanería 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 unión entre ellas (claves foráneas)

Page 490: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

490

Page 491: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

491

CONCLUSIÓN

Las Bases de Datos que se usarán son del tipo Relacional.

Una Base de Datos Relacional está formada por tablas, que son los elementos que

contienen la información.

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 foráneas en las tablas garantizan que se puedan

relacionar.

Page 492: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

492

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

aparición 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.

Básicamente, las relaciones Muchas a Muchas pueden ser anuladas convirtiéndolas 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 diseñada si

aparece alguna relación Muchas a Muchas.

Page 493: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

493

En esta hoja guiada se verá qué hacer cuando aparezca una relación Muchas a Muchas

Page 494: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

494

EJERCICIO GUIADO Nº 1

SUPUESTO “ACADEMIA”

Interesa almacenar cierta información sobre una academia. Concretamente se quiere

almacenar la siguiente información:

Interesa almacenar información sobre los alumnos de la academia. Interesa almacenar el

nombre del alumno, los apellidos, el DNI y la fecha de nacimiento.

Interesa almacenar información sobre los cursos que se da en la academia. Interesa

almacenar el código del curso, el nombre del curso, el número de horas y el nombre del

profesor que lo imparte.

En la academia hay una pequeña biblioteca. Interesa almacenar información sobre los

libros de esta biblioteca. Se almacenará el código del libro, el título, 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 préstamos.

PASO A MODELO ENTIDAD – RELACIÓN

1. Entidades participantes:

Page 495: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

495

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

Código del curso

Nombre del curso

Número de horas

Nombre del profesor

Libros

Código del libro

Título

Autor

Tema

Page 496: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

496

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 más relaciones en la base de datos.

4. Tipos de relaciones.

Veamos la relación “los alumnos hacen cursos”:

Un alumno puede apuntarse a muchos cursos. Por otro lado, en un curso se

apuntan muchos alumnos. Es una relación Muchas a Muchas:

Page 497: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

497

Veamos ahora la relación “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 también relación Muchas a Muchas:

5. Prohibición de las relaciones Muchas a Muchas.

Tal como se ha explicado al principio de la hoja guiada, las relaciones Muchas a

Muchas están prohibidas y tienen que ser eliminadas del Modelo Entidad Relación.

En nuestro caso tenemos dos relaciones Muchas a Muchas que serán

reconvertidas a relaciones Muchas a 1 (o 1 a Muchas) para hacerlas desaparecer.

Alumnos Libros M M

Alumnos Cursos M M

Page 498: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

498

6. Existencia de entidad intermedia.

La aparición de una relación Muchas a Muchas suele ser debido a un “mal diseño

de la base de datos”. Este mal diseño viene dado por la falta de información

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 desearíamos.

La aparición 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

información 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 aparición de la relación Muchas a Muchas:

Entidad 1 Entidad 2 M M

Entidad Intermedia

(ignorada)

Page 499: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

499

Así pues, cuando aparezca una relación Muchas a Muchas, tendremos que

averiguar cual es la entidad intermedia que sin querer hemos ignorado, y añadirla

al modelo. Al hacer esto la relación 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. Eliminación de la relación Muchas a Muchas “los alumnos hacen cursos”.

Cada vez que un alumno se apunta a un curso, se matricula, o dicho de otra

forma, rellena una matrícula, o dicho de otra forma, hace una reserva de plaza

para el curso.

Estas reservas o matrículas (o como quiera llamarlo) es la entidad intermedia que

habíamos pasado por alto, y que nos resuelve el problema de la relación Muchas a

Muchas.

Veamos que sucede si ponemos la entidad matrículas entre las entidades alumnos

y cursos.

Aparecen dos nuevas relaciones: “los alumnos se matriculan”, y “una matrícula es

para un curso”.

Alumnos Cursos Matrículas

Page 500: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

500

8. Estudio de las nuevas relaciones.

Cuando añadimos la entidad intermedia a la relación Muchas a Muchas, aparecen

dos relaciones nuevas que suelen ser del tipo 1 a Muchas.

Veamos:

Relación “los alumnos se matriculan”.

Un alumno puede matricularse muchas veces (se puede apuntar a muchos

cursos). Así pues un alumno realiza o rellena varias matrículas.

Sin embargo, una matrícula pertenece a un solo alumno.

Por tanto es una relación 1 a Muchas:

Relación “una matrícula es para un curso”.

Alumnos Cursos Matrículas M 1

Page 501: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

501

Cada vez que se rellena una matrícula es para un solo curso. (Si pudieras leer el

formulario que rellena el alumno, verías que en el papel se indica el curso al que

se apunta, y solo es uno)

Por otro lado, para un curso se rellenan varias matrículas (tantas como alumnos

quieren apuntarse al curso)

Por tanto es una relación 1 a Muchas:

9. Solución del problema Muchas a Muchas:

Finalmente, al descubrir la entidad intermedia de la relación Muchas a Muchas,

esta relación ha desaparecido y se ha convertido en dos relaciones 1 a Muchas,

solucionándose 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 número de matrícula, de forma que no haya dos

matrículas con el mismo número.

Alumnos Cursos Matrículas M 1 M 1

Page 502: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

502

En la entidad matrículas se puede almacenar otras informaciones, como por

ejemplo lo que paga el alumno por hacer el curso.

También se podría almacenar la nota final obtenida por el alumno.

Finalmente, también hay que asignar a la entidad intermedia las claves foráneas.

Recuerda que en las relaciones 1 a Muchas, hay que pasar la clave de la parte 1 a

la parte Muchas.

Si observas la relación…

…tendremos que pasar el campo DNI desde la entidad alumnos a matrículas, y el

campo código curso desde la entidad cursos a matrículas, debido a la regla

correspondiente a las relaciones 1 a Muchas.

Por lo tanto, la entidad Matrículas del ejemplo quedará con los siguientes atributos:

Matrículas

Número (atributo clave)

Pago

Nota final

Alumnos Cursos Matrículas M 1 M 1

Page 503: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

503

DNI (clave foránea de alumnos)

Código Curso (clave foránea de cursos)

11. Solución de la relación “libros son prestados a alumnos”

Veamos la solución de la otra relación problemática Muchas a Muchas:

12. Entidad intermedia…

Si estudiamos bien la relación entre alumnos y libros de la biblioteca, nos daremos

cuenta que existe una entidad intermedia que hace referencia a cada préstamo del

libro.

Es decir, la entidad intermedia que hemos pasado por alto es Préstamos, la cual

guardará información sobre los préstamos de los libros.

Con esta entidad, la relación queda así:

Alumnos Libros M M

Page 504: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

504

13. Estudio de las nuevas relaciones…

Relación Alumnos – Préstamos: “Los alumnos piden préstamos de libros”

Un alumno puede solicitar varios préstamos mientras está en la academia. Pero

cada préstamo en concreto se hace a un alumno: Relación 1 a Muchas.

Relación Préstamos – Libros: “Un préstamo es de un libro”

Un libro puede participar en muchos préstamos (realizados a distintos alumnos en

momentos diferentes), pero cada préstamo en concreto hace referencia a un libro

solamente. Relación 1 a Muchas.

Para entender estas relaciones, imagine que cada vez que se solicita un préstamo

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.

Alumnos Libros Préstamos M M 1 1

Alumnos Libros Préstamos

Page 505: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

505

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 “préstamo”. O aun mejor, se podría

hablar de “ficha de préstamos”.

14. Atributos de la nueva entidad.

Así pues, con la creación de la entidad préstamos se ha solucionado el problema

de la relación Muchas a Muchas.

Ahora hay que determinar los atributos que tendrá la nueva entidad préstamos.

Atributo clave.

Se puede asignar un número de préstamo a cada préstamo para distinguirlos entre

sí.

Claves foráneas.

Hay que añadir a la entidad préstamos los atributos DNI y código de libro, debido a

las reglas de claves foráneas 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.

Page 506: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

506

Se puede añadir a esta entidad atributos como fecha de préstamo, fecha de

devolución para controlar aún mejor la información de cada préstamo en concreto.

Por lo tanto, la entidad Préstamos del ejemplo quedará con los siguientes

atributos:

Préstamos

Número (atributo clave)

Fecha préstamo

Fecha devolución

DNI (clave foránea de alumnos)

Código Libro (clave foránea de libros)

15. Después de ha ver resuelto las dos relaciones problemáticas Muchas a Muchas, el Modelo Entidad Relación resultante será el siguiente (subrayados con línea continua los atributos clave, subrayados con rayas los atributos claves foráneas):

Page 507: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

507

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 Préstamos M M 1 1

Cursos

M

M

1

Matrículas

1

DNI

nombre

apellidos

fecha

DNI

DNI

código

curso

nombre

profesor

horas

código

curso

número

pago

nota

número

fecha fecha

código código

título

autor tema

Page 508: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

508

Page 509: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

509

CONCLUSIÓN

Al realizar el diseño de una Base de Datos pueden aparecer relaciones Muchas a

Muchas.

Las Relaciones Muchas a Muchas están prohibidas ya que pueden causar muchos

problemas.

Una relación Muchas a Muchas aparece debido a que hay una entidad intermedia

que no ha sido identificada.

Al añadir la entidad intermedia, desaparece la relación Muchas a Muchas y

aparecen dos relaciones 1 a Muchas, solucionándose el problema.

Será necesario añadir a la nueva entidad su atributo clave y las claves foráneas

debidas a las relaciones 1 a Muchas.

También puede ser interesante añadir a la nueva entidad atributos que aporten más

información a la base de datos.

Page 510: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

510

EJERCICIO GUIADO. BASES DE DATOS. ACCESS

Gestor de Base de Datos.

En las hojas guiadas anteriores se ha explicado como diseñar una base de datos.

Diseñar una base de datos consiste en organizar la información, en cierta manera caótica,

que nos proporciona el cliente que nos encarga el programa.

Para organizar dicha información usamos una representación gráfica denominada Modelo

Entidad Relación en la que representamos cada uno de los elementos que participan en la

base de datos (entidades), sus características principales (atributos) y las relaciones que

existen entre ellos.

Una vez finalizado el esquema Entidad Relación de la base de datos, se realiza una

representación en forma de tablas a partir de él.

Así pues, diseñar una base de datos consiste en tomar la información caótica

proporcionada por el cliente y organizar esta información en tablas.

El objetivo de esto, es facilitar la creación 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 además permite el mantenimiento de dichas tablas (añadir datos, eliminar datos,

modificar datos, realizar consultas, etc)

Page 511: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

511

Es necesario tener claro el diseño (organización en tablas) de la base de datos antes de

poder crear esta usando el programa gestor de base de datos elegido.

Microsoft Access

Existen múltiples programas gestores de bases de datos que se pueden usar para crear

las bases de datos de sus aplicaciones.

En los ejercicios guiados que vendrán a continuación se usará el gestor Microsoft Access,

el cual permitirá la creación de forma sencilla de bases de datos adecuadas para las

aplicaciones de base de datos que se realizarán en java.

Este programa permite la definición de las tablas, la creación 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

aplicación.

Por otro lado facilita mucho el manejo de la base de datos, la instalación de ésta en el

ordenador del cliente y las modificaciones posteriores, además de ser un gestor de base

de datos muy extendido y conocido.

En los ejemplos que vendrán a continuación, se usará la versión 2003 de Microsoft

Access.

Page 512: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

512

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.

Después de realizar el Modelo Entidad – Relación y de hacer el traspaso a tablas, el

resultado fue el siguiente:

Tabla Coches

Matrícula Marca Modelo Año DNI

Tabla Trabajadores

DNI Nombre Apellidos Sueldo Fecha Matrícula

Page 513: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

513

Tabla Servicios

Número Fecha Tipo Cantidad Comentario DNI CIF

Tabla Clientes

CIF Nombre Dirección 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 continuación:

1. Abra el programa Access.

Page 514: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

514

2. Para crear una base de datos nueva, active la opción 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.

Page 515: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

515

Page 516: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

516

4. La Base de Datos MANEMPSA debe contener cuatro tablas, las cuales crearemos a continuación. Para crear una tabla active la opción Crear Tabla en Vista Diseño en la ventana principal de Access:

5. La ventana que aparece a continuación nos permitirá definir los campos de la tabla que vamos a crear. Empezaremos creando la tabla Coches (que se muestra a continuación).

Tabla Coches

Matrícula Marca Modelo Año DNI

Para ello, haga lo siguiente:

Page 517: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

517

6. Introduzca el nombre del primer campo: “Matricula”, y a continuación 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 numéricos, como espacios, guiones, etc. Una matrícula es texto ya que contendrá letras, y puede ser representada con guiones, espacios, etc.

Page 518: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

518

7. En la parte inferior puede indicar el tamaño que asignará para introducir una matrícula. Por defecto aparece un valor de 50, pero este tamaño es exageradamente grande para una matrícula que no suele tener más de 10 caracteres, según 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 tamaño dejaremos 50.

Page 519: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

519

9. El siguiente campo es “Modelo”. Igualmente este campo será de tipo Texto debido a que contiene letras y dejaremos como tamaño 50.

10. El siguiente campo es “Año”. Este campo hace referencia al año de compra del coche, por lo que es un número. Así pues, elige en el tipo de datos la opción Número, que define aquellos campos que contendrán números válidos desde un punto de vista matemático.

En la parte inferior estará definido el tipo Entero largo, que indica que los números que se introduzcan en este campo serán de tipo entero y no tendrán decimales.

Page 520: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

520

11. El siguiente campo es el DNI. Se recuerda que este campo es una clave foránea, y hace referencia al DNI del trabajador que conduce este coche.

Es habitual confundirse y asignar el tipo de datos Numérico a un DNI, pero tenga en cuenta que un DNI contiene una letra, y puede contener espacios o guiones según la forma en que lo represente. Esto hace que un DNI no sea un número válido desde un punto de vista matemático. 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 tamaño del DNI será de 15:

Page 521: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

521

12. Ya están añadidos 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 matrícula, tal como se definió a la hora de crear el modelo e-r. Así pues, haz clic sobre matrícula y pulsa el botón con forma de llave amarilla, llamado Clave Principal. Aparecerá una llave pequeña al lado del campo y de esta forma el campo matrícula quedará marcado como campo clave.

13. El diseño de la tabla Coches está casi terminado, solo hay que darle el nombre y guardarla. Para

ello, cierra la ventana de diseño de la tabla e indica que quieres guardar los cambios.

14. Introduce el nombre de la tabla: “Coches”.

Page 522: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

522

15. Acabas de crear la primera tabla de la base de datos. En la ventana principal de Access verás 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á vacía, ya que acaba de ser creada. No introduzcas nada en la tabla.

Page 523: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

523

Page 524: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

524

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 diseño se muestra a continuación:

Tabla Trabajadores

DNI Nombre Apellidos Sueldo Fecha Matrícula

19. Active la opción Crear Tabla en Vista Diseño. 20. Introduzca el campo DNI. Su tipo de datos será Texto y pondremos un tamaño de 15:

21. Introduzca los campos Nombre y Apellidos. El tipo de datos será claramente Texto y el tamaño de cada uno lo dejaremos en 50.

Page 525: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

525

22. Introduzca el campo Sueldo. El tipo de datos que usaremos para este campo será Número, pero cambiaremos en la parte inferior el tipo de número de Entero Largo a Doble. El tipo de número Doble permitirá representar números con decimales:

Nota: Existe en Access un tipo de datos propio de aquellos campos que almacenarán

cantidades monetarias. Este tipo de datos se denomina Moneda, pero no será usado

en los ejemplos. En sustitución, se usará el tipo Número que cumple perfectamente

con el mismo cometido.

Page 526: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

526

23. Añade 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:

Page 527: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

527

24. Añade ahora el campo “Matrícula”.

Se recuerda que este campo es una clave foránea y hace referencia a la matrícula

del coche que conduce el trabajador. Este campo también 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 tamaño:

25. Haz que el campo DNI sea el campo clave:

Page 528: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

528

26. Cierra la ventana de diseño y guarda la tabla con el nombre Trabajadores:

Page 529: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

529

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 continuación:

Tabla Clientes

CIF Nombre Dirección Tfno 1 Tfno 2

Page 530: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

530

29. Activa la opción Crear Tabla en Vista Diseño.

30. Añade el campo CIF. Su tipo de datos será Texto (recuerda que lleva una letra) y asignaremos un tamaño de 15.

Page 531: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

531

31. Añade los campos Nombre y Dirección. Ambos campos serán claramente de tipo Texto. Asignaremos a ambos un tamaño de 100 caracteres.

32. Añade el campo “Tfno1” y asígnale el tipo de datos “Texto” y un tamaño de 15. Haz lo mismo con el campo “Tfno2”:

Nota: Los campos “Teléfonos” suelen causar mucha confusión, ya que se pueden definir

con el tipo de datos Número o Texto.

Page 532: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

532

Tenga en cuenta que si quiere almacenar un teléfono de esta forma:

956 30 30 30

o de esta otra:

(956) 30-30-30

Tendría que definirlo como Texto, ya que contiene caracteres no numéricos (los espacios,

los paréntesis, los guiones…)

Si, en cambio, define el teléfono como Número, solo podrá almacenar números así:

956303030

Sin poder usar ni espacios, ni guiones, ni otro carácter que no sea un dígito.

En el ejemplo se han definido como Texto para permitir el uso de caracteres no

numéricos.

33. Defina como campo clave el CIF:

Page 533: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

533

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 añadir la tabla “Servicios” a la base de datos. Se muestra esta tabla a continuación:

Page 534: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

534

Tabla Servicios

Número Fecha Tipo Cantidad Comentario DNI CIF

36. Activa la opción Crear Tabla en Vista Diseño.

Page 535: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

535

37. Añade el campo Número. Su tipo de datos será Autonumérico:

El tipo de datos Autonumérico hace que cada elemento que se añada a la tabla

tenga un número correlativo.

Este tipo de datos nos ahorra el tener que estar asignando un número cada vez

que se añada un servicio, ya que el número es asignado automáticamente.

El problema es que no podemos controlar el número que se asigna a cada

servicio. Por ejemplo, si el siguiente servicio debe tener el número 54 y queremos

asignarle el número 100, no podremos hacerlo.

Para nuestro ejemplo, el tipo de datos Autonumérico será suficiente.

38. Añade el campo Fecha. Su tipo de datos será Fecha / Hora, evidentemente.

39. Añade el campo Tipo. El tipo de la reparación es un texto, así que asigna el tipo de datos Texto. Su tamaño será de 50.

Page 536: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

536

40. Añade el campo Cantidad. Este campo hace referencia al coste de la reparación. Será un campo Numérico de tipo Doble, ya que puede llevar decimales.

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:

Page 537: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

537

42. Ahora hay que añadir los dos últimos campos, los cuales son claves foráneas que permitirán relacionar la tabla Servicios con las tablas Clientes y Trabajadores. Estos campos son el DNI y el CIF.

43. Añade el DNI. Tendrá que ser de tipo Texto y un tamaño de 15:

44. Ahora añade el CIF. Será también de tipo Texto y tendrá un tamaño de 15:

Page 538: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

538

45. Los campos están ya definidos. Ahora activa la opción 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.

Page 539: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

539

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:

Page 540: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

540

Luego cierra la ventana de introducción de coches.

49. Haz ahora doble clic sobre la tabla Clientes. Introduciremos los datos de varios de los clientes de la empresa:

Page 541: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

541

Después 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 números aparecen de forma automática en el campo Número, esto es debido al tipo de datos Autonumérico)

Page 542: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

542

51. Los datos que se introducen en una tabla se denominan registros, así pues, si la tabla Servicios contiene la información 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 vacías. 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 versión 2003 el

programa le hará varias preguntas, las cuales tendrá que contestar de la siguiente

forma:

Advertencia de seguridad, las expresiones no seguras no están bloqueadas

¿Desea bloquearlas? à NO

¿Desea abrir el archivo? à SI

¿Desea abrir el archivo o cancelar la operación? à Abrir

54. A la hora de programar una aplicación 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.

Page 543: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

543

NOTA. El programa Microsoft Access es muy amplio y contiene múltiples opciones de

manejo de bases de datos, aunque solo lo usaremos para la creación de tablas y de

consultas.

Se recomienda al alumno buscar información adicional sobre este programa. En Internet

podrá encontrar múltiples tutoriales de aprendizaje de Access.

Page 544: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

544

CONCLUSIÓN

La información caótica 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

diseñan 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 según necesites:

- Texto.

Campos que almacenarán todo tipo de caracteres, sobre todo letras.

- Número.

Campos que almacenarán solo dígitos numéricos.

Son números con un formato correcto desde el punto de vista matemático.

- Fecha / Hora.

Campos para almacenar fechas.

- Memo.

Campos para almacenar grandes cantidades de texto.

- Autonumérico.

Campo que contendrá números correlativos.

Page 545: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

545

Las tablas contendrán filas de información 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 aplicación java

de base de datos.

Page 546: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

546

EJERCICIO GUIADO. BASES DE DATOS. CONSULTAS EN ACCESS

Operaciones básicas en una base de datos

El trabajo con una base de datos consiste básicamente en hacer lo siguiente:

- Añadir nuevos registros a las tablas (guardar nueva información) - Eliminar registros de las tablas (eliminar información de la base de datos) - Modificar registros (modificar la información guardada) - Consultar las tablas.

Consultas

En esta hoja guiada nos centraremos en la realización de consultas.

Una consulta consiste en visualizar aquella información de la base de datos que cumple

determinados requisitos.

Por ejemplo, podría 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 mañana, etc…

Hay que tener en cuenta que las tablas de una base de datos contendrán mucha

información, pero no siempre necesitaremos acceder a toda ella. Por eso, la realización

de consultas es una acción habitual en una base de datos.

Page 547: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

547

Por otro lado, la creación de consultas nos permite averiguar determinada información

que no está tan accesible cuando la base de datos es muy grande.

Por ejemplo, podríamos querer ver quienes son los trabajadores que cobran más de una

cantidad de sueldo determinada, o qué clientes no han pagado determinadas ventas,

etc…

Consultas en Access

Access permite la creación 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.

Page 548: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

548

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 opción 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á)

Page 549: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

549

4. Para crear una consulta, activaremos la opción Crear Consulta en Vista Diseño.

5. Aparecerá un cuadro de diálogo inicial donde se tendrá que indicar la tabla o tablas que se quieren consultar:

No hay consultas

aún

Page 550: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

550

Page 551: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

551

6. Supongamos que queremos consultar la tabla Servicios. Por tanto, haga clic sobre ella y active el botón Agregar: Observará como aparece un recuadro en la parte superior izquierda con los campos de la tabla Servicios:

7. Como no queremos consultar más tablas podemos pulsar el botón Cerrar.

Aparece un recuadro con los

campos de la tabla Servicios

Page 552: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

552

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 añadir los campos Fecha, Tipo y Cantidad, que es la información que se quiere ver. Para ello, despliegue las casillas de la fila Campo hasta conseguir que aparezcan los tres campos:

Page 553: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

553

Page 554: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

554

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 selección en la consulta.

Accede a la casilla de Criterios que se encuentra debajo del campo Cantidad y

escribe allí la siguiente condición:

> 200

Observa:

Estamos indicando que solo se quiere visualizar aquellos servicios cuya cantidad

cobrada sea mayor de 200.

Page 555: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

555

Page 556: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

556

11. Básicamente, para hacer una consulta hay que indicar la tabla que se quiere consultar, los campos que se quieren visualizar y la condición que se tiene que cumplir:

12. Para ver el resultado de la consulta, puede pulsar el botón Vista que se encuentra en la parte superior izquierda de la ventana:

Tabla a consultar…

Campos a visualizar…

Condiciones

Page 557: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

557

13. Al hacer esto verá un listado con los servicios que costaron más de 200 euros. Observe que solo se visualiza la fecha, el tipo de servicio y la cantidad:

14. Puede hacer clic en el botón Vista de nuevo (que ahora ha cambiado de forma) para volver a la pantalla de diseño de la consulta:

15. Ahora estamos de nuevo dentro de la ventana de diseño:

Page 558: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

558

16. Vamos a mejorar un poco más la consulta. Interesaría que apareciera el nombre del trabajador que ha realizado el servicio, así pues hay que añadir una nueva tabla a la consulta: la tabla Trabajadores, ya que es esta tabla la que contiene dicho dato.

17. Para añadir una tabla a la consulta pulse el botón Mostrar Tabla:

Page 559: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

559

18. Aparecerá de nuevo el listado de tablas inicial:

19. Elige la tabla Trabajadores y pulse el botón Agregar. Observarás como aparece un nuevo recuadro en la parte superior izquierda con los campos de la tabla Trabajadores.

Page 560: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

560

20. La línea que aparece entre ambas tablas es la relación establecida a través del campo de unión DNI. Debido a que la tabla servicios tiene incluida la clave foránea DNI, ambas tablas pueden ser relacionadas.

Page 561: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

561

21. Una vez hecho esto, añade el campo Nombre de la tabla Trabajadores a la consulta (observa como se indica la tabla a la que pertenece, para que no haya confusión):

Relación entre las tablas Servicios y

Trabajadores a través del campo de unión

DNI.

Page 562: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

562

Page 563: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

563

22. Comprueba de nuevo el resultado de la consulta pulsando el botón Vista. Observa como ahora tenemos más información de cada servicio (ahora sabemos también el nombre del trabajador).

23. Vuelve a la ventana de diseño pulsando el botón Vista:

24. También sería interesante que apareciera el nombre del cliente al que se le ha realizado el servicio. Para ello, tendremos que añadir la tabla Clientes que es la que contiene este campo.

Activa de nuevo el botón Mostrar Tabla y agrega la tabla Clientes.

Page 564: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

564

25. Observa la relación automática que aparece entre Clientes y Servicios. Esto es gracias al campo de unión que es el campo CIF.

Page 565: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

565

26. Es posible reorganizar las tablas para que las relaciones se vean mejor. Haz clic sobre ellas y arrástralas hasta que queden en el orden Clientes – Servicios – Trabajadores:

27. Añade el campo Nombre de la tabla Clientes y comprueba el resultado.

Page 566: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

566

28. Vuelve a la vista de diseño.

Page 567: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

567

29. Una vez que una consulta está finalizada, la podremos guardar para usos posteriores. Para ello, cierra la consulta pulsando en el botón cerrar de la ventana de diseño.

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.

Page 568: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

568

32. Vuelve a la ventana principal cerrando la ventana de visualización de la consulta.

Page 569: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

569

33. En Access puedes diseñar y guardar todas aquellas consultas que puedan resultar más interesantes para el trabajo diario.

Las consultas, aunque no son tablas, se comportan como tal. Básicamente, se

puede decir que una consulta es una subtabla, que muestra una parte de la

información de la base de datos.

Page 570: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

570

CRITERIOS EN CONSULTAS

En el ejercicio guiado anterior, se realizó una consulta que mostraba los servicios de más

de 200 euros de coste. Para ello, en la vista diseño de la consulta se agregó lo siguiente:

Campos Coste

Criterios >200

A continuación se muestran otras formas de indicar criterios en las consultas

Criterios para campos numéricos

Campos Coste

Criterios 200

Buscar aquellos registros cuyo Coste sea igual a 200

Page 571: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

571

Campos Coste

Criterios >200

Campos Coste

Criterios >=200

Campos Coste

Criterios <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

Page 572: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

572

Campos Coste

Criterios <=200

Buscar aquellos registros cuyo Coste sea menor o igual a 200

Page 573: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

573

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 numéricos, 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)

Buscar aquellos registros cuyo Coste sea distinto de 200

Buscar aquellos registros cuyo Coste esté entre 200 y 300

Page 574: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

574

< 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 búsquedas más

extensas. Observa los siguientes ejemplos:

Campos Nombre

Criterios José Manuel

Buscar aquellos registros cuyo Nombre sea exactamente José

Manuel:

- Encontraría a los que tengan de nombre José Manuel. - No encontraría a los que se llamaran José a secas, o

Buscar aquellos registros cuyo Nombre empiece por José:

- Encontraría a los José Manuel, José María, José Luis, etc.

Page 575: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

575

Campos Nombre

Criterios José*

Campos Nombre

Criterios *José

Campos Nombre

Criterios *José*

Criterios complejos

Buscar aquellos registros cuyo Nombre termine en José:

- Encontraría a los Manuel José, Antonio José, María José,

Buscar aquellos registros cuyo Nombre contenga la palabra

José en cualquier parte:

Page 576: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

576

Si se quiere buscar a aquellos registros que cumplan varios criterios a la vez, tendrán 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 colocándolos 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

Busca aquellas personas que tengan un nombre que

termine en José y cobren más de 1000 euros.

Muestra aquellas personas que tengan un nombre que

termine en José y cobren más de 1000 euros.

Muestra también aquellas personas que cobran 300 euros

Page 577: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

577

NOTA. La creación de consultas en Microsoft Access es un campo amplio. Se recomienda

al alumno buscar información adicional sobre el tema. En Internet podrá encontrar

múltiples tutoriales de aprendizaje de Access.

Page 578: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

578

CONCLUSIÓN

Una consulta muestra una parte de información de toda la base de datos.

Se muestran determinados campos y también aquellos registros que cumplan un

criterio determinado.

En Access se pueden diseñar 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 básicamente hay que seguir tres pasos:

- Indicar las tablas que contienen los campos necesarios.

- Indicar los campos que se quieren visualizar.

- Indicar el criterio de selección de registros.

Las relaciones creadas en Access y almacenadas pueden ser usadas luego desde

la aplicación programada en Java, como si fueran tablas normales y corrientes.

Page 579: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

579

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):

- Añadir registros a las tablas. - Modificar registros de las tablas. - Eliminar registros de las tablas. - Realizar Consultas sobre las tablas.

Gracias a este lenguaje, se construirán órdenes desde nuestra aplicación java, que se

aplicarán a la base de datos, actuando sobre ella.

Las órdenes de añadir, modificar, eliminar realizan cambios dentro de la base de datos,

pero no devuelven nada al programa java.

Programa

Java

Base de

Datos

ÓRDENES SQL

Page 580: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

580

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 aplicación tiene dominio total sobre la base de datos.

Puede actuar sobre ella introduciendo nuevos datos, o modificando los que había, o

eliminándolos. También puede extraer información de ella accediendo a las consultas de

la base de datos o realizando nuevas consultas.

A continuación se comentarán las reglas básicas de este lenguaje.

Creación de consultas en SQL

Se empezará estudiando como realizar consultas sobre una base de datos usando el

lenguaje SQL (más adelante se verá como realizar consultas de acción: añadir, modificar

eliminar)

Programa

Java

Base de

Datos

Consulta SQL

Resultado de la consulta

Page 581: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

581

Código base en SQL para realizar consultas

Para consultar una base de datos usará un código 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.

Se debe mantener el orden indicado. Es decir, primero SELECT, luego FROM, luego

WHERE y luego ORDER BY.

Este código debe terminar siempre con punto y coma ;

A continuación se verán ejemplos de uso de este código general.

Visualizar una tabla entera (todos los campos y todos los registros)

Ejemplo: “Visualizar la tabla Clientes”

Page 582: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

582

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 cláusula SELECT. Se indica la

tabla y luego el nombre del campo, separados por un punto.

Page 583: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

583

Visualizar solo aquellos registros de la tabla que cumplan una condición

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 cláusula WHERE para aplicar una condición 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. Más adelante en este ejercicio guiado se muestran las distintas posibilidades

que tenemos a la hora de indicar criterios en la cláusula WHERE

Page 584: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

584

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 cláusula 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;

Observa el uso de DESC para indicar una ordenación descendente.

Page 585: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

585

Ejemplo: “Visualizar nombre, apellidos y sueldo de los trabajadores que cobren más 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 serán 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;

Page 586: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

586

Observa aquí como se indica en la cláusula FROM las dos tablas de las que extraemos

datos. Es importante que te fijes también en como se unen ambas tablas igualando en la

cláusula WHERE el campo de unión 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 cláusula WHERE los campos de unión. La tabla Trabajadores se

relaciona con la tabla Servicios a través del campo DNI, y la tabla Trabajadores se

relaciona con Clientes a través del campo CIF. Observa el uso de AND para unir varias

condiciones.

Ejemplo: “Visualizar los servicios que hayan costado más 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;

Page 587: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

587

Observa como la cláusula WHERE contiene por un lado la condición de unión de ambas

tablas y por otro lado la condición que se busca (cantidad > 200)

FORMA DE INDICAR CRITERIOS EN LA CLÁUSULA WHERE

Se van a indicar a continuación una serie de reglas que se deben seguir a la hora de crear

condiciones en la cláusula 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 números)

Posterior a

WHERE cantidad > 200

WHERE fecha > #8-5-2006#

Page 588: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

588

(para fechas)

>= Mayor o igual que

(para números)

Esa fecha o posterior

(para fechas)

WHERE cantidad >= 200

WHERE fecha >= #8-5-2006#

< Menor que

(para números)

Anterior a

(para fechas)

WHERE cantidad < 200

WHERE fecha < #8-5-2006#

<= Menor o igual que

(para números)

Esa fecha o anterior

(para fechas)

WHERE cantidad <= 200

WHERE fecha <= #8-5-2006#

<> Distinto de

(para fechas, números y

textos)

WHERE cantidad <> 200

WHERE fecha <> #8-5-2006#

WHERE tipo <> ‘Limpieza’

Page 589: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

589

Between...and Entre valor1 y valor2

(aplicable a números 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’

Page 590: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

590

Like ‘*cadena*’ Que contenga cadena

(aplicable a textos)

WHERE nombre LIKE ‘*Jose*’

IS NULL Que el campo esté vacío

(aplicable a números, textos,

fechas)

WHERE telefono IS NULL

NOT ... IS NULL Que el campo no esté vacío

(aplicable a números, textos,

fechas)

WHERE NOT telefono IS NULL

Operadores Lógicos

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

Page 591: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

591

de servicio sea Limpieza para que se cumpla la condición)

NOT

Si no se cumple la

condición, la condición

global se cumple.

WHERE NOT cantidad > 200

(Se cumple la condición si la cantidad NO es mayor de

200)

Forma de indicar los valores

Como puedes observar en los ejemplos anteriores, tendrás que tener en cuenta las

siguientes reglas para indicar valores:

Valores numéricos

Indica los valores numéricos 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 rodeándolos entre comillas simples: ‘

Page 592: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

592

Ejemplos:

WHERE nombre = ‘Jose’

WHERE dirección LIKE ‘*avenida*’

Valores de fecha

Las fechas se indican rodeándolas 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 – Año

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)

Page 593: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

593

Forma de indicar los campos

Normalmente los campos que se usan en el WHERE (y en otras cláusulas) se indican de

la siguiente forma:

Tabla.Campo

Por ejemplo,

WHERE trabajadores.sueldo > 1000

(Sueldo es un campo de la tabla trabajadores)

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.

Page 594: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

594

Por ejemplo,

WHERE [sueldo del trabajador] > 1000

(El campo se llama sueldo del trabajador)

Page 595: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

595

EJERCICIO GUIADO Nº 1

ACCESS permite la creación 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 opción 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 opción Crear una consulta en vista Diseño:

Page 596: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

596

4. En el cuadro de elección de tablas no agregaremos ninguna. Así pues pulsaremos directamente el botón Cerrar.

Page 597: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

597

5. El resultado es que aparece la ventana de diseño de consultas. En la parte superior izquierda de esa ventana podrás ver un botón con el texto SQL. Este botón nos permitirá crear la consulta usando el lenguaje SQL. Púlsalo.

6. Aparecerá una pantalla casi en blanco donde escribirá la consulta SQL. Observe que ya aparece la cláusula SELECT escrita:

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 botón Vista que se encuentra en la parte superior izquierda de la ventana:

Page 598: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

598

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 botón Vista y activar de nuevo la opción SQL:

Page 599: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

599

11. De esta manera entrará de nuevo en el editor de consultas SQL de Access, donde aún 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 botón Vista para ver el resultado de la consulta. Observa como ahora solo vemos los campos indicados:

Page 600: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

600

14. Vuelve a la zona de edición 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 añadido una cláusula where, para buscar solo aquellos

trabajadores cuyo apellido termine en ez.

15. Comprueba el resultado:

Page 601: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

601

Page 602: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

602

16. Vuelve a la zona de edición 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 añadir en el WHERE una condición que

iguale el campo de unión entre la tabla trabajadores y la tabla servicios. Este

campo de unión 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 inclusión en el FROM de la tabla servicios, y como se ha añadido una

condición de unión entre la tabla trabajadores y servicios a través del campo DNI)

17. Visualiza el resultado de la consulta (botón Vista) Aparecerá lo siguiente:

Page 603: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

603

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

18. Vuelve a la vista de edición SQL. Vamos a complicar aún más la consulta. Esta vez vamos a hacer que aparezca el nombre del cliente al que se le hizo el servicio.

Esto implica la inclusión de una nueva tabla (clientes) y la necesidad de relacionar

la tabla servicios con la tabla clientes según el modelo E-R de esta base de datos.

El campo de unión 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

Page 604: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

604

WHERE trabajadores.apellidos LIKE '*ez' AND trabajadores.DNI=servicios.DNI AND

servicios.CIF=clientes.CIF;

(Observa la inclusión de la tabla clientes en la cláusula FROM, y la adición de una

nueva condición de unión, entre la tabla servicios y la tabla clientes en la cláusula

WHERE. Esta condición de unión 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 información incluida en tres

tablas distintas: trabajadores, servicios y clientes.

Page 605: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

605

20. Vuelve a la zona de diseño SQL. Añadiremos una última modificación a la consulta y la finalizaremos.

Ahora estableceremos un orden. Concretamente, ordenaremos el resultado de la

consulta según apellidos del trabajador. Para ello tendremos que añadir una

cláusula 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;

Page 606: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

606

21. Ejecuta la consulta y observa el resultado. Ahora el listado de servicios aparece ordenado según el apellido del trabajador que lo realiza, alfabéticamente.

22. Hemos finalizado con la consulta. Ciérrela y guárdela. 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 aplicación java manipule la base de datos correspondiente.

NOTA.

Page 607: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

607

En Internet se pueden encontrar múltiples manuales sobre SQL. Se recomienda buscar

información sobre el tema para ampliar los conocimientos aquí expuestos.

La sintaxis del lenguaje SQL puede variar según 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 mínimas.

Page 608: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

608

CONCLUSIÓN

El lenguaje de consulta SQL permite manipular la base de datos.

A través 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 unión 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.

Page 609: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

609

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 información 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):

- Añadir nuevos registros a una tabla. - Eliminar registros de una tabla. - Modificar datos de una tabla.

En esta hoja guiada veremos como ejecutar instrucciones SQL que permitan añadir,

eliminar o modificar registros de las tablas de la base de datos.

Programa

Java

Base de

Datos

ÓRDENES SQL

Page 610: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

610

Page 611: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

611

Alta de registros en SQL

Se empezará estudiando como añadir nuevos registros en una base de datos usado el

lenguaje SQL.

Código base en SQL para añadir nuevos registros

Para añadir un registro en una tabla se usa la siguiente sintaxis:

INSERT INTO tabla

VALUES (valor1, valor2, valor3, ..., valor n);

En la cláusula INSERT INTO se indica la tabla que en la que se quiere introducir una

nueva fila (registro), y en la cláusula VALUES se indican los valores de la fila que se

quiere insertar. Estos valores tienen que estar indicados en el orden en el que están

definidos los campos en la tabla correspondiente.

Por ejemplo:

INSERT INTO trabajadores

VALUES (’30.234.234-A’, ‘María’, ‘ López’, 1250.45, #01/02/2006# ‘4455-RSD’);

En esta instrucción se está introduciendo un nuevo trabajador en la tabla trabajadores.

Concretamente se está introduciendo un trabajador con las siguientes características:

DNI: 30.234.234-A

Page 612: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

612

Nombre: María

Apellidos: López

Sueldo: 1250,45

Fecha de entrada: 02/01/2006

Matrícula: 4455-RSD

Los valores están indicados en el mismo orden en el que están los campos en la tabla:

DNI, Nombre, Apellidos, Sueldo, Fecha, Matrícula.

Si se quiere introducir un nuevo registro, pero indicando solo los valores de algunos

campos, se puede usar entonces esta otra sintaxis para la instrucción 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 quedarán vacíos.

Por ejemplo:

INSERT INTO trabajadores

(DNI, Apellidos, Sueldo)

VALUES (’30.234.234-A’, ‘ López’, 1250.45);

Page 613: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

613

En este caso introducimos a un trabajador de apellido López, con DNI 30.234.234-A que

cobra 1250,45 euros. Tanto la matrícula 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: ‘López’

Se usa el punto decimal en los números reales: Por ejemplo: 1250.45

Las fechas se indicarán entre almohadillas # y hay que indicar primero el mes, luego el

día y finalmente el año. Por ejemplo: #12-20-2007# es 20 de diciembre de 2007.

En el caso de querer especificar explícitamente que un campo esté vacío, se puede

indicar el valor NULL.

Ejemplo:

INSERT INTO trabajadores

(DNI, Apellidos, Sueldo)

VALUES (’30.234.234-A’, NULL, 1250.45);

Page 614: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

614

Los apellidos del trabajador están vacíos en este ejemplo.

Page 615: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

615

EJERCICIO GUIADO Nº 1

1. Entra en la base de datos MANEMPSA de la carpeta Mis Documentos.

2. Crearemos una consulta SQL para añadir registros a la tabla trabajadores. Para ello, accede a la zona de consultas.

3. Crea una consulta en vista Diseño y no agregues ninguna tabla. Simplemente pulsa el botón Cerrar.

Page 616: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

616

4. Pulsa el botón SQL que se encuentra en la parte superior izquierda de la ventana para crear una consulta SQL.

5. Aparecerá entonces el editor de consultas SQL. En él, escribe la siguiente instrucción SQL:

INSERT INTO trabajadores

VALUES ('33.444.333-B','Antonio','Romero',1300.5,#01/02/2006#,NULL);

Page 617: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

617

Verás 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 cláusula VALUES se indica la fecha en formato mes-dia-año)

Matrícula de su coche: No se indica (NULL)

6. Este tipo de consulta es de acción. Esto significa que no debe mostrar nada, simplemente ejecuta una acción sobre la base de datos (en este caso, añadir un registro nuevo en la tabla trabajadores) Para ejecutar esta consulta de acción activa el botón Ejecutar:

7. Access avisará de que vas a añadir un nuevo registro, y te pide confirmación. Acepta la acción:

Page 618: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

618

8. Se acaba de ejecutar la consulta. Para comprobar el resultado tendremos que ver el contenido de la tabla Trabajadores y observaremos que hay un nuevo trabajador añadido. Primero cierra la consulta, pero no la guardes.

9. Accede a la zona de tablas de la base de datos.

Page 619: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

619

10. Abre la tabla trabajadores. Observa el nuevo trabajador que se ha añadido:

11. Cierra la base de datos.

Page 620: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

620

Modificación 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 condición en concreto.

Código base en SQL para modificar registros

Para modificar los datos de los registros de una tabla se usará el siguiente código general:

UPDATE tabla a modificar

SET campo1 = nuevovalor1, campo2 = nuevovalor2, …, campon = nuevovalorn

WHERE condición;

En la cláusula UPDATE se indica la tabla cuyos registros se van a modificar.

La cláusula SET permite indicar los cambios que se realizarán. 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 cláusula WHERE permite indicar una condición. Esto hará que solo se cambien los

valores de aquellos registros que cumplan la condición. La cláusula WHERE es opcional,

y si no se indicara se cambiarían todos los registros de la tabla.

Ejemplo:

UPDATE trabajadores

Page 621: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

621

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 matrícula 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 cláusula WHERE.

Si se quisiera hacer un cambio puntual a un registro en concreto, tendremos que hacer

uso de su campo clave para indicar la condición. Recuerda que el campo clave es el que

identifica de forma única a un registro de la tabla.

Por ejemplo:

UPDATE trabajadores

SET sueldo = 1300

WHERE DNI=’33.444.333-A’;

Page 622: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

622

En este ejemplo se estoy asignando un sueldo de 1300 al trabajador con DNI 33.444.333-

A, y a ningún otro (ya que se supone que no habrá otro con dicho DNI)

Page 623: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

623

EJERCICIO GUIADO Nº2

1. Entra en la base de datos MANEMPSA.

2. Accede a la zona de consultas y crea una consulta en vista diseño.

3. No agregues ninguna tabla y pulsa directamente el botón Cerrar.

4. Pulsa el botón SQL para entrar en la zona de edición de consulta SQL.

5. Escribe la siguiente instrucción SQL:

UPDATE trabajadores

SET sueldo = 800, matricula=’1111-AAA’

WHERE DNI=’33.444.333-B’;

Como puedes observar, en esta instrucción 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 añadimos en el ejercicio guiado anterior.

Page 624: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

624

6. Ejecuta esta consulta de acción pulsando el botón Ejecutar:

7. Access avisará de que va a actualizar una fila en la tabla trabajadores y pedirá confirmación para hacerlo. Acepte la confirmación.

8. El resultado de esta instrucción SQL de acción es que se habrán 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:

11. Cierra la base de datos.

Page 625: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

625

Eliminación de registros en SQL

Al igual que podemos añadir nuevos registros (filas) a las tablas usando SQL, también

podemos usar este lenguaje para eliminar registros de las tablas.

Código base en SQL para eliminar registros

Para eliminar registros de una tabla se usará el siguiente código general:

DELETE FROM tabla de la que se quiere eliminar

WHERE condición de los registros que se eliminarán;

En la cláusula DELETE FROM se indica la tabla de la que eliminaremos registros.

En la cláusula WHERE se indica la condición que deben cumplir los registros que

eliminaremos.

Por ejemplo:

DELETE FROM trabajadores

WHERE sueldo>1000;

En este ejemplo se están eliminando de la tabla trabajadores aquellos trabajadores cuyo

sueldo sea superior a 1000.

Page 626: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

626

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

condición:

DELETE FROM trabajadores

WHERE DNI=’33.444.555-A’;

Esta instrucción 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 cláusula WHERE de una instrucción 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 instrucción

DELETE sin indicar ninguna condición. Por ejemplo:

DELETE FROM trabajadores;

Esta instrucción eliminaría todos los registros de la tabla trabajadores.

Page 627: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

627

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 diseño.

13. No agregues ninguna tabla y pulsa directamente el botón Cerrar.

14. Pulsa el botón SQL para entrar en la zona de edición de consulta SQL.

15. Escribe la siguiente instrucción SQL:

DELETE FROM trabajadores

WHERE DNI = '33.444.333-B';

Como puedes observar, esta instrucción eliminará al trabajador con DNI

33.444.333-B, que es precisamente el trabajador que se añadió en el ejercicio

guiado 1.

16. Ejecuta esta instrucción de acción activando el botón Ejecutar:

Page 628: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

628

17. Access avisará de que va a eliminar una fila de la tabla trabajadores, y pedirá confirmación. Confirme la eliminación.

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.

Page 629: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

629

CONCLUSIÓN

El lenguaje de consulta SQL no solo permite extraer información de una base de

datos, sino que también 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 instrucción SQL llamada

INSERT INTO

Para eliminar datos de la base de datos usará la instrucción SQL llamada DELETE

Para modificar datos de la base de datos usará la instrucción SQL llamada UPDATE

Page 630: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

630

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS

Acceso a Base de Datos desde una aplicación 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 información 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 añadir nuevos datos, o modificar datos,

eliminar datos, o extraer datos según lo ordene el usuario del programa.

En esta hoja guiada, se verán los pasos necesarios para conectar un proyecto java con un

fichero de base de datos creado en Access.

Pasos Generales para preparar una Aplicación Java para acceder a una Base de

Datos

Para preparar nuestra aplicación 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)

Page 631: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

631

En nuestro caso, tendremos que indicar el controlador para base de datos de Access.

2. Crear un objeto conexión (Connection)

Para crear este objeto hay que indicar la situación del fichero de base de datos, el usuario

y la contraseña de dicha base de datos. El objeto conexión abre el fichero de la base de

datos.

3. Crear un objeto sentencia (Statement)

El objeto sentencia se crea a partir del objeto conexión anterior. Los objetos sentencia

permiten realizar acciones sobre la base de datos usando instrucciones SQL.

Es decir, a través 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 manipulación de dicha base de datos.

Page 632: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

632

EJERCICIO GUIADO Nº 1

PLANTEAMIENTO

En este ejercicio se pretende crear una pequeña aplicación 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 añade un botón con el texto Ver Datos Trabajadores que se llame btnVerDatos.

Page 633: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

633

3. Se pretende simplemente que al pulsar el botón btnVerDatos aparezcan en un JOptionPane datos sobre los trabajadores almacenados en la base de datos.

SITUACIÓN DEL FICHERO DE BASE DE DATOS

4. Antes de empezar con la programación de nuestra aplicación, 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 estés guardando tus proyectos:

Page 634: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

634

5. Entra dentro de esta carpeta y observarás una serie de carpetas creadas por el propio NetBeans. (Entre ellas, la más interesante es la llamada src, la cual es la que contiene los ficheros con el código 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í:

Page 635: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

635

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 extensión 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 aplicación de bases de datos Java.

9. Ahora ya podemos volver al NetBeans y continuar con nuestro trabajo.

Page 636: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

636

PREPARACIÓN DE LA APLICACIÓN JAVA 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 conexión 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:

Aparecerán subrayados ya que será necesario indicar el import para las clases

Connection y Statement. Estos import son respectivamente:

java.sql.Connection

Page 637: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

637

y

java.sql.Statement

Agrega los import correspondientes para eliminar los errores.

12. Una vez definidos los objetos conexión 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, añade al constructor una llamada a una función PrepararBaseDatos:

Page 638: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

638

14. Crea el método PrepararBaseDatos debajo del constructor y empieza a programar lo siguiente:

El código 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 través de la siguiente cadena de texto:

sun.jdbc.odbc.JdbcOdbcDriver

Y la forma de activar dicho controlador es a través de la instrucción:

Page 639: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

639

Class.forName(controlador).newInstance();

Donde controlador es una variable de cadena que contiene la cadena anterior.

Básicamente, lo que hacen estas dos líneas de código, 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, habría 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.

También puedes observar que es obligatorio encerrar el código de la carga del

controlador entre try … catch para capturar cualquier error imprevisto.

15. Ahora añade el siguiente código a continuación del anterior:

Page 640: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

640

El código que acabas de añadir se corresponde con el segundo paso para acceder a una base de

datos: Crear el objeto Conexión.

El objeto conexión es el que efectúa la conexión real con la base de datos. Se podría decir que es

el objeto que permite abrir la puerta del fichero de base de datos para entrar en él. Para construir

este objeto conexión (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 ningún nombre de usuario, por eso verás la instrucción:

String user = “”;

• El password del usuario que manipulará la base de datos. En el caso de Access tampoco necesitaremos ningún password, por eso verás la instrucción:

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 información 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="

Page 641: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

641

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

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 código podrás ver la creación de la DSN:

String DSN = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+

"Base\\MANEMPSA.MDB";

Finalmente se usa la instrucción

conexion=DriverManager.getConnection(DSN,user,password);

para crear la conexión. Será necesario añadir un import para la clase DriverManager.

Al igual que con el primer paso, es necesario rodear la creación de la conexión con un try…catch

para capturar cualquier error inesperado que se pueda producir en este paso.

16. Ahora añade el siguiente código a continuación del anterior:

Page 642: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

642

Este código que acabas de añadir se corresponde con el tercer paso necesario para

poder acceder a una base de datos: Creación 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 preparación.

El objeto sentencia se crea a partir del objeto conexión creado en el paso anterior, usando

la siguiente instrucción:

sentencia=conexion.createStatement(

ResultSet.TYPE_SCROLL_INSENSITIVE,

ResultSet.CONCUR_READ_ONLY);

Y como sucedió en los dos pasos anteriores, es necesario rodear esta instrucción con un

try…catch para capturar cualquier tipo de error inesperado que se pudiera producir.

Page 643: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

643

17. Así pues ya tenemos preparado nuestro programa para acceder a la base de datos. Esta preparación se realiza en el momento en que se ejecuta el programa, ya que hemos introducido este código en el constructor.

Es cierto que este código 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 código queda igual.

Observa:

El método PrepararBaseDatos

siempre será igual, solo cambiará el

nombre de la base de datos a usar.

Page 644: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

644

18. El objetivo de todo este código de preparación para el acceso al fichero de la base de datos es obtener un objeto llamado sentencia que nos posibilitará la manipulación de los datos de la base de datos, usando órdenes SQL.

En este ejercicio guiado usaremos el objeto sentencia para averiguar información

acerca de los trabajadores.

Page 645: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

645

REALIZAR CONSULTAS SQL USANDO EL OBJETO SENTENCIA

19. Cuando se pulse el botón Ver Datos de Trabajadores tendremos que extraer los datos de la tabla trabajadores para poder mostrarlos. Para ello, escribe el siguiente código dentro del evento actionPerformed del botón btnVerDatos:

Observa el código:

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.

Page 646: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

646

Se usa el método 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 método executeQuery recibe como parámetro 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 ejecución de una consulta SQL

con un try…catch para capturar errores inesperados al realizar la consulta.

Page 647: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

647

LOS OBJETOS 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 extraído toda la tabla trabajadores. Por tanto nuestro ResultSet contiene toda la tabla trabajadores.

El objeto r por tanto podría 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 López 1000 01/06/2006 1144-BBB

12.321.567-B Juan Pérez 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 posición actual donde estamos situados dentro de la tabla del

ResultSet.

Page 648: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

648

22. Añade la siguiente línea al código del actionPerformed:

El método 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 posición)

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 López 1000 01/06/2006 1144-BBB

12.321.567-B Juan Pérez 1120 04/05/2002 4433-ABB

EOF

23. Ahora que estamos situados en la posición del primer trabajador (Ana), podemos extraer información referente a sus campos. Añade el siguiente código al actionPerformed del botón:

Page 649: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

649

Lo que se ha hecho primero es declarar una variable de cadena llamada info.

Luego, a esta variable se le ha asignado una concatenación de cadenas:

info="El trabajador se llama "+r.getString("nombre")+" "+r.getString("apellidos")+

" y cobra "+r.getString("sueldo");

Lo interesante de esto es el método getString del objeto ResultSet r. El método

getString permite extraer una cadena con el valor del campo indicado como

parámetro.

Page 650: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

650

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.

Page 651: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

651

24. Ya puedes ejecutar el programa.

25. Sigamos haciendo cambios en el código del botón para entender mejor el funcionamiento de los ResultSet. Añade la siguiente línea:

Pulsa el botón…

Y aparecerá

información sobre el

primer trabajador de la

base de datos

Page 652: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

652

Page 653: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

653

26. Se ha añadido 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 López 1000 01/06/2006 1144-BBB

12.321.567-B Juan Pérez 1120 04/05/2002 4433-ABB

EOF

27. Esto quiere decir que si se ejecuta el programa se mostrará información sobre Francisco López. Compruébalo:

Page 654: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

654

28. Los objetos ResultSet poseen diversos métodos para cambiar la posición actual en la tabla del ResultSet. Dicho de otro modo: “para mover la flecha”. Veamos algunos de estos métodos (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

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.

Page 655: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

655

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 mostrarán los datos del último

trabajador. Compruebalo.

Trabajadores

DNI Nombre Apellidos Sueldo Fecha Matricula

BOF

Page 656: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

656

Trabajadores

DNI Nombre Apellidos Sueldo Fecha Matricula

21.123.123-A Ana Ruiz 1200 02/03/2002 3322-ASR

22.333.444-C Francisco López 1000 01/06/2006 1144-BBB

12.321.567-B Juan Pérez 1120 04/05/2002 4433-ABB

EOF

Page 657: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

657

30. Otro experimento. Cambie ahora el código de esta forma:

Este código 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. Compruébalo.

Page 658: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

658

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 López 1000 01/06/2006 1144-BBB

12.321.567-B Juan Pérez 1120 04/05/2002 4433-ABB

EOF

Page 659: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

659

31. Como ves, podemos movernos dentro del contenido del ResultSet gracias a todos estos métodos, 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 información de todos sus registros.

32. Vamos a modificar nuestro código para que se muestren todos los trabajadores del ResultSet. Para ello, realiza el siguiente cambio:

En este código se ha inicializado la variable info a la cadena vacía “” y luego se ha

añadido un bucle bastante interesante:

r.beforeFirst();

while (r.next()) {

info=info+r.getString("nombre")+" "+r.getString("apellidos")+"

"+r.getString("sueldo")+"\n";

}

Page 660: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

660

Analicemos este bucle:

- Lo primero que se hace es colocar explícitamente 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 método next intenta colocar la flecha en la siguiente fila, y si lo hace bien,

devuelve el valor verdadero. Cuando no se puede avanzar más, el método next

devolverá falso.

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, básicamente veremos una concatenación 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.

Page 661: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

661

33. Ejecuta el programa y comprueba su funcionamiento.

34. El bucle que acabas de programar es un código “clásico” para manipular un ResultSet. Siempre que quieras recorrer todas las filas del ResultSet harás algo como esto:

r.beforeFirst();

while (r.next()) {

manipulación de la fila

}

Al pulsar el botón…

Aparecen los datos de todos

los trabajadores de la base

Page 662: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

662

35. Se ha visto que para obtener un dato de la fila actual se usa el método getString indicando como parámetro el dato que se quiere obtener.

Por ejemplo:

r.getString(“sueldo”);

Obtiene el sueldo del trabajador señalado actualmente con la flecha. Este sueldo

se obtiene convertido en cadena.

36. Los ResultSet poseen otros métodos para obtener los datos convertidos en números 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 extraídos del ResultSet.

37. Como ejemplo de esto último, realice la siguiente mejora al programa:

Page 663: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

663

En este nuevo código se ha añadido 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 numérica, en vez de usar

getString:

totalsu=totalsu+r.getDouble("sueldo");

Y finalmente usamos otro JOptionPane para ver la suma de los sueldos calculada.

Page 664: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

664

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 “conexión” con la base de datos.

Para hacer esto se usa el método close del objeto conexión.

Esto se hará en el momento en que se finalice el programa, es decir, en el evento

windowClosing de la ventana principal:

Como ves, también hay que encerrar este código entre try…catch para evitar

posibles errores.

Page 665: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

665

CONCLUSIÓN

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 crearán dos objetos: conexión (Connection) y sentencia (Statement)

* Se cargará el controlador del tipo de base de datos a usar

* Se creará el objeto conexión indicando el fichero de la base de datos.

* Se creará el objeto sentencia a partir del objeto conexión

- 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

Page 666: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

666

* Los objetos ResultSet tienen métodos para seleccionar el registro de la

tabla

* Los objetos ResultSet tienen métodos que permiten extraer el dato de un

campo en concreto.

Page 667: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

667

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS

Recapitulando…

Para hacer una aplicación 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 recogerán

en objetos ResultSet que contendrán los datos devueltos por la consulta. - Cerrar la conexión a la base de datos cuando ya no haya que usarla más.

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 información

colocándonos en la fila correspondiente del ResultSet y luego usando los métodos:

getString

getDouble

getInt

Page 668: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

668

según queramos extraer el dato en forma de cadena, de número real o número entero.

En esta hoja guiada se insistirá sobre la forma de manipular los datos contenidos en un

ResultSet

Page 669: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

669

EJERCICIO GUIADO Nº 1

PLANTEAMIENTO

Se quiere realizar una pequeña aplicación de base de datos que nos muestre información

sobre los servicios realizados en la empresa MANEMPSA. Para ello, siga los pasos que

se indican a continuación:

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 añade un botón con el texto Ver Datos Servicios que se llame btnServicios.

Page 670: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

670

41. Se pretende simplemente que al pulsar el botón btnServicios aparezcan en un JOptionPane datos sobre los servicios almacenados en la base de datos.

SITUACIÓN 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

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.

Page 671: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

671

44. Ahora ya podemos volver al NetBeans y continuar con nuestro trabajo.

PREPARACIÓN DE LA APLICACIÓN JAVA 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 añadir el siguiente código a su ventana principal:

Copia aquí dentro

el fichero de base

de datos

MANEMPSA.MDB

Page 672: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

672

Recuerda que el método PrepararBaseDatos

siempre será igual, solo tienes que indicar aquí el

nombre de la base de datos a usar.

Declara los objetos

globales conexión y

sentencia

Page 673: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

673

REALIZAR CONSULTAS SQL USANDO EL OBJETO SENTENCIA

46. Ahora que hemos preparado nuestro proyecto para poder usar la base de datos MANEMPSA.MDB, ya podemos programar el botón para visualizar los servicios. Entra dentro del actionPerformed de este botón y programa lo siguiente:

Si observas el código, 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 típico

que recorre el ResultSet y muestra el tipo de cada servicio y la cantidad:

Page 674: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

674

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, añadamos el cierre de la conexión de la base de datos en el windowClosing de nuestra ventana:

Page 675: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

675

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 código del actionPerformed del botón btnServicios:

Simplemente estamos cambiando la concatenación 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.

Page 676: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

676

50. Como se ha podido observar, las fechas extraídas del ResultSet tienen un formato distinto al que usamos normalmente.

Para mejorar la presentación de las fechas extraídas del ResultSet haz los

siguientes cambios en el código:

Como se puede ver, las

fechas aparecen en orden

cambiado (año-mes-dia)

Page 677: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

677

El código se ha mejorado de forma que la fecha aparezca en un formato español

correcto. Ejecuta el programa para comprobar el resultado:

Page 678: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

678

Observa como ahora las

fechas aparecen

correctamente…

Page 679: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

679

51. Estudiemos el código que acabamos de añadir:

Lo primero que se ha hecho es crear varias variables de cadenas para contener el

día, mes y año 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 año

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 año de la cadena, extraemos los caracteres comprendidos entre la

posición 0 y la posición 3. Esto se hace usando el método substring de la siguiente

forma:

cadanio=cadfecha.substring(0,4);

Page 680: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

680

Para extraer el mes de la cadena, tendremos que extraer los caracteres

comprendidos entre la posición 5 y la posición 6. Esto se hace usando el método

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 posición 8 y la posición 9 de la cadena. Esto se hace

usando el método substring de la siguiente forma:

caddia=cadfecha.substring(8,10);

Una vez extraídos dia, mes y año, de la cadena, podemos concatenarlos formando

una fecha en formato dia/mes/año 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";

Page 681: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

681

PRESENTACIÓN 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 código de la siguiente forma:

Haremos que aquí aparezcan

comas, en vez de puntos…

Page 682: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

682

Se ha añadido una variable de cadena llamada cadcoste que almacenará el coste

de cada servicio.

En el código del bucle, recogemos la cantidad en dicha variable y luego usamos el

método de cadena replace para reemplazar los puntos por comas:

Page 683: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

683

cadcoste=r.getString("cantidad");

cadcoste=cadcoste.replace(".",",");

Finalmente, mostramos la cadena de coste en la concatenación:

info=info+cadfecha+" "+r.getString("tipo")+" "+cadcoste+"\n";

Ejecuta el programa y observa el resultado:

VALORES NULOS

Ahora ya tenemos las comas

decimales…

Page 684: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

684

53. Es posible que algún campo de algún registro de la tabla esté vacío. 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 botón a la ventana principal con el texto “Ver Datos de Clientes”. Llámalo por ejemplo btnClientes.

55. Al pulsar este botón aparecerá el listado de clientes de la empresa. Concretamente debe aparecer el nombre del cliente, el teléfono 1 y el teléfono 2. Para ello añade el siguiente código dentro del evento actionPerformed del botón.

Este código es prácticamente igual que el anterior. Simplemente ejecuta una

consulta SQL usando el objeto sentencia que permite extraer el contenido de la

Page 685: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

685

tabla clientes, y luego recorre el ResultSet mostrando los campos nombre, teléfono

1 y teléfono 2 en un JOptionPane.

56. Ejecuta el programa ahora y prueba a pulsar este nuevo botón. Observa el resultado. Cada vez que un cliente no tenga un teléfono, aparecerá el valor “null” en el JOptionPane:

Page 686: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

686

57. Vamos a arreglar esto de forma que aparezca el texto “no tiene” en vez de la cadena “null”. Modifique el código como se indica:

Como puedes ver, lo que se hace ahora es comprobar si el valor extraído del

ResultSet es null, y en ese caso, se concatena la cadena no tiene. En caso

contrario se concatena el valor del campo.

Page 687: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

687

Page 688: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

688

CONCLUSIÓN

A través 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:

Año – Mes – Dia – Hora : Minutos : Segundos

Así pues puede ser necesario realizar cambios en esta cadena.

Al extraer el valor de un campo numérico real, obtendremos un número con punto

decimal. Quizás sea necesario cambiar este punto por una coma decimal.

Cuando un campo está vacío, al intentar extraer su valor obtendremos el valor null.

Page 689: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

689

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS

Recapitulando. Ejecución de consultas desde la aplicación.

Para ejecutar una consulta sobre la base de datos desde tu aplicación java se tiene que

ejecutar una instrucción 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 código que se acaba de mostrar, se crea una cadena llamada consulta. Se le

asigna a esta cadena una instrucción SQL para extraer todos los trabajadores, y

finalmente se ejecuta dicha instrucción SQL usando el objeto sentencia.

La cadena consulta puede ser construida a través de concatenaciones de cadenas.

Observa atentamente este ejemplo. Es parecido al anterior pero tiene una ligera

diferencia:

Page 690: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

690

//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 concatenación 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 código se extraerá el

contenido de dicha tabla.

Es decir, el usuario podrá decidir lo que quiere consultar. El usuario afecta a la

construcción de la consulta SQL, y por tanto, tiene cierto control sobre esta consulta.

Page 691: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

691

La construcción de consultas SQL a partir de la concatenación 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.

Page 692: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

692

EJERCICIO GUIADO Nº 1

PLANTEAMIENTO

Se quiere realizar una aplicación de base de datos que nos muestre información sobre los

trabajadores de la empresa MANEMPSA.

Esta aplicación le dará al usuario la capacidad de elegir la información 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. Añade a la ventana un JTextPane y un botón de momento:

Page 693: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

693

El botón se llamará btnTodos y el JTextPane se llamará txtPanel.

Page 694: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

694

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. Añadir al programa los objetos conexión (Connection) y sentencia (Statement) como globales.

c. Crear el procedimiento PrepararBaseDatos y llamarlo desde el constructor.

d. Cerrar la conexión desde el evento windowClosing

Realice estos cuatro pasos que se han indicado antes de continuar.

61. Ya se puede programar el botón btnTodos. Se pretende que al pulsar este botón aparezca en el panel txtPanel el contenido de la tabla trabajadores. Para ello, programe el siguiente código dentro del actionPerformed del botón btnTodos:

Page 695: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

695

Si analiza este código, verá que es igual al que hemos realizado en hojas

anteriores. Básicamente 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.

Page 696: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

696

- Por otro lado, la fecha se transforma para que tenga el formato dia/mes/año

- 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 botón:

Page 697: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

697

63. Se va a mejorar el programa. Añada un cuadro de texto llamado txtSueldo y luego tres botones llamados respectivamente btnMayor, btnMenor y btnIgual. La parte inferior de la ventana quedará así:

Al pulsar el botón, se

muestran los datos de

todos los trabajadores.

Page 698: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

698

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 botón Igual, aparecerá en el panel todos los trabajadores

que tengan un sueldo igual al introducido. c. En cambio, si pulsa el botón Mayor, aparecerá en el panel todos los

trabajadores que tengan un sueldo mayor que el introducido. d. Y si pulsa el botón Menor, aparecerá en el panel todos los trabajadores que

tengan un sueldo menor que el introducido.

Se empezará programando el botón Igual.

65. Programe en el actionPerformed del botón btnIgual lo siguiente. (Nota: El código siguiente es prácticamente igual al anterior, solo se hace un pequeño cambio. Puede copiar y pegar y luego hacer la modificación que se indica)

Page 699: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

699

Estudiemos detenidamente el código remarcado:

String consulta;

consulta = “select * from trabajadores where sueldo = “+txtSueldo.getText();

ResultSet r = sentencia.executeQuery(consulta);

Page 700: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

700

Aquí se crea una variable de texto llamada consulta y luego se concatena en ella la

cadena:

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 sería:

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 botón Igual. El resultado será que aparecen solo los trabajadores que tengan 1000 de sueldo.

Page 701: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

701

67. Programa ahora el botón Mayor que de la siguiente forma (El código es prácticamente igual al anterior, así que puedes usar copiar y pegar. Se indica con una flecha la pequeña diferencia)

Al pulsar el botón

Igual se construye

una consulta usando

el contenido del

cuadro de texto

txtSueldo.

Al ejecutarse la

consulta se muestran

Page 702: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

702

Como se puede observar, el código 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 concatenación en la variable consulta sería la siguiente cadena:

select * from trabajadores where sueldo > 1000

Page 703: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

703

68. Prueba a ejecutar el programa introduciendo el valor 1000 en el sueldo y luego pulsando el botón Mayor que. El resultado será que aparece en el panel de texto los trabajadores que cobran más de 1000 euros.

69. Como práctica, programe el botón Menor que de forma que muestre aquellos trabajadores que cobren menos de la cantidad introducida en el cuadro de texto txtSueldo.

Page 704: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

704

70. Vamos a seguir mejorando el programa. Añada ahora el siguiente cuadro de texto y los siguientes botones:

El cuadro de texto se llamará txtNombre mientras que el botón “Igual a “ se llamará

btnNombreIgual y el botón “Contiene a” se llamará btnContiene.

71. Estos botones funcionarán de la siguiente forma:

a. El usuario introducirá un nombre en el cuadro de texto txtNombre.

b. Si luego pulsa el botón Igual a, entonces aparecerán todos aquellos trabajadores que tengan exactamente dicho nombre.

c. Si en cambio pulsa el botón Contiene a, entonces aparecerán todos aquellos trabajadores cuyo nombre contenga la palabra que se haya escrito en el cuadro de texto.

72. Empezaremos programando el botón Igual a. Para ello, escriba el siguiente código dentro del botón (este código es parecido a los anteriores, puede usar copiar y pegar y luego realizar las modificaciones pertinentes)

Page 705: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

705

Observa la modificación del código. Puedes ver que la consulta SQL se consigue

concatenando tres cadenas (se han puesto en color para facilitar la comprensión):

Primera cadena: select * from trabajadores where nombre = ‘

Segunda cadena: lo que contenga el cuadro de texto: txtNombre.getText()

Tercera cadena: ‘

Page 706: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

706

Supongamos que el cuadro de texto contiene la palabra Ana, el resultado de la

concatenación sería:

select * from trabajadores where nombre = ’Ana’

Es decir, el resultado de la concatenación sería 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 (‘)

Esa es la razón por la que se tienen que concatenar dos ‘

Page 707: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

707

73. Ejecuta el programa y prueba a escribir en el cuadro de texto del nombre Ana. Luego pulsa el botón Igual a…

74. Ahora programaremos el botón Contiene a de forma que el usuario escriba un texto en el cuadro del nombre, y al pulsar el botón Contiene a aparezcan todos aquellos trabajadores cuyo nombre contenga el texto escrito.

Se escribe Ana en el

cuadro de texto y al

pulsar el botón Igual

a se construye una

consulta SQL que

muestra a los

trabajadores con el

nombre Ana.

Page 708: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

708

Por ejemplo, si el usuario introduce el texto “an” en el cuadro, al pulsar Contiene a

aparecerán 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 botón Contiene a (es un código muy parecido al anterior, solo tiene que realizar una pequeña modificación)

Page 709: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

709

En este caso, para crear la consulta se concatenan tres cadenas (se indican en color para

facilitar la comprensión)

Primera cadena: select * from trabajadores where nombre like ‘%

Segunda cadena: lo que contenga el cuadro de texto: txtNombre.getText()

Tercera cadena: %‘

Page 710: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

710

Supongamos que escribimos en el cuadro de texto del nombre la palabra an, el resultado

de la concatenación sería el siguiente:

select * from trabajadores where nombre like ‘%an%’

La condición nombre like ‘%an%’ significa que contenga la palabra an.

NOTA:

Cuando se estudiaron las consultas SQL, se vio que el operador like funcionaba a través

de asteriscos. Es decir, la forma “correcta” de indicar la condición anterior sería la

siguiente:

nombre like ‘*an*’

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 aplicación java se usarán 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 botón Contiene a y comprueba el resultado. Deben aparecer todos aquellos trabajadores cuyo nombre contenga el texto fra. Por ejemplo, Francisco.

Page 711: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

711

77. Sigamos mejorando el programa. Añade estos cuadros de texto y estos botones:

Se escribe fra, se

pulsa el botón

Contiene a, y

entonces el

programa construye

una consulta que

muestra los

trabajadores cuyo

nombre contenga

fra.

Page 712: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

712

txtDia txtMes txtAnio btnAnterior btnDespues

Page 713: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

713

78. El objetivo de estos elementos añadidos es el siguiente:

a. El usuario introducirá una fecha (día, mes y año) en los cuadros de texto txtDia, txtMes, txtAnio.

b. Luego, si pulsa el botón Anterior, aparecerán los trabajadores que hayan entrado en la empresa antes de la fecha indicada.

c. Si pulsa el botón Después, en cambio, aparecerán los trabajadores que hayan entrado en la empresa después de la fecha indicada.

79. Empezaremos programando el botón Anterior. Accede a su actionPerformed e incluye el siguiente código (es un código similar al anterior, solo tienes que realizar un pequeño cambio):

Page 714: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

714

Presta mucha atención al código 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.

Esto se consigue concatenando varias cadenas (se indican a continuación en distintos

colores para facilitar la comprensión)

Page 715: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

715

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 día: txtDia.getText()

Quinta cadena: /

Sexta cadena: lo que contiene el cuadro de texto del año: txtAnio.getText()

Séptima 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 concatenación 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

Page 716: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

716

NOTA:

Recuerda que para que Access entienda las fechas al hacer una consulta SQL, es

necesario indicarlas en el formato mes/dia/año.

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 botón Anterior y observa como aparecen los trabajadores que entraron antes de la fecha indicada.

Page 717: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

717

81. Como ejercicio se propone que programe el botón Después. Al pulsar este botón, se mostrarán los trabajadores que hayan entrado antes de la fecha indicada en los cuadros de texto. El código es prácticamente igual al código del botón Anterior.

Introduce un día,

mes y año en los

cuadros

correspondientes.

Al pulsar el botón

Anterior, el

programa

mostrará los

trabajadores que

hayan entrado

Page 718: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

718

CONCLUSIÓN

A través 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 través de la concatenación 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 construcción de la consulta

aportando sus propios datos, le damos la posibilidad de que él decida la

información que se quiere extraer de la base de datos. De esta manera se consigue

que el programa sea más potente.

A tener en cuenta lo siguiente acerca de las consultas SQL ejecutadas desde una

aplicación java para acceder a una base de datos de Access:

- Los valores tipo texto se indicarán 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/año

Page 719: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

719

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS

Recapitulando. Consultas de selección. Consultas de Acción.

Al estudiar SQL, vimos que existían dos tipos de instrucciones.

- Consultas de selección (SELECT)

Estas consultas permiten extraer datos de la base de datos. Dicho de otro modo,

permiten visualizar información de la base de datos que cumpla un criterio.

Estas consultas no afectan a la base de datos, simplemente muestran información

sobre la propia base de datos.

- Consultas de acción. (INSERT, DELETE, UPDATE)

Estas consultas realizan una acción sobre la base de datos. Esta acción 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)

Ejecución de consultas de selección y de consultas de acción.

Page 720: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

720

Hasta ahora se han realizado programas java que ejecutaban consultas de selección

sobre la base de datos.

Recuerda que para ejecutar estas consultas se usa el método 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 ejecución de consultas de acción sobre la base de datos

desde la aplicación java. Este tipo de consultas se ejecutan usando el método

executeUpdate del objeto sentencia, y no devuelven un resultado concreto, ya que

simplemente actúan 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 modificación en la base de datos se usará:

sentencia.executeUpdate(“update . . . “);

Para realizar una eliminación en la base de datos se usará:

sentencia.executeUpdate(“delete . . . “);

Page 721: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

721

Page 722: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

722

EJERCICIO GUIADO Nº 1

PLANTEAMIENTO

Se quiere realizar una aplicación de base de datos que manipule los datos de los

trabajadores de la base de datos MANEMPSA. Esta aplicación permitirá ver el listado de

trabajadores y además 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. Añade a la ventana un JTextPane y un botón de momento:

Page 723: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

723

El botón se llamará btnTrabajadores y el JTextPane se llamará panelTexto.

84. Para que este programa pueda trabajar con la base de datos MANEMPSA tendrá que prepararlo haciendo lo siguiente:

Page 724: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

724

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. Añadir al programa los objetos conexión (Connection) y sentencia (Statement) como globales.

c. Crear el procedimiento PrepararBaseDatos y llamarlo desde el constructor.

d. Cerrar la conexión desde el evento windowClosing

Realice estos cuatro pasos que se han indicado antes de continuar.

85. Ya se puede programar el botón btnTrabajadores. Se pretende que al pulsar este botón aparezca en el panel panelTexto el contenido de la tabla trabajadores.

Para ello, en el actionPerformed del botón btnTrabajadores programe lo siguiente:

86. Como puede ver, es una llamada a un método al que se le ha dado el nombre MostrarTodos. Este método se encargará de mostrar todos los trabajadores en el panelTexto.

Programe el método MostrarTodos de la siguiente forma:

Page 725: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

725

El código de este método no debe resultarle ya desconocido.

Básicamente 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.

Page 726: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

726

Se muestra el listado procurando que las fechas aparezcan con el formato dia-mes-año,

que los sueldos aparezcan con la coma decimal y que si el campo matrícula fuera nulo o

la cadena vacía “”, entonces aparezca el texto “sin coche”.

La razón por la que se ha programado este código en un método aparte llamado

MostrarTodos en vez de hacerlo directamente en el actionPerformed del botón se

entenderá más adelante, cuando avancemos en el ejercicio guiado.

87. Ejecute el programa y pruebe el botón btnTrabajadores. Compruebe que realiza su cometido.

Page 727: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

727

88. Ahora que ya tenemos un programa capaz de visualizar a los trabajadores, añada los siguientes elementos a la ventana principal:

89. El objetivo de estos elementos es el siguiente:

Panel: panelAlta

Cuadros de Texto:

txtDNI

txtNombre

txtApellidos

txtSueldo

Page 728: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

728

El usuario introducirá los datos de un nuevo trabajador en las casillas indicadas.

Luego, al pulsar el botón 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 añadido.

Para ello tendrás que programar en el botón Alta lo siguiente:

Analicemos este código detenidamente.

Lo primero que hay que tener en cuenta es que se realiza una concatenación de cadenas dentro de la variable consulta.

Page 729: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

729

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 concatenación de las cadenas, se observará que el resultado es una

instrucción SQL del tipo INSERT INTO. Es decir, una instrucción SQL que permite la

inserción 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 à María

txtApellidos à Ruiz

txtSueldo à 1100

txtDia à 10

txtMes à 4

txtAnio à 2001

txtMatricula à 4433RET

Page 730: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

730

La concatenación en la variable consulta resultaría 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’,’María’,’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 instrucción SQL.

En este ejemplo, la instrucción SQL construida por concatenación es una instrucción

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 instrucción SQL recién

construida es el objeto sentencia:

sentencia.executeUpdate(consulta);

Como se puede observar, para ejecutar instrucciones SQL de acción ya no se usa el

método executeQuery, sino que se usa el método executeUpdate.

Una vez ejecutada la introducción 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 método, veremos como se rellena el

panel y observaremos al nuevo registro recién introducido.

La razón de que se programara aparte el método MostrarTodos para mostrar el listado

completo de trabajadores ha sido debido a la intención de llamar a este método desde

Page 731: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

731

otros lugares del programa. Es decir, la intención ha sido centralizar código y evitar su

repetición.

Hay que tener en cuenta que todo este código está rodeado de un try ... catch para evitar

cualquier error inesperado. Ten en cuenta que pueden producirse errores fácilmente si

introducimos valores incorrectos en los cuadros de texto.

90. Finalmente ejecute el programa y compruebe su funcionamiento añadiendo varios trabajadores a la tabla:

Page 732: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

732

Introduce datos y pulsa el botón Alta.

En la parte

superior aparecerá

el listado completo

incluyendo al

nuevo trabajador

introducido.

Page 733: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

733

CONCLUSIÓN

Se pueden ejecutar instrucciones SQL del tipo INSERT INTO (insertar registros)

usando el objeto sentencia.

Para este tipo de instrucciones hay que usar el método executeUpdate.

Normalmente, será necesario construir una cadena de consulta a través de la

concatenación de subcadenas y datos introducidos por el usuario en cuadros de

texto.

Este tipo de instrucciones SQL no devuelven ningún ResultSet, ya que no extraen

datos de las tablas, sino que modifican el contenido de éstas.

Page 734: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

734

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS

Consultas de Acción. Bajas.

En la hoja guiada anterior se vio como se podían ejecutar consultas SQL de acción 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 acción. 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 método 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á ningún ResultSet.

Page 735: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

735

EJERCICIO GUIADO Nº 1

PLANTEAMIENTO

Se mejorará el proyecto realizado en la hoja anterior de forma que no solo admita la

inserción de nuevos trabajadores en la tabla trabajadores de la base de datos

MANEMPSA, sino que también permite eliminar a trabajadores de la tabla.

91. Entre en NetBeans. Abre el proyecto llamado GestionTrabajadores que se programó en la hoja anterior.

92. Añade en la parte inferior de la ventana un nuevo panel:

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

Panel: panelBajas

Cuadro de texto: txtDNIEliminar

Page 736: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

736

b. Al pulsar el botón Eliminar el trabajador con dicho DNI se eliminará de la tabla.

c. Antes de eliminar al trabajador, se le pedirá al usuario una confirmación, para evitar un borrado accidental.

d. Si el DNI introducido no se correspondiera con ningún trabajador de la tabla, entonces se mostrará un mensaje indicándolo.

Page 737: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

737

94. Para hacer esto, entre en el actionPerformed del botón Eliminar y programe lo siguiente:

Se va a analizar este código. Estúdielo con detenimiento:

Lo primero interesante que encontrará es la construcción de una consulta de selección

(SELECT) usando la típica concatenación de cadenas:

Page 738: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

738

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 algún trabajador con

dicho DNI. Al ejecutar esta consulta, el ResultSet r se llenará con trabajadores que tengan

ese DNI.

Observe el código que viene a continuación:

if (!r.first()) {

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á vacío, o dicho

de otra forma más, 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) {

Page 739: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

739

Este trozo de código 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 continuación:

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 través de una concatenación, una consulta de

acción SQL del tipo DELETE, que nos permitirá borrar el trabajador con el DNI

introducido.

Luego se ejecuta dicha instrucción usando el método executeUpdate del objeto sentencia

(recuerde que usará siempre executeUpdate para ejecutar consultas de acción: altas,

eliminación y modificación)

Finalmente se llama de nuevo al método 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 código muestra un mensaje

“Borrado cancelado por el usuario”.

Por otro lado, todo este código es susceptible de sufrir errores inesperados, por lo que

está rodeado por un try ... catch.

Page 740: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

740

95. Ejecute el programa y pruebe a eliminar trabajadores de la tabla. Se recomienda que pruebe a introducir DNIs inexistentes, para ver que ocurre. Pruebe también la confirmación del borrado: responda a veces que sí y otras veces que no.

Page 741: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

741

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.

Page 742: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

742

CONCLUSIÓN

Se pueden ejecutar instrucciones SQL del tipo DELETE (borrar registros) usando el

objeto sentencia.

Para este tipo de instrucciones hay que usar el método executeUpdate.

Normalmente, será necesario construir una cadena de consulta DELETE a través de

la concatenación de subcadenas y datos introducidos por el usuario en cuadros de

texto.

Este tipo de instrucciones SQL no devuelven ningún 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 algún registro, usando el método

first.

También se recomienda pedir confirmación al usuario antes de realizar borrados en

las tablas.

Page 743: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

743

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS

Consultas de Acción. Modificaciones.

Las consultas SQL de acción 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 través del método executeUpdate

propio del objeto sentencia.

Estas instrucciones SQL afectan al contenido de la base de datos y no devuelven ningún

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 acción de modificación: UPDATE.

Page 744: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

744

EJERCICIO GUIADO Nº 1

PLANTEAMIENTO

Se mejorará el proyecto realizado en la hoja anterior de forma que no solo permita añadir

y borrar trabajadores de la tabla trabajadores de la base de datos MANEMPSA, sino que

también permita realizar modificaciones en los datos de los trabajadores de dicha tabla.

96. Entre en NetBeans. Abre el proyecto llamado GestionTrabajadores que se programó en la hoja anterior.

97. Modifique la ventana principal añadiendo un nuevo panel con los siguientes componentes:

Nuevo panel

Page 745: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

745

98. 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 botón Buscar, el resto de cuadros de texto se rellenarán con los datos del trabajador al que pertenece dicho DNI. (Si dicho DNI no existiera, se mostraría un mensaje de error)

c. Cuando aparezcan los datos del trabajador en los cuadros de texto, el usuario podrá realizar las modificaciones pertinentes.

El panel se llamará

panelModificar

El botón es btnBuscar

Los cuadros de texto se

llaman respectivamente:

txtModDNI

txtModNombre

Page 746: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

746

d. Al pulsarse el botón Efectuar Modificación se modificarán los datos en la tabla.

99. Primero programaremos el botón de búsqueda. Entre en el actionPerformed de este botón y programe lo siguiente:

Estudiemos atentamente el código anterior:

Page 747: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

747

Lo primero que hace el código es construir una consulta de selección 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 típico ResultSet. Luego comprueba a

través 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 sitúa 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 día, el mes y el año, situando cada dato en su cuadro de texto correspondiente.

cadefe = r.getString("fecha");

caddia=cadefe.substring(8,10);

Page 748: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

748

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:

año-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

aparecerán en los cuadros de texto cuando se pulse el botón Buscar.

Page 749: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

749

100. Ejecuta el programa y comprueba su funcionamiento. Escribe un DNI en el cuadro del DNI de búsqueda y pulsa Buscar.

101. Se supone que cuando aparezcan los datos del trabajador en los cuadros de texto el usuario los modificará según le interese. Luego, al pulsar el botón Efectuar Modificación los nuevos datos serán actualizados en la tabla.

102. Para hacer esto, entre en el actionPerformed del botón Efectuar Modificación y programe lo siguiente:

Se introduce un DNI y

luego se pulsa Buscar.

Si existe un trabajador con

ese DNI, sus datos

aparecerán en los cuadros

Page 750: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

750

Se va a analizar este código. Estúdielo con detenimiento:

Debe observar que lo primero que se hace en este código es crear una consulta de

actualización (UPDATE) a través de una concatenación de cadenas.

Si observa la concatenación, verá que el resultado es una instrucción 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 modificación.

Por ejemplo, si estos fueran los valores de los cuadros de texto del panel de modificación:

Page 751: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

751

txtModDNI à 11.111.111-A

txtModNombre à Juan

txtModApellidos à Perez

txtModSueldo à 1100

txtModDia à 4

txtModMes à 12

txtModAnio à 2001

txtModMatricula à 1234-ABC

La instrucción ya construida por concatenación sería la siguiente:

update trabajadores

set nombre=’Juan’,apellidos=’Perez’,sueldo=1100,fecha=#12/4/2001#, matricula=’1234-ABC’

where dni=’11.111.111-A’

Esta instrucción SQL de tipo UPDATE incluye una cláusula WHERE con una condición 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 través de una

llamada al método MostrarTodos.

Todo este código está rodeado de un try...catch para evitar errores inesperados.

Page 752: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

752

103. Comprueba el funcionamiento del programa ejecutándolo. Debes introducir un DNI y pulsar el botón Buscar para que se rellenen los cuadros de texto con los datos del trabajador.

Luego cambia algún dato de los que han aparecido en los cuadros de texto y pulsa

el botón Efectuar Modificación.

Si observas el panel de texto deberá aparecer la lista completa de trabajadores y

en ella podrás observar la modificación que se ha realizado en el trabajador

correspondiente.

Page 753: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

753

Se introduce un DNI y se le

da a Buscar.

Los cuadros de texto se

rellenan con los datos del

trabajador.

Se realiza la modificación

que se quiera en los

cuadros de texto.

Finalmente se pulsa

Efectuar Modificación para

Page 754: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

754

CONCLUSIÓN

Se pueden ejecutar instrucciones SQL del tipo UPDATE (modificar registros)

usando el objeto sentencia.

Para este tipo de instrucciones hay que usar el método executeUpdate.

Normalmente, será necesario construir una cadena de consulta UPDATE a través de

la concatenación de subcadenas y datos introducidos por el usuario en cuadros de

texto.

Este tipo de instrucciones SQL no devuelven ningún ResultSet, ya que no extraen

datos de las tablas, sino que modifican el contenido de éstas.

Es una buena idea dar alguna opción de búsqueda que permita encontrar al registro

a modificar y que sus datos aparezcan en varios cuadros de texto, de forma que el

usuario tenga más facilidad a la hora de realizar los datos.

Page 755: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

755

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 través de consultas SQL de tipo SELECT. Los datos extraídos 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 extraído los datos del ResultSet y los hemos presentado en

un JOptionPane o en un JTextPane. Sin embargo, una mejor opción 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 estudiarán 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.

Page 756: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

756

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 añaden siempre dentro de un panel de desplazamiento JScrollPane:

Page 757: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

757

2. El objeto tabla que se acaba de introducir tiene por defecto cuatro columnas con los nombres “Título 1”, “Título 2”, “Título 3” y “Título 4”, y contiene cuatro filas vacías. Puede ejecutar el programa para ver el funcionamiento del objeto tabla. Pruebe a introducir algún dato en las celdas de la tabla...

3. Aprenderemos ahora a configurar determinados aspectos de la tabla que vamos a usar. Para ello añada al constructor una llamada a un método PrepararTabla que programaremos a continuación.

Haz doble clic para

introducir datos en

las celdas...

Page 758: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

758

4. Programa ahora el método PrepararTabla de la siguiente forma:

La primera línea del código define un array de String con los títulos de la tabla, es decir,

con las columnas de la tabla.

A continuación, 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)

Page 759: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

759

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 había 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 asignárselo a la tabla.

En el código, se define como global un objeto llamado m, de tipo DefaultTablaModel.

Luego, al construir el objeto se deben indicar dos parámetros: null y el vector de títulos de

columnas:

DefaultTableModel m = new DefaultTableModel(null,titulos);

El valor null hace que la tabla aparezca vacía en un principio, mientras que el vector

títulos 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 razón por la que se ha declarado el objeto modelo m como global es que será usado

en otros métodos del programa.

Page 760: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

760

5. Ejecuta el programa y observa el resultado:

Como puedes observar, se ha creado una tabla vacía con cinco columnas

correspondientes al vector de títulos.

6. Vamos a añadir un botón a la ventana con el texto Nueva Fila, al cual llamaremos btnNueva:

Page 761: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

761

7. Dentro del botón btnNueva programa lo siguiente

Este código añadirá una nueva fila en blanco a la tabla. Estudiemos cada línea:

Page 762: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

762

La primera línea recoge el modelo de la tabla a través del método 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 instrucción 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 través

de esta variable.

Por ejemplo, se usará el modelo m para añadir 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 través del método addRow (añadir fila), añadir una fila correspondiente a los

valores del vector:

m.addRow(filavacia);

Debido a que el vector está vacío, la fila que se añade está vacía también. Si el vector

contuviera algún dato, estos datos aparecerían en la fila que se añade (esto se verá a

continuación)

7. Ejecuta el programa y pulsa varias veces el botón Nueva Fila. Observarás como se van añadiendo filas vacías a la tabla.

Page 763: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

763

8. Para entender bien el funcionamiento de la inserción de filas en la tabla, añada otro botón llamado btnNuevoElemento con el texto Nuevo Elemento:

9. En este botón programe lo siguiente:

Pulsa el botón y se

añadirán filas en

blanco...

Page 764: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

764

Puedes observar que el código es parecido al anterior, solo que en este caso se añade

una fila correspondiente a un vector relleno de datos. Esto quiere decir que cuando se

añada esta fila al modelo aparecerá con los datos del vector.

10. Ejecuta el programa y comprueba su funcionamiento, observarás que al pulsar el nuevo botón aparecen filas rellenas.

Page 765: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

765

11. Sigamos experimentando con la tabla. Ahora añadiremos un botón btnEliminar con el texto “Eliminar Fila”:

12. Este botón eliminará la fila que esté seleccionada en ese momento. Para ello programe en este botón el siguiente código:

Cuando se pulsa el

botón Nuevo Elemento

aparecen filas ya

rellenas.

Page 766: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

766

Estudiemos este código. En primer lugar usamos un método que poseen los objetos

JTable llamado getSelectedRow que nos dice el número de la fila que está seleccionada

en este momento.

Si no hubiera ninguna fila seleccionada, el método getSelectedRow devuelve el valor –1.

Esto lo usamos en el if que viene a continuación 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 método llamado removeRow

para borrar la fila seleccionada (la cual se pasa como parámetro)

13. Ejecuta el programa y añade varias filas. Luego prueba a seleccionar alguna y pulsar el botón Eliminar. Observa también lo que sucede cuando intentas eliminar una fila cuando no hay ninguna seleccionada.

Page 767: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

767

Al pulsar eliminar fila se eliminará la fila que esté seleccionada de la tabla.

Si no hubiera ninguna

fila seleccionada

aparecería un

Page 768: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

768

14. Sigamos aprendiendo nuevas cualidades de las tablas. Añada 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 botón Ver Valor aparecerá en la etiqueta Valor el contenido de la casilla situada en la posición 3, 4 (fila 3 columna 4)

Así pues programe lo siguiente en el botón Ver Valor:

txtFila txtColumna btnVerValor etiValor

Page 769: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

769

Estudiemos el código.

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());

Luego, se extrae el modelo de la tabla y se usa un método llamado getValueAt. Este

método 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):

Page 770: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

770

valor = (String) m.getValueAt(fila,col);

Finalmente, una vez extraído el valor de la celda de la posición fila, col este se coloca en

la etiqueta etiValor.

Este código 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 añade varias filas. Introduce algunos valores en las filas. Luego prueba a introducir un valor de fila y columna y pulsa el botón Ver Valor:

Page 771: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

771

17. Sigamos experimentando. Añade lo siguiente a la ventana:

Se introdujo la posición: 2, 1.

Por tanto se quiere ver

el valor de la casilla 2,1

(tanto las filas como las

columnas empiezan en

btnIntroducir txtNuevoValor

Page 772: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

772

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 botón btnIntroducir.

El resultado será que se introduce el valor escrito en la posición de la tabla

indicada por la fila y columna introducida.

Para hacer esto, programe lo siguiente dentro del botón btnIntroducir:

Estudiemos el código 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.

Page 773: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

773

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 método 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 código es susceptible de tener errores de ejecución (por ejemplo que el usuario

introduzca un valor equivocado en la fila y columna) por eso está rodeado de un

try...catch.

19. Ejecuta el programa. Añade varias filas en blanco. Luego introduce un valor para la fila y la columna y escribe un valor que quieras introducir. Al pulsar el botón Introducir dicho valor aparecerá en la celda correspondiente:

Page 774: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

774

Introduce una fila y columna.

Luego introduce un dato.

Y al pulsar el botón

Introducir el resultado es

que el dato se introduce

en la celda indicada por la

fila y columna.

Page 775: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

775

CONCLUSIÓN

Existe una clase llamada JTable 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 también para mostrar

cualquier tipo de datos.

Los objetos JTable contienen un modelo de datos de tipo DefaultTableModel.

Cada vez que se quiera trabajar con una tabla será necesario construir su modelo y

asignárselo 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 través del modelo de una tabla podemos añadir nuevas filas a la tabla, eliminar

filas, extraer datos de las celdas de la tabla o añadir datos a las celdas de la tabla.

Page 776: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

776

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS

Representación 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 básicamente 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 cómoda.

El proceso será básicamente el siguiente:

Base de Datos

ResultSet JTable

Page 777: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

777

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: conexión y sentencia.

c. Programar el método PrepararBaseDatos de forma que el programa acceda a la base de datos y se construyan los objetos conexión y sentencia.

d. Programar el evento windowClosing de la ventana principal de forma que se cierre la conexión.

21. Una vez hecho esto, añade a la ventana principal un objeto JTable y llámalo simplemente tabla.

22. Añade en la parte inferior un botón llamado btnTrabajadores. La ventana principal quedará así:

Page 778: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

778

23. Agregaremos al proyecto un objeto “modelo de tabla” (DefaultTableModel) llamado m que sea global. También añadiremos en el constructor una llamada a un método PrepararTabla y programaremos dicho método de la siguiente forma:

Page 779: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

779

Si observas el código, verás que en el método 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 vacío.

Y se asigna finalmente a la tabla.

El resultado de esto es que la tabla aparecerá vacía y sin títulos (En realidad, como

títulos aparecen letras: A, B, C, etc)

Page 780: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

780

24. Ejecuta el programa para ver su aspecto de momento.

25. Bien, ahora programaremos el botón btnTrabajadores de forma que al pulsarlo se muestre el contenido de la tabla Trabajadores. Programe lo siguiente:

Debido a que

hemos asignado un

vector de títulos sin

contenido, las

columnas tienen

como título letras.

Page 781: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

781

Estudiemos el código 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.

ResultSet r = sentencia.executeQuery("select * from trabajadores");

A continuación, se extraerá información 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

código.

String titulos[] = {"DNI","Nombre","Apellidos","Sueldo","Fecha","Matrícula"};

m=new DefaultTableModel(null,titulos);

tabla.setModel(m);

Page 782: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

782

Como ves, lo que hacemos es definir un vector de cadenas con los títulos

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 botón Trabajadores la cabecera de la tabla pasa a contener los campos indicados en el vector títulos.

Page 783: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

783

27. Ahora ya solo nos queda recoger todo el contenido del ResultSet y mostrarlo en la tabla. Para ello, modifique el código del actionPerformed del botón Trabajadores para que quede como sigue:

Si estudiamos el código, veremos que se extrae la tabla trabajadores entera

introduciéndola en un ResultSet llamado r, a través de una instrucción SELECT de SQL.

Luego construimos un modelo de tabla (DefaultTableModel) llamado m usando un vector

de títulos, que se corresponde a los campos de la tabla trabajadores.

Page 784: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

784

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 típico:

while (r.next()) {

En cada vuelta del bucle tomamos los valores de la fila del ResultSet y los almacenamos

en el vector (en la posición correspondiente)

Luego se añade el vector que se ha construido al modelo de la tabla.

Así pues, en cada vuelta se añadirá un registro más al modelo m. Estos registros son

extraídos del ResultSet.

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 código anterior aquí tienes un pequeño gráfico explicativo:

Base de Datos à ResultSet à Vector à Modelo de Tabla à JTable

Page 785: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

785

i. De la base de datos extraemos datos a un ResultSet. (Esto se hace ejecutando una consulta SQL de tipo SELECT a través 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 botón Trabajadores. Como ve, el objeto tabla muestra entonces el contenido de la tabla Trabajadores.

Page 786: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

786

30. Si observa la tabla verá que la fecha aparece en el formato estándar de almacenamiento:

Año-mes-dia hora:min:seg

Y que los sueldos aparecen con punto decimal.

Mejore estos detalles haciendo los siguientes cambios en el botón Trabajadores:

Page 787: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

787

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 año, mes y día y se concatenan

en un formato más habitual: dia/mes/año.

31. Ejecuta ahora el programa y observa como se muestran las fechas y los sueldos:

Page 788: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

788

Page 789: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

789

CONCLUSIÓN

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.

Page 790: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

790

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS

Gestión 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 aplicación 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 aplicación java.

Por ejemplo, si eliminamos un registro sería interesante que automáticamente viéramos la

tabla actualizada en el JTable.

En esta hoja guiada se mejorará la aplicación de la hoja guiada anterior, dotándola de

opciones para la gestión de la tabla Trabajadores.

Page 791: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

791

EJERCICIO GUIADO Nº 1

1. Abrir la aplicación de la hoja guiada anterior.

2. El primer objetivo será hacer que al ejecutar el programa aparezca automáticamente el contenido de la tabla Trabajadores en el JTable. Para ello, realice los siguientes cambios en el código del programa:

3. Crea el método MostrarTrabajadores:

4. Copia en él el código del actionPerformed del botón btnTrabajadores:

Añade una llamada a un método

MostrarTrabajadores, en el

constructor del programa.

Page 792: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

792

5. Lo que produce esta modificación del código es que al ejecutarse el programa se ejecute el método MostrarTrabajadores con lo que se ejecutará el código 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 botón Trabajadores no tiene sentido, así pues elimina el botón Trabajadores de la ventana.

Page 793: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

793

7. Añade ahora en la parte inferior un panel llamado panelAcciones y un botón Eliminar Trabajador llamado btnEliminar:

8. Se pretende que el usuario seleccione uno de los trabajadores de la tabla y al pulsar el botón Eliminar dicho trabajador se elimine de la base de datos. Esta eliminación por supuesto se verá reflejada en el JTable.

Para ello, programe en el botón Eliminar lo siguiente:

Page 794: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

794

Estudiemos con detenimiento el código programado.

Lo primero que se hace es recoger la fila seleccionada de la tabla usando el método

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 confirmación. Esto es lo que se hace con el JOptionPane.showConfirmDialog.

Page 795: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

795

Si el usuario acepta la eliminación del trabajador, entonces la llevamos a cabo. Observa el

proceso:

- 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 instrucción de acción SQL del tipo DELETE para que se elimine el trabajador con el dni extraído. Esto se hace concatenando y ejecutando la instrucción SQL a través 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 algún trabajador. Observa como el JTable se actualiza cuando se produce la eliminación.

10. Ahora añade otro botón llamado btnNuevo:

Page 796: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

796

11. Cuando se pulse el botón Nuevo se pretende que aparezca un formulario donde se puedan introducir los datos de un nuevo trabajador. Esto se conseguirá añadiendo un cuadro de diálogo a nuestro proyecto. Para ello, agrega un JDialog al proyecto. Este diálogo se llamará dialogoNuevo.

12. Haga doble clic en el Inspector sobre el dialogoNuevo para diseñarlo. Debe quedar como sigue, con los nombres que se indican a continuación:

Page 797: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

797

13. La idea es la siguiente. Cuando el usuario pulse el botón Nuevo, aparecerá este cuadro de diálogo. El usuario introducirá los datos del nuevo trabajador y pulsará Aceptar, y entonces estos datos se introducirán en la tabla trabajadores.

Si el usuario pulsa Cancelar, entonces no se hará nada.

El JTable se actualizará para mostrar el resultado de la inserción del nuevo

trabajador.

Así pues, entre en el actionPerformed del botón btnNuevo y programe lo siguiente:

txtNuevoDni

txtNuevoNombre

txtNuevoApellidos

txtNuevoSueldo

txtNuevoDia txtNuevoMes txtNuevoAnio

Page 798: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

798

Este código empieza asignando un tamaño al cuadro de diálogo dialogoNuevo.

Luego, se define el dialogoNuevo como Modal. Esto significa que hasta que no se

termine de trabajar con este cuadro de diálogo no se podrá continuar usando el

programa principal.

Luego se muestra dicho cuadro de diálogo.

Y finalmente se actualiza el JTable por si se hubiera introducido un nuevo

trabajador.

14. Ahora programemos los botones del cuadro de diálogo dialogoNuevo. Empecemos por el botón Cancelar:

Page 799: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

799

Como ves, tan sencillo como descargar el cuadro de diálogo. El botón Cancelar debe

limitarse a quitar de la pantalla el cuadro de diálogo dialogoNuevo.

15. Y finalmente se programará el botón Aceptar del cuadro de diálogo. Recuerda que este botón es el que introduce en la base de datos a un nuevo trabajador. Programa dentro de este botón lo siguiente:

Page 800: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

800

Vamos a analizar detenidamente este código.

Lo primero que puedes observar es un conjunto de líneas 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/año.

Luego, con estas variables, se construye por concatenación una instrucción SQL de tipo

INSERT que permita introducir los datos del nuevo trabajador en la tabla trabajadores.

Se ejecuta dicha instrucción SQL. Y se cierra el cuadro de diálogo.

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 añade un nuevo botón a la ventana, llamado btnModificar:

Page 801: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

801

18. Se pretende que el usuario seleccione en la tabla el trabajador cuyos datos quiere modificar, y luego pulse este botón para efectuar la modificación.

Al pulsar este botón debe aparecer un cuadro de diálogo donde el usuario pueda

cambiar fácilmente los datos.

Ese cuadro de diálogo será muy parecido al que hemos hecho antes, así que

básicamente solo tendrás que hacer una copia de dicho cuadro de diálogo y

modificarlo un poco. A continuación se explica como hacerlo.

19. Haz clic con el derecho sobre el cuadro de diálogo dialogoNuevo y activa Copiar :

Page 802: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

802

20. Luego activa Pegar sobre Otros Componentes:

21. Aparecerá un nuevo cuadro de diálogo que es una copia del anterior. Este cuadro tendrá como nombre dialogoNuevo1.

22. Sin embargo, le cambiaremos el nombre para que sea más acorde con su función. Le llamaremos dialogoModificar. Cámbiale el nombre:

Page 803: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

803

23. Vamos a modificar un poco el diseño del dialogoModificar. Haz doble clic sobre él y realiza las siguientes modificaciones en el diseño:

24. Empezaremos programando el botón Modificar. Al pulsar este botón se debe mostrar el cuadro de diálogo 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.

Cambia el título. Ahora es “Modificar Trabajador”

Los nombres para los cuadros de texto y

botones serán:

txtModDni (Desactiva su propiedad editable)

txtModNombre

txtModApellidos

Page 804: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

804

Entra en el actionPerformed del botón Modificar y programa lo siguiente:

Estudiemos el código.

Primero se comprueba el número 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.

Page 805: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

805

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 diálogo dialogoModificar.

Y finalmente se prepara el cuadro de diálogo dialogoModificar y se muestra en la pantalla.

Una vez realizada la modificación (no programada aún) se muestran los trabajadores en

la tabla llamando al método MostrarTrabajadores.

25. Puedes comprobar el funcionamiento del programa de momento. Prueba a seleccionar una fila de la tabla y al pulsar el botón Modificar.

Page 806: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

806

Selecciona...

Y luego pulsa

modificar.

Page 807: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

807

26. Lo bueno que tiene el rellenar el cuadro de diálogo 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 botón Aceptar para que se produzca la modificación.

Si se pulsa Cancelar no sucede nada. Simplemente se cerrará el cuadro de

diálogo.

El resultado es que

aparece el cuadro de

diálogo

dialogoModificar ya

relleno con los datos

del trabajador que se

seleccionó.

Page 808: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

808

27. Se empezará programando el botón Cancelar. Este botón debe limitarse a cerrar el cuadro de diálogo dialogoModificar:

28. Ahora nos centraremos en el botón Aceptar. Este botón debe realizar la modificación, introduciendo todos los datos de los cuadros de texto en la tabla trabajadores.

El código siguiente tomará como referencia el DNI del trabajador que se está

modificando. Es importante que este DNI no cambie, ya que entonces estaríamos

modificando los datos de otro trabajador.

Esta es la razón 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 código en el botón Aceptar:

Page 809: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

809

Estudiemos el código.

Lo primero que se hace es recoger en variables los datos introducidos en los cuadros

de texto.

Luego, con estas variables, se construye una instrucción SQL del tipo UPDATE que

permite modificar los datos del trabajador con el dni indicado en el cuadro de diálogo.

Page 810: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

810

Finalmente se cierra el cuadro de diálogo.

Todo este código es susceptible de sufrir fallos por lo que está rodeado de un

try...catch.

29. Ejecuta el programa y comprueba el funcionamiento de la actualización de trabajadores. Prueba a realizar varias actualizaciones. Observa como el JTable se actualiza con las nuevas modificaciones realizadas.

Page 811: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

811

CONCLUSIÓN

La más 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 aplicación 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 rápidamente el

registro que queramos manipular.

Para la inserción de nuevos registros en la tabla se recomienda la creación de un

cuadro de diálogo que muestre un formulario donde el usuario pueda introducir los

datos del nuevo registro cómodamente.

Para la modificación de un registro, se recomienda la creación de otro cuadro de

diálogo que muestre los datos del registro que se quiere modificar.

Page 812: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

812

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS

Filtrados sobre una tabla

En la hoja guiada anterior se realizó una pequeña aplicación de base de datos que

permitía 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 eliminación y modificación de un trabajador se podía realizar simplemente haciendo

clic sobre la fila del trabajador correspondiente en el JTable y luego activando el botón

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 añadir al programa ciertas opciones de filtrado que nos permitan

visualizar en el JTable solo aquellos registros que más nos interesen.

En esta hoja guiada se mejorará el programa de la hoja anterior de forma que permita al

usuario ciertas opciones de filtrado.

Page 813: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

813

Page 814: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

814

EJERCICIO GUIADO Nº 1

30. Abrir la aplicación de la hoja guiada anterior.

31. Primero debes añadir un botón btnFiltar a la ventana:

32. Al pulsar este botón aparecerá un cuadro de diálogo que contenga opciones de filtrado, de forma que el usuario pueda decidir qué trabajadores quiere ver.

Por lo tanto, tendrá que añadir un nuevo cuadro de diálogo (JDialog) y asígnele el

nombre dialogoFiltrar.

33. Haz doble clic sobre este diálogo y diséñelo de la siguiente forma:

Page 815: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

815

NOTA: Los dos combos del cuadro de diálogo deben contener los siguientes

elementos:

= > < >= <= <>

Es decir, cuando se desplieguen aparecerá esto:

txtFiltrarDni

txtFiltrarNombre

txtFiltrarApellidos

comboSueldo

txtFiltrarSueldo

comboFecha

Page 816: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

816

34. La idea es la siguiente. Cuando el usuario pulse el botón Filtrar, se mostrará este cuadro de diálogo. Entonces el usuario introducirá las condiciones de búsqueda y pulsará Aceptar, y entonces se visualizarán en el JTable aquellos registros que cumplan la condición.

Si el usuario pulsa el botón Ver Todos, entonces se mostrarán en el JTable todos

los trabajadores.

Si el usuario pulsa el botón Cancelar, entonces el cuadro de diálogo de filtrado se

cierra sin más.

Page 817: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

817

35. Empezaremos programando el botón Filtrar de la ventana principal. Introduzca en él el siguiente código:

Lo único que hace este código es asignar un tamaño al cuadro de diálogo,

configurarlo como modal, y finalmente presentarlo en pantalla.

36. Ejecute el programa si quiere ver el funcionamiento de este botón.

Page 818: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

818

37. Programemos ahora el botón Cancelar del cuadro de diálogo de filtrado. La programación de este botón es muy sencilla:

Como puede ver consiste simplemente en cerrar el cuadro de diálogo de filtrado.

Se pulsa el botón

Filtrar y aparece el

cuadro de diálogo de

filtrado.

Page 819: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

819

38. Se programará ahora el botón Aceptar, pero antes, es necesario entender como funcionará el cuadro de diálogo de filtrado.

El usuario introducirá los datos que quiere buscar. Ten en cuenta que no tiene por

qué rellenar todas las casillas. Además, puede hacer uso de los combos asignados

a los campos sueldo y fecha. Por ejemplo, supongamos que el usuario introdujera

los siguientes datos:

Si en este momento el usuario pulsara el botón Aceptar, se tendrían que mostrar aquellos

trabajadores que cumplan todas las siguientes condiciones: que tengan de nombre

Juan, que ganen más de 2000 euros de sueldo y que conduzcan un coche cuya

matricula contenga la cadena “CA”.

Page 820: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

820

Las casillas que estén vacías no se tendrán 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 búsqueda será mucho más cómoda, al no tener que introducir

el texto completo, y producirá más resultados (se encontrarán a los que se llamen “Juan”,

“Juan Antonio”,”Juana”, etc.

Page 821: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

821

39. El botón 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 código de este botón será largo, así que veamos poco a poco como

programarlo. Empiece programando lo siguiente dentro del botón Aceptar:

Como puede ver, empezamos recogiendo el contenido de los cuadros de texto en distintas variables. También recogemos los valores seleccionados en los combos del sueldo y fecha. En el caso de la fecha, recogemos de los cuadros de texto el día, mes y año y los concatenamos para formar una fecha que Access pueda aceptar: mes/dia/año. En el caso del sueldo cambiamos la coma decimal (ya que suponemos que el usuario introducirá el valor en formato español) por el punto, para que no haya problemas a la hora de ejecutar la consulta SQL.

Page 822: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

822

40. Siga programando en el botón Aceptar de la siguiente forma:

........... código anterior...........

Es necesario estudiar muy detenidamente el código que tenemos programado hasta

ahora antes de continuar.

Se han añadido dos variables:

- La variable sql es una variable de cadena que contendrá la instrucción SELECT que efectuará el filtrado (la consulta)

Agrega estas dos variables

en la parte inicial del método.

Y en la parte

final del método

añade el

siguiente

código...

Page 823: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

823

- La variable ncond (número de condiciones) es una variable numérica que va contando cuantas condiciones hay. Ten en cuenta que habrá una condición cada vez que un cuadro de texto esté relleno con algún dato.

Esta variable es muy importante, ya que nos permite saber si tenemos que

concatenar una condición con “where” o con “and”. Ten en cuenta que la primera

condición que se añade vendrá precedida por “where”, pero las demás estarán

precedidas por “and”.

La primera condición que se añade a la instrucción SELECT tendrá que tener esta

forma (en rojo):

select * from trabajadores where condicion1

La condición 2, condición 3, etc llevan el “and” delante. Por ejemplo, la segunda condición tendría esta forma (en azul):

select * from trabajadores where condicion1 and condicion2

Si añadiéramos una tercera condición también llevaría el “and” (en verde):

select * from trabajadores where condicion1 and condicion2 and condicion3

Etc.

Resumiendo, la primera condición vendrá antecedida de “where”, mientras que el resto de las condiciones vendrán antecedidas del “and”.

Page 824: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

824

Si se observa el código añadido al final del método, en él se empieza construyendo el

comienzo de la consulta SELECT: “select * from trabajadores” y luego se añaden

condiciones según si el cuadro de texto correspondiente está vacío o no.

Cada vez que se encuentra un cuadro de texto no vacío, se añade una condición y se

aumenta en 1 el contador de condiciones, es decir, la variable ncond.

Observa como cuando se añade una condición, se comprueba con un if el número de

condiciones (ncond) para saber si hay que concatenar la condición con el “where” o con el

“and”.

Debes observar también como nos decantamos por el uso de LIKE ya que este es más

versátil. Y se recuerda una vez más que cuando usemos LIKE desde java en vez de

asteriscos usaremos el símbolo tanto por ciento (%)

Estudia bien este código para entenderlo. Solo se ha indicado las posibles condiciones

para el DNI y para el Nombre. Sin embargo será necesario añadir más if para el resto de

los campos.

41. Añada al final del código anterior el siguiente código:

Page 825: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

825

Este código comprueba si hay algún dato en el cuadro de texto apellidos, y, si es así, entonces crea una condición para filtrar por apellidos.

Se incrementa el contador de condiciones en uno y si estamos ante la primera

condición esta se concatena usando “where”, y si no, esta se concatena usando

“and”.

42. Añada al final del código anterior el siguiente código:

Este es el código que añade una condición para el sueldo (suponiendo que haya algún 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 condición se concatena con “where”, y si no, se

concatena con “and”.

Page 826: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

826

Hay que destacar aquí que, al ser el sueldo un campo numérico, 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: =, >, <, >=, <= , <>

43. Añada al final del código anterior el siguiente código:

Este es el código que añade una condición para la fecha (suponiendo que haya algún 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 día, mes y año se concatenan dentro de una variable fecha usando la / como separador. Si los cuadros de texto dia, mes y año estuvieran vacíos, la variable fecha contendría la cadena “//”. Por eso preguntamos si la variable fecha es distinta de “//” para saber si es necesario añadir una condición para la fecha.

Como en los casos anteriores, se suma uno al contador de condiciones y se

comprueba si estamos ante la primera condición. En este caso se concatena la

condición usando “where” y en caso contrario se concatena la condición usando

“and”.

Page 827: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

827

Observa que para crear la condición 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 añadir las almohadillas

en la condición.

44. Añada el siguiente código al final del código anterior.

En este caso tenemos la construcción de la condición correspondiente a la matrícula del coche del trabajador. Por supuesto, esta condición solo se construye si se ha escrito algo en el cuadro de texto de la matrícula.

Como en los casos anteriores se suma uno al contador de condiciones y si

estamos ante la primera condición entonces la condición se construirá usando

“where”, y en caso contrario añadiremos esta condición usando “and”.

Page 828: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

828

Como en los demás campos de tipo texto, para construir esta condición se ha

preferido usar LIKE junto con los % (asteriscos en Access), que da más

posibilidades de búsqueda.

45. El resultado final de todo este largo código es que la variable sql contendrá una instrucción 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 diálogo de filtrado.

Lo que hay que hacer ahora es ejecutar dicha instrucción SELECT. Y como ya

sabe, esto se hace a través del objeto sentencia. Programe lo siguiente a

continuación del código anterior:

En este código 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 código da un error. Esto es debido a que es obligatorio rodear el

código con un try...catch, ya que es susceptible de error. (Esto se hará más

adelante)

Page 829: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

829

46. Ahora mostraremos el ResultSet r en el JTable, así que añada el siguiente código a continuación:

Este código ya debe resultar conocido, ya que se usó también en el método

MostrarTrabajadores, encargado de mostrar toda la tabla trabajadores en el

JTable.

Si observa este código verá que lo que hace es definir un vector de títulos para el

JTable. A partir de este vector de títulos 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 almacenándola en un vector al que se ha llamado

fila.

Page 830: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

830

Cada fila extraída 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

debería mostrar ya el resultado del filtrado.

La razón de que aparezcan tantos errores es porque aún no hemos añadido el

try...catch. Esto lo haremos al final.

47. El código programado hasta ahora analiza los datos introducidos en el cuadro de diálogo 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 diálogo.

Añade por tanto el siguiente código:

48. Todo el código programado en el botón Aceptar es bastante delicado y pude dar gran cantidad de errores, por lo que será necesario rodearlo dentro de un try...catch:

Page 831: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

831

.... resto del código...

49. El código 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 fácilmente búsquedas y filtrados en la tabla trabajadores.

Ejecuta el programa y haz lo siguiente:

Page 832: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

832

Pulsa Filtrar para ver el

cuadro de diálogo de filtrado.

Queremos buscar a los

trabajadores que tengan una

“a” en el nombre y cobren

menos de 1500 euros.

(Recuerda activar el combo)

Page 833: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

833

Page 834: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

834

50. Como habrá podido observar en este ejemplo, se pueden realizar búsquedas en la tabla trabajadores gracias al código programado. Esto es muy útil sobre todo en el momento en que la tabla contenga muchos registros.

Pruebe a ejecutar más veces el programa y realice varios filtrados.

51. Solo queda por programar el botón Ver Todos del cuadro de diálogo de filtrado. Al pulsar este botón se pretende que se visualicen todos los registros de la tabla trabajadores. El código de este botón es bastante sencillo:

Como ves aprovechamos el método ya programado MostrarTrabajadores que se

encarga de mostrar todos los trabajadores en el JTable. Luego solo tenemos que

descargar el cuadro de diálogo 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 botón Ver Todos. Observarás como vuelven a verse todos los trabajadores en la tabla.

Page 835: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

835

Ejemplo:

Se acaba de realizar un filtrado, la tabla muestra solo los trabajadores que cumplen la condición...

Pulsa ahora Filtrar

Page 836: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

836

Pulsa Ver Todos para

volver a ver todos los

trabajadores.

Page 837: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

837

Y el resultado será que se

quita el filtrado y se vuelven

a mostrar todos los

trabajadores

Page 838: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

838

CONCLUSIÓN

Las tablas que tengan muchos datos son incómodas de manejar, por lo que resulta

muy interesante añadir al programa ciertas opciones de filtrado. Estas opciones

permitirán visualizar solo aquellos registros que cumplan determinadas

condiciones.

Las opciones de filtrado consistirán básicamente en la construcción de una

consulta SELECT a través de concatenaciones de cadenas.

Una vez construida la cadena SELECT según el filtrado que quiera hacer el usuario,

se tendrá que ejecutar dicha consulta y se tendrá que mostrar el resultado.

Normalmente en un JTable.

Page 839: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

839

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS

Ordenación y cálculos

Se van a añadir ciertas mejoras al programa que se viene realizando en las últimas hojas

guiadas. En esta hoja programaremos ciertas opciones de ordenación así como

realizaremos determinados cálculos sobre la tabla trabajadores.

Page 840: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

840

EJERCICIO GUIADO Nº 1

53. Abrir la aplicación de la hoja guiada anterior.

54. Vamos a modificar el cuadro de diálogo de filtrado de forma que no solo sea capaz de filtrar, sino que también permita que el listado que se ha filtrado aparezca ordenado según un campo.

Para ello, añada lo siguiente al diálogo de filtrado:

panelOrdenacion

cboCamposOrdenacion

radioASC

Page 841: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

841

NOTA Nº1: El combo cboCamposOrdenacion contendrá los siguientes elementos: (Sin

Ordenación), DNI, Nombre, Apellidos, Sueldo, Fecha, Matricula:

Page 842: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

842

NOTA Nº2: Es necesario añadir un ButtonGroup al programa, al que llamaremos

grupoOrdenacion. Los botones de opción radioASC y radioDESC deben pertenecer a

dicho grupo.

55. La idea es la siguiente. Cuando el usuario quiera hacer un filtrado podrá indicar que el listado aparezca ordenado por algún campo, seleccionándolo en el combo de ordenación. También puede indicar la forma de ordenación (ascendente o descendente) a través de los botones de opción.

Al pulsar Aceptar el listado de trabajadores no solo saldrá filtrado, sino que también saldrá ordenado.

Para ello tendremos que realizar modificaciones en el código del botón Aceptar.

Añade el siguiente código en el actionPerformed del botón Aceptar (justo antes de

la ejecución de la consulta):

Page 843: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

843

Estudiemos el código. Lo primero que se hace es extraer el valor del combo desplegable de los campos de ordenación.

Si este combo no contiene el valor “(Sin ordenación)” significará que se desea

realizar una ordenación por el campo seleccionado. Así pues se concatena a la

variable sql la cláusula order by con el campo que se ha seleccionado en el

combo.

Se controla también la forma de ordenación teniendo en cuenta el botón de opción

que esté activado, y según esto, se añade la cadena “ASC” o “DESC” para ordenar

ascendentemente o descendentemente.

56. Ejecuta el programa y prueba a hacer un filtrado eligiendo un campo para ordenar y observa el resultado:

Page 844: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

844

En este ejemplo se pretende visualizar a todos los trabajadores que contengan una “a” en su nombre...

Page 845: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

845

57. 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 condición:

En este ejemplo aparecerían todos los trabajadores, ya que no se ha indicado ninguna condición.

... y el listado saldrá ordenado por el

Page 846: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

846

58. Ahora vamos a añadir una nueva mejora al programa. La idea es que se visualice junto al JTable de trabajadores los siguientes datos: el número de trabajadores que se muestra y la media de los sueldos.

Para ello, añade las siguientes modificaciones en el diseño de la ventana principal:

59. Ahora programaremos un método que sea capaz de calcular el número de trabajadores y el sueldo medio a partir del contenido de un ResultSet.

Este método recibirá un ResultSet como parámetro, y lo que hará será analizar el

contenido de este ResultSet para calcular y luego mostrar el número de

trabajadores y el sueldo medio.

Etiquetas con borde:

etiNumeroTrab

Page 847: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

847

Accede al código de tu programa y añade el siguiente procedimiento:

Este código básicamente toma el ResultSet pasado como parámetro 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

número de trabajadores para obtener la media, y estos datos se colocan en las

etiquetas correspondientes.

Page 848: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

848

Page 849: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

849

60. Interesa que cada vez que se muestren todos los trabajadores en el JTable se realicen estos cálculos, así pues debe añadir la siguiente línea en el método MostrarTrabajadores.

Esa línea es una llamada al método que acabamos de programar, y hará que después de

que se presenten en el JTable todos los trabajadores se rellenen las etiquetas de los

cálculos.

61. También interesa que cuando se realice un filtrado aparezca el número de trabajadores y el sueldo medio correspondiente al listado que se acaba de filtrar.

Page 850: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

850

Para ello debes añadir la siguiente línea al código del botón Aceptar del cuadro de diálogo de filtrado:

Page 851: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

851

De nuevo se realiza la llamada al método de los cálculos justamente después de colocar en la tabla el listado de trabajadores, en este caso filtrado.

62. Ejecuta el programa y observa como al iniciar el programa ya aparecen en las etiquetas los cálculos (ya que el constructor llama al método MostrarTrabajadores que a su vez llama al método HacerCalculos)

También puedes comprobar como al hacer un filtrado se muestran los cálculos

correspondientes al listado filtrado, ya que en el botón Aceptar del dialogo de

filtrado se hace una llamada al método HacerCalculos.

Page 852: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

852

Al iniciarse el programa

aparece el listado

completo de

trabajadores y se

calcula el número de

trabajadores y el sueldo

medio...

Page 853: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

853

Si se hace un filtrado

(en este ejemplo se

visualizan los

trabajadores con menos

de 1000 de sueldo) los

cálculos se

corresponderán con el

listado filtrado...

Page 854: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

854

CONCLUSIÓN

Todo programa de gestión de datos de una tabla debería tener opciones de

ordenación para mostrar los datos de la tabla ordenados como el usuario quiera.

La opción de ordenación puede estar situada junto a las opciones de filtrado para

permitir de esta manera que los filtrados aparezcan ordenados según le interese al

usuario.

Suele ser habitual que al lado del JTable aparezcan ciertos cálculos estadísticos

relativos a la tabla.

Page 855: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

855

EJERCICIO GUIADO. JAVA. INFORMES DE BASE DE DATOS

Informes

Toda aplicación de base de datos necesita imprimir documentos tales como listados,

fichas, gráficos, 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 algún programa de creación 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 aplicación, de forma que cuando el

usuario pulse la opción de imprimir, el informe se rellene con los datos de la base de

datos y luego sea enviado a la impresora.

Para la creación de informes para nuestras aplicaciones usaremos un programa gratuito

llamado IReport. El fichero de instalación 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 página

http://www.jasperforge.org/sf/projects/ireport

En esta hoja guiada se verán las ideas básicas de manejo del programa IReport.

Page 856: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

856

Page 857: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

857

EJERCICIO GUIADO Nº 1. INSTALACIÓN DE IREPORT

1. En primer lugar copie el fichero de instalación del programa IREPORT a su ordenador, e instale el programa.

2. Una vez instalado, ejecútelo. La pantalla principal del IReport es la siguiente (es relativamente parecida a la pantalla principal de NetBeans):

En esta zona

aparecerán los

informes que se

están diseñando. Aquí aparecerán

los distintos

elementos que

forman el informe.

En esta parte

aparecerán las

propiedades del

objeto seleccionado.

Aquí tendremos un

listado con los

campos de las

tablas que

podremos incluir en

el informe, entre

otras cosas.

Page 858: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

858

3. Cierre el programa IReport. Lo usaremos más adelante.

EJERCICIO GUIADO Nº 2. CREACIÓN DE UN DSN

Definición de DSN

DSN significa Data Source Name, es decir, Nombre del origen de datos.

Un DSN define cierta información sobre una base de datos, como por ejemplo el tipo de

base de datos que es y donde se encuentra almacenada en el ordenador.

Esta es la zona de

diseño, donde se

definen las

características del

informe. Y aquí tenemos la

salida, lugar donde

aparecen los

mensajes informativos

y de error.

Page 859: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

859

Toda esta información 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 información 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 Orígenes de datos.

Page 860: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

860

4. En la pestaña DSN de Usuario pulse el botón Agregar para añadir un nuevo DSN.

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.

Page 861: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

861

6. Ahora seleccionaremos el fichero de la base de datos MANEMPSA haciendo clic en el botón Seleccionar:

Page 862: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

862

7. Usando la ventana de exploración que aparece, busca la base de datos MANEMPSA que se encuentra en Mis Documentos. Selecciónala y pulsa Aceptar.

Page 863: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

863

Page 864: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

864

8. Esta es toda la información 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 indicándole el DSN BaseEjemplo.

Este es el caso del programa IReport. Como verás 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.

Page 865: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

865

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 más adelante). Para ello entre en Panel de Control, Herramientas Administrativas, Orígenes de Datos:

à

Page 866: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

866

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 botón Quitar.

Aparecerá un mensaje preguntándole si quiere borrar el DSN. Debe responder NO

ya que usaremos el DSN a continuación. (Si lo borrara no sería algo grave.

Simplemente se tendría que crear de nuevo con los pasos indicados antes)

Page 867: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

867

EJERCICIO GUIADO Nº 3. CONEXIÓN DE IREPORT CON UNA BASE DE DATOS

1. Para poder crear informes con datos de una base de datos, es necesario realizar una conexión 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 conexión, active la opción Datos – Conexiones / Fuentes de Datos

3. Debe activar el botón Nuevo para crear una nueva conexión...

Page 868: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

868

Page 869: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

869

4. Para base de datos de Access, debes activar la opción Conexión Base de Datos JDBC y pulsar Próximo.

Page 870: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

870

5. Ahora le daremos un nombre a la conexión que realizaremos con la base de datos MANEMPSA. El nombre será simplemente: “Conexión con MANEMPSA”.

Page 871: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

871

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

Page 872: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

872

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ó tenía de nombre BaseEjemplo.

Tiene que cambiar la palabra DSNAME por BaseEjemplo:

Quedaría así:

Page 873: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

873

8. Finalmente, activaremos la opción Salvar el password para evitar que se nos pida constantemente una contraseña para acceder a la base de datos (La casilla de la contraseña –password- se deja en blanco ya que la base de datos MANEMPSA no tiene contraseña)

Page 874: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

874

9. Se acaba de establecer una conexión 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 botón Prueba, y si todo ha ido bien, debe aparecer un mensaje indicándolo:

10. La conexión con la base de datos MANEMPSA está ya configurada. Solo tiene que pulsar el botón Salvar para que quede guardada.

11. Al pulsar el botón Salvar volverá a la pantalla inicial. En ella podrá observar que se ha creado una

conexión (la conexión 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 conexión, esta se queda guardada y podrá ser usada para la creación de informes sobre la base de datos con la que conecta.

Page 875: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

875

12. Cierra el cuadro de conexiones. Ya tenemos el programa iReport preparado para la creación de informes con la base de datos MANEMPSA.

Conexión

creada.

Listado de conexiones a base de datos (solo hay una de momento)

Page 876: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

876

EJERCICIO GUIADO Nº 4. CREACIÓN RÁPIDA 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 rápida de crear un informe es a través de la opción Mago de Informes que se encuentra dentro de la opción del menú Fichero. Actívela.

3. La opción 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 conexión correspondiente a dicha base de datos:

Page 877: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

877

Page 878: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

878

4. Hasta el momento solo hemos configurado una conexión en el iReport (la conexión 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 conexión 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 botón Próximo.

Page 879: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

879

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 botón > para añadirlo. En nuestro ejemplo debes añadir los campos: DNI, Nombre, Apellidos y Sueldo únicamente.

Nota:

El botón > añade de uno en uno.

El botón >> los añade todos.

El botón < quita un campo del informe.

El botón << los quita todos.

Page 880: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

880

8. Una vez elegidos los campos puede pulsar el botón Próximo 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 botón Próximo otra vez.

10. El siguiente paso es la distribución del informe. Es decir, la forma de colocar los datos. Existen dos posibilidades:

- En columnas. Esta distribución crea “fichas” individuales de cada registro (en nuestro ejemplo de cada trabajador)

- Tabulada. La distribución tabular presenta el típico listado con una cabecera.

Para nuestro ejemplo escogeremos la distribución Tabulada. Dentro de la

distribución Tabulada se pueden elegir entre algunas variantes. Dejaremos

activado el formato ClassicT.xml

Page 881: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

881

11. Active el botón Próximo 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 botón Terminar.

Page 882: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

882

12. Una vez finalizado el asistente, volveremos a la pantalla principal de iReport. En ella, verá como ha aparecido el diseño del informe que acaba de crear.

Page 883: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

883

En próximas hojas guiadas se estudiará la forma de modificar el diseño y de crear un informe desde cero. 13. Vamos a guardar el informe. Para ello activa la opción Fichero – Guardar. El

nombre que le daremos al informe será trabajadores:

Diseño del informe

Page 884: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

884

14. Ahora que está guardado, vamos a ver como quedaría el listado. Para ello active la opción Construir – Ejecutar informe (usando la conexión activa) o bien el botón de la barra de herramientas con el mismo nombre:

Page 885: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

885

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:

Page 886: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

886

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 título del listado no es muy adecuado. Lo cambiaremos a

continuación.

16. Cierre la ventana del informe (no la del iReport) y volverá a la pantalla principal de iReport.

17. Haga doble clic sobre el título del informe y cámbielo por Listado de Trabajadores:

18. Vuelva a visualizar el resultado del informe:

Page 887: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

887

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.

Page 888: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

888

CONCLUSIÓN

Todo programa de gestión de datos de una tabla debería tener opciones de

ordenación para mostrar los datos de la tabla ordenados como el usuario quiera.

La opción de ordenación puede estar situada junto a las opciones de filtrado para

permitir de esta manera que los filtrados aparezcan ordenados según le interese al

usuario.

Suele ser habitual que al lado del JTable aparezcan ciertos cálculos estadísticos

relativos a la tabla.

Page 889: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

889

EJERCICIO GUIADO. JAVA. INFORMES DE BASE DE DATOS

Diseño 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 rápida de crear informes, aunque el resultado quizás no

sea exactamente lo que buscábamos. Es posible que nos interese cambiar los colores, el

tipo de letra, el formato de los números, etc.

En la hoja guiada anterior vimos un ejemplo de esto. Una vez creado el informe, se tuvo

que cambiar el título ya que el título incluido por defecto no era el adecuado.

En esta hoja guiada se aprenderán algunas técnicas 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.

Page 890: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

890

EJERCICIO GUIADO Nº 1. CREACIÓN Y MODIFICACIÓN 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 opción Fichero – Mago de Informes.

3. Aparecerá el asistente para la creación de informes. En el primer paso tiene que elegir la conexión correspondiente a la base de datos MANEMPSA (que es donde se encuentra la tabla coches)

Page 891: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

891

Page 892: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

892

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 instrucción SQL:

5. Pulsa el botón Próximo 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 serán los siguientes: matrícula, marca, modelo y año.

Page 893: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

893

7. Pulse el botón Próximo 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 botón Proximo.

9. En el paso 4 del asistente tendremos que elegir la distribución del informe. Escogeremos una distribución tabulada y de tipo ClassicT.

Page 894: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

894

10. Active Próximo para ir al 5 y último paso del asistente y pulse Terminar.

11. Acabamos de crear el informe. Observe su diseño.

Page 895: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

895

12. Ahora es conveniente guardarlo para evitar problemas. Pulse la opción Fichero – Guardar y guárdelo con el nombre listadocoches en la carpeta Mis Documentos.

Page 896: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

896

13. Acaba de crear un informe con forma de listado. Para ver el resultado debe pulsar el botón Ejecutar informe (usando la conexión 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)

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 quisiéramos cambiar las características 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 diseño.

16. Empezaremos cambiando el título del informe. Para ello haremos doble clic sobre el título y escribiremos “Listado de Coches”:

Page 897: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

897

17. Puede cambiar el aspecto de cada elemento del informe seleccionándolo con un clic y luego modificando sus propiedades, las cuales aparecerán en la parte derecha de la ventana. Por ejemplo, seleccione en la cabecera del listado el campo matrícula:

Page 898: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

898

18. En la zona de propiedades (parte derecha) active por ejemplo la propiedad negrilla y el tipo de letra Comic Sans:

19. Si observa el elemento seleccionado (“Matrícula” en la cabecera) observará que está ahora en negrita y con el tipo de letra Comic:

Page 899: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

899

20. Selecciona ahora el título, por ejemplo (solo tienes que hacer un clic sobre él)

Page 900: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

900

21. Ahora activa las siguientes propiedades:

Activa la propiedad primer plano (en el botón con los tres puntos) y escoge un color verde.

Activa la propiedad fondo y escoge un color

amarillo.

Page 901: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

901

Pon un tamaño de 28, y negrilla.

Activa la itálica (cursiva) y el subrayado.

Page 902: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

902

22. Si observas el título del informe, verás que tendrá el siguiente aspecto ahora:

23. Vamos a colocar el recuadro del título a la izquierda. Para ello, haz clic sobre el título y sin soltar el botón del ratón arrástralo 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:

Page 903: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

903

26. Vamos a solucionar el problema del campo Matrícula. Cierra la ventana del listado y en la ventana de diseño haz que el campo matrícula tenga un tamaño de letra de 10:

27. Si ahora visualizas el listado de nuevo, verás como sí aparece el campo matrícula:

Como ve, hemos cambiado la forma y

posición del título.

Observa. No aparece el campo matrícula!, Esto es debido

a que es demasiado grande y no cabe aquí.

Page 904: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

904

28. Sigamos cambiando cosas en el diseño del informe. Ahora vas a seleccionar el campo matrícula correspondiente no a la cabecera, sino al listado de datos:

29. Haz que sus propiedades sean las siguientes:

Este cuadro se corresponde al conjunto de datos

de la columna matrícula.

Page 905: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

905

Negrita: Activado

Tamaño 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:

Si observas el listado verás que todos los datos de la

columna matrícula tiene ahora las propiedades

asignadas.

Page 906: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

906

31. Así pues, el diseño del informe que haya creado con el mago de informes puede ser modificado luego. Básicamente solo tiene que seleccionar el elemento a modificar y luego cambiar sus propiedades.

Debe tener en cuenta que los elementos del diseño pueden cambiarse de lugar y

que pueden cambiarse de tamaño.

En la parte superior de la ventana de iReport tiene una barra de herramientas que

puede usar también para realizar cambios en los elementos:

32. Ha terminado de realizar el informe. Puede cerrar iReport y guardar los cambios si hiciera falta.

Page 907: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

907

CONCLUSIÓN

La forma más sencilla de crear un informe con iReport es a través del mago de

informes.

Una vez creado el informe, puede realizar modificaciones en su diseño

seleccionando cada elemento y cambiando sus propiedades en la zona de

propiedades.

También puede mover y cambiar de tamaño los distintos elementos del informe.

De esta forma, puede crear rápidamente un listado para luego personalizarlo.

Page 908: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

908

EJERCICIO GUIADO. JAVA. INFORMES DE BASE DE DATOS

Creación de un informe desde cero

En hojas anteriores hemos visto que la forma más rápida de crear un informe es usando

el mago de informes de iReport. Luego, con el informe resultante, solo teníamos que

cambiar las propiedades de cada elemento del informe.

En esta hoja veremos como crear un informe empezando desde cero, lo que nos servirá

además para entender las distintas zonas en que se divide un informe.

La creación 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 demás características 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 creación de informe desde cero.

Page 909: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

909

EJERCICIO GUIADO Nº 1. CREACIÓN 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 Pérez, cuyo número de DNI es 12.321.567-B.

3. Para ello, active la opción Fichero – Nuevo Documento.

4. El nombre del informe será serviciosjuan:

Page 910: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

910

5. Al pulsar OK, observará que aparece un informe en blanco:

Page 911: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

911

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 conexión a la base de datos que quiere usar. En nuestro caso la conexión se llama Conexión con Manempsa.

Page 912: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

912

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 opción Datos – Consulta de Informe:

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

Page 913: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

913

Si en la parte inferior aparece el

listado de campos seleccionados

en la consulta, entonces es

indicativo de que todo va bien.

Page 914: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

914

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 opción 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 número, el tipo de servicio y la cantidad. Para ello, tendrá que añadir estos datos a la zona de Detalle (Detail).

Page 915: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

915

La zona de detalle es la zona en la que aparecerán los datos del listado, y por

tanto es allí donde tiene que añadir los campos a mostrar.

Arrastra el campo número desde la zona de campos a la zona de detalle:

13. Haz lo mismo con los otros campos que queremos mostrar: el tipo y la cantidad: El detalle quedará así:

Page 916: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

916

14. Visualice el informe resultante. iReport le pedirá que guarde el informe. Llámelo serviciosjuan.

15. Una vez guardado verá como queda el informe que acaba de hacer:

Page 917: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

917

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 línea de separación y arrastrando. Pruebe a hacerlo hasta que la zona de Detalle quede así (es posible que necesite mover los campos):

Page 918: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

918

18. Si visualiza ahora el informe verá que tiene mejor aspecto (los servicios de Juan aparecen más unidos):

Clic en la línea de separación y

arrastra.

Page 919: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

919

19. Ahora sería interesante que el listado tuviera una cabecera. Para ello, haz clic en el botón de la barra de herramientas llamado Texto Estático y luego haz clic en la zona del informe llamada Column Header y arrastre el ratón:

Page 920: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

920

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 número. Ahora repita el proceso para colocar los otros dos encabezados de columnas:

Page 921: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

921

22. Para destacarlos un poco (ya que son los encabezados), haremos que estén en negrita y que su tamaño sea un poco más grande (para ello use las propiedades de dichos elementos) El resultado debe ser similar al siguiente:

23. Visualiza el informe y observa el resultado:

Page 922: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

922

24. Ya tiene un mejor aspecto, pero aún puede mejorarse más. A través del botón Línea puede dibujar líneas en el informe. Dibuje una línea en la zona del Encabezado de Columna:

botón línea

NOTA: Para que la línea le salga recta puede dibujarla teniendo pulsada la tecla Mayúsculas.

Page 923: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

923

25. Visualice el informe:

26. Ahora vamos a colocar un título al informe. El título del informe se coloca en la zona Título (Title). En nuestro caso vamos a colocar el título “Ficha de Servicios”. Para introducir un texto tendrá que usar el botón Texto estático que ya usó antes:

Haga clic en este botón y luego haga clic y arrastre en la zona del Título. Se creará

un recuadro:

Page 924: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

924

27. Haz doble clic sobre ese recuadro y escribe “Ficha de Servicios”.

28. Ahora asigna al título las siguientes propiedades:

a. Un tamaño de letra de 24 b. Agranda el cuadro de forma que ocupe prácticamente toda la zona de

título.

Page 925: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

925

c. Centra el título en el recuadro. d. Subráyalo. e. Asigna un color de fondo gris claro. f. Desactiva la opción transparente.

Si todo va bien, su título tiene que haber quedado así:

Page 926: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

926

29. Visualice el listado. Su aspecto debe ser más o menos el siguiente:

30. Ahora introduciremos algunos datos del trabajador (en nuestro caso de Juan Pérez) La zona que usaremos será el Encabezado de Página (pageHeader)

Debe saber que en el encabezado de página se colocan aquellos datos que deban

aparecer en la parte superior de todas las páginas.

La diferencia entre Título y Encabezado de Página es que lo que escriba en el

título aparecerá en la parte superior de la primera página (y ninguna más),

mientras que lo que escriba en el encabezado de página aparecerá en la parte

superior de todas las páginas del listado.

Page 927: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

927

31. Vamos a empezar agrandando la zona del Encabezado de Página. Esto se hace fácilmente arrastrando la línea límite inferior de la zona:

32. Ahora que tenemos más espacio en el encabezado de página vamos a dibujar en él un recuadro. Esto lo puede hacer usando el botón Rectángulo de la barra de herramientas:

Haz clic en esta línea y

arrastra hacia abajo.

Page 928: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

928

Solo tiene que activar este botón y hacer clic y arrastrar en el encabezado. Intente que quede así:

33. Ahora añada los siguientes cuadros de texto estático dentro del recuadro que acaba de hacer:

Page 929: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

929

Recuerde que estos cuadros de texto se hacen usando el botón Texto estático de

la barra de herramientas:

En el ejemplo, se ha asignado un tamaño de letra de 12, y además se ha puesto en negrita el texto del primer cuadro.

34. Ahora, para que salgan los datos propios del empleado, añadiremos los campos nombre, apellidos y DNI. Empezaremos por añadir el campo DNI. Esto se hace arrastrando desde la zona de campos:

Page 930: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

930

35. Haga lo mismo con el campo Apellidos y el campo Nombre. El informe quedará así:

Page 931: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

931

36. Ahora se cambiarán algunas propiedades de los campos que hemos añadido:

a. Asigne un tamaño de 12 b. El DNI debe aparecer en negrita. c. Agrande los cuadros de los campos.

El resultado será el siguiente:

Page 932: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

932

37. Visualice el resultado del informe. Debe tener el siguiente aspecto:

Page 933: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

933

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 Página, al lado del recuadro. Para ello, tendrá que usar el botón de la barra de herramientas imagen:

Page 934: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

934

Haga clic en este botón y luego haga clic y arrastre hasta crear un rectángulo en la

zona del Encabezado de Página. Debe quedar así:

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 nenúfares.jpg que se suele encontrar en la carpeta Mis

Imágenes como logotipo para el informe. Así pues, copie el fichero nenúfares.jpg

desde la carpeta Mis Imágenes a la carpeta Mis Documentos.

Page 935: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

935

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 Expresión 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:

Page 936: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

936

42. Ha podido observar en este ejemplo los pasos básicos a seguir para crear un informe desde cero. Como puede ver, es una forma más trabajosa de crear un informe, pero a cambio disponemos de más libertad a la hora de diseñar el informe.

Page 937: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

937

43. Para finalizar con esta hoja guiada, veamos para que sirve cada una de las zonas del informe:

Título (title) Aquí se coloca el título del

informe. Aparecerá en la parte

superior de la primera página

únicamente.

Encabezado de Página

(pageHeader)

Lo que se coloque aquí

aparecerá en todas las páginas,

Encabezado de columna

(columnHeader)

Se usa para colocar el texto del

encabezado del listado (los

Detalle (detail)

Aquí aparecerán todos los datos

del listado. Por tanto, aquí se

suelen colocar los campos que

Pie de columna (columnFooter)

Lo que se coloque aquí aparecerá

siempre debajo del listado de

Pie de Página (pageFooter)

Lo que se coloque aquí aparecerá

en la parte inferior de todas las

páginas (menos en la última). Ideal

Pie de la última página (lastPageFooter)

Es un pie especial, ya que solo aparece en la

parte inferior de la última página.

Resumen (summary)

Aparece cuando finaliza el listado de

datos (en la última página) Esta zona se

usa para colocar cálculos estadísticos,

como suma de cantidades o cuentas y

promedios, etc... que deban aparecer al

Page 938: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

938

CONCLUSIÓN

iReport permite la creación de informes desde cero, lo que da más versatilidad a la

hora de diseñar el listado.

Es necesario indicar la conexión a la base de datos y la consulta SQL para extraer

los datos que aparecerán en el informe.

El informe se divide en zonas, y los elementos se colocarán en dichas zonas según

donde queramos que aparezcan dichos elementos en el informe final.

Para introducir texto en el informe se usará la opción texto estático.

Si se quiere que aparezca un dato de la base de datos, entonces habrá que

introducir un campo.

También se pueden colocar líneas, recuadros, imágenes, etc.

Todos los elementos colocados pueden ser modificados a través de sus

propiedades.

Page 939: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

939

EJERCICIO GUIADO. JAVA. INFORMES DE BASE DE DATOS

Cálculos

Es muy habitual que un informe no solo muestre datos de las tablas de la base de datos,

sino que también muestre cálculos realizados con esos datos.

Para hacer esos cálculos se puede usar la potencia de SQL por un lado. Podemos

generar esos cálculos 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 también podemos realizar los cálculos directamente en el informe.

En esta hoja se verá como crear un informe con cálculos. Además se aprenderán algunos

conceptos nuevos en lo que se refiere a presentación de datos y uso de las zonas del

informe.

Page 940: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

940

EJERCICIO GUIADO Nº 1. CREACIÓN DE UN INFORME CON CÁLCULOS

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 opción Fichero – Nuevo Documento.

3. Asigne el nombre informeservicios al informe.

4. Indique ahora que usará la conexión con la base de datos MANEMPSA. Para ello puede elegir la “Conexión con MANEMPSA” en el desplegable de conexiones, en la parte superior derecha de la ventana:

5. Ahora que hemos elegido la conexión, ahora indicaremos la consulta SQL que nos permita extraer los datos que queremos mostrar en el informe. Para ello, activa la opción Datos – Consulta de Informe.

6. En la pantalla que aparece debes introducir la siguiente consulta SQL:

select * from servicios order by fecha

Page 941: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

941

7. Acepta la pantalla anterior. Ya podemos empezar a diseñar el informe. Empezaremos por poner un

título. El título será “Listado de Servicios”. Agrande la letra del título y céntrelo.

8. Ahora añadiremos los textos de la cabecera. En la zona de Encabezado de columna (columnHeader) añadiremos los siguientes cuadros de texto estático:

Page 942: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

942

9. Ahora para definir los datos del listado, tendremos que añadir 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 tamaño arrastrando la línea de separación:

Page 943: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

943

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 línea del

detalle.

Page 944: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

944

13. Observe como la fecha muestra también 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 Patrón. Haz clic en el botón con tres puntos de esta propiedad:

Page 945: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

945

15. Esta propiedad permite cambiar la forma en que se presentan números, fechas y demás tipos de datos en el informe.

Elige en la zona de categorías la categoría Date (Fecha) y luego escoge el patrón

con forma dia/mes/año:

Aplica los cambios.

16. Vuelve a visualizar tu listado. Ahora verás como las fechas aparecen correctamente.

Page 946: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

946

Recuerda esta propiedad, ya que la usarás muchas veces. Sobre todo con fechas y números. En el caso de los números, se puede usar para decidir algunas características como los dígitos decimales o si mostrar el punto separador de miles.

17. Vamos a mejorar el listado añadiendo dos líneas. Una línea justamente debajo de la cabecera y otra en la parte del pie de columna (columnFooter):

18. La línea de la cabecera separará esta de los datos. Por otro lado, la línea del pie de columna aparecerá en la parte inferior del listado en todas las páginas. Visualiza el listado:

Page 947: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

947

19. La zona del pie de página pageFooter es ideal para colocar en ella el número de página del listado. (Tenga en cuenta que el listado puede ser muy largo y tener varias páginas)

Page 948: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

948

Lo que introduzca en la zona pageFooter aparecerá en la parte inferior de cada

página en todas las páginas del listado excepto en la última página. En el caso de

la última página la zona que hace esta función es la zona llamada lastPageFooter

(último pie de página)

Para que la zona pageFooter afecte a todas las páginas del informe incluyendo la

última, es necesario ocultar la zona lastPageFooter.

Veamos como se hace esto:

20. Haga clic con el botón derecho del ratón sobre la zona lastPageFooter y elija Propiedades de banda.

21. Aparecerá un cuadro de opciones donde se podrá elegir el tamaño de la zona. En nuestro caso indicaremos un cero y aplicaremos. Luego cerraremos el cuadro de opciones.

Page 949: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

949

22. Se podrá observar entonces como hemos ocultado la zona lastPageFooter. Al hacer esto, la zona pageFooter tendrá control sobre todas las páginas incluyendo la última.

23. Ahora arrastra el elemento especial Página X de Y desde la librería hasta el pie de página. Observa:

Page 950: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

950

24. La Librería contiene una serie de campos especiales que muestran cosas como el número de la página o la fecha actual. Elementos que suelen ser muy comunes en los informes.

25. Aprovecha la Librería para agregar en la parte derecha del pie la fecha actual. Arrastra el elemento Fecha actual a la zona del pie. Entonces verás como aparece un cuadro donde tendrás que elegir el formato de la fecha. Elige el formato completo.

Page 951: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

951

26. El pie tiene que haber quedado más o menos así:

27. Ahora visualice el informe y observe la parte inferior (si cambia el zoom al 50% podrá tener una vista global del informe):

Page 952: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

952

Verá que en la parte inferior aparece el número de la página 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

Page 953: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

953

existe en la tabla servicios, de la que hemos extraído los datos. Sin embargo, es posible crear este campo directamente en la consulta SQL realizando el cálculo.

Active la opción Datos – Consulta del Informe para acceder a la consulta que

introducimos al principio.

29. Cambie la consulta por la siguiente instrucción SELECT (respete mayúsculas y minúsculas):

select Fecha, Tipo, Cantidad, Cantidad*0.16 as IVA from servicios order by fecha

Page 954: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

954

Esta consulta SELECT muestra la Fecha, Tipo y Cantidad de los servicios, pero además,

verá que realiza un cálculo: multiplica el campo Cantidad por 0.16 y le asigna al resultado

del cálculo 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

Los campos calculados es una característica del lenguaje SQL que aprovecharemos para realizar cálculos 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 más.

Cálculo que se realiza Nombre del campo calculado

Page 955: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

955

31. Por supuesto, sería interesante añadir un texto estático en el encabezado de columnas:

32. Visualice el informe resultante:

Page 956: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

956

33. Para hacer otro ejemplo de campos calculados, entre en la consulta del informe y modifique la instrucción 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á añadiendo 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:

Page 957: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

957

35. Visualice el informe. Debe tener este aspecto:

Page 958: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

958

36. Hemos aprendido a agregar campos calculados a partir de otros campos, y añadirlos al listado. Ahora aprenderemos a realizar cálculos de totales, o cálculos resumen.

Por ejemplo, sería interesante calcular la suma de todas las cantidades, todos los

IVA y todos los totales más 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 línea corta:

Page 959: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

959

38. Para agregar un total (una suma) se usa el elemento Total de la Librería. Haga clic en él y arrástrelo a la zona del resumen.

39. Aparecerá un cuadro de diálogo donde tendrá que indicar el campo que quiere sumar. Elija el campo Cantidad y acepte.

Page 960: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

960

40. Aparecerá un nuevo recuadro en el resumen. Colóquelo al mismo nivel que la columna de la cantidad.

Page 961: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

961

41. Haga el mismo proceso para calcular la suma del IVA y del Total. Al final, el diseño de la zona resumen debe tener el siguiente aspecto:

42. Los elementos situados en la zona del resumen aparecen al final del listado. Visualice el informe y observe la parte final del listado.

Page 962: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

962

43. El informe está terminado. Guárdelo y ciérrelo.

Page 963: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

963

CONCLUSIÓN

SQL permite la creación de campos calculados a partir de otros campos en una

consulta SELECT.

Esta característica es muy útil por ejemplo en el caso de los informes, ya que nos

permite mostrar cálculos en ellos.

iReport, además, proporciona la posibilidad de realizar sumas totales de campos.

Recuerde también el uso de las distintas zonas del informe:

- Title – Título: Usado para colocar el título del informe. Aparece en la primera página únicamente.

- pageHeader – Encabezado de página: En el se coloca aquello que deba aparecer en la parte superior de todas las páginas.

- 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 páginas.

- pageFooter – Pie de página: En esta zona se coloca aquello que deba aparecer en la parte inferior de todas las páginas (menos la última, si está activado el lastPageFooter) Se usa para colocar el número de página.

Page 964: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

964

- lastPageFooter – Ultimo pie de página: Es el pie de página de la última página. Si se desactiva, entonces es sustituido por el pageFooter.

- Summary – Resumen: Usado para colocar cálculos de totales. Aparece al final del listado.

Page 965: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

965

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 característica en común, o, dicho de otra forma,

pertenecen a un mismo grupo.

Por ejemplo, si tuviera un listado de trabajadores, podría mostrar dicho listado agrupado

según profesión, y entonces tendríamos el listado de albañiles, el listado de profesores, el

listado de policías, el listado de bomberos, etc...

Es decir, el listado de trabajadores se dividiría en grupos según las distintas profesiones

de los trabajadores.

En esta hoja guiada se verá como realizar este tipo de listados.

Page 966: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

966

EJERCICIO GUIADO Nº 1. CREACIÓN DE UN INFORME AGRUPADO

44. Entra en iReport.

45. 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 opción Fichero – Mago de informes.

46. La conexión a usar será Conexión 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 botón Próximo.

47. Los campos a añadir al listado serán: Número, Fecha, Tipo y Cantidad.

Pulse el botón Próximo.

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

Page 967: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

967

Pulse Próximo. 49. Elija una disposición Tabulada del tipo Classic_T. Pulse Próximo y Terminar. 50. Aparecerá el diseño del informe que acaba de crear. Observe que entre las zonas típicas del informe

ha aparecido una nueva zona “de agrupamiento”:

Page 968: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

968

51. Visualice el informe y observe el resultado (al visualizarlo iReport le pedirá que lo guarde. Guárdelo con el nombre serviciosagrupados):

Como ve, aparecen varios sub-listados. Un listado con los servicios de electricidad, otro con los servicios de fontanería, y otro con los servicios de limpieza. Tenemos un informe en grupos. NOTA: Es obligatorio que la consulta del informe esté ordenada según el campo por el que vayamos a agrupar. Esta es la razón por la que la consulta se ordenó por tipo.

52. Ahora se mejorará un poco el listado que se ha hecho. En primer lugar modifique el patrón del campo fecha, de forma que aparezca en formato día-mes-año:

Page 969: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

969

53. También puede resultar interesante modificar el patrón de la Cantidad, de forma que aparezca con

dos decimales:

54. Finalmente asigne el título “Listado de Servicios” al informe. Este debe tener ahora el siguiente

aspecto al visualizarlo:

Page 970: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

970

NOTA:

Es posible agregar distintos niveles de agrupamiento a un informe. Usando el ejemplo del

inicio de esta hoja, podríamos tener un listado de trabajadores agrupado por profesiones y

por estado civil. En este caso, aparecería un grupo por cada profesión, y, cada grupo,

estaría a su vez subdividido en grupos según el estado civil.

Por ejemplo, el grupo de bomberos podría tener el siguiente aspecto:

Bomberos

Page 971: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

971

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 según dichos campos.

En el ejemplo de los trabajadores, la consulta podría tener este aspecto:

select * from trabajadores order by profesión, estado

Se anima al alumno que experimente con esta posibilidad.

Page 972: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

972

CONCLUSIÓN

Un informe agrupado es aquel en que los registros aparecen en distintos grupos.

Los elementos de un grupo tienen la misma característica.

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 través del mago

de informes, ya que este asistente muestra un paso donde se puede elegir el campo

según 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.

Page 973: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

973

EJERCICIO GUIADO. JAVA. INFORMES DE BASE DE DATOS

Conexión con Informes desde Java

Una vez creados los informes con iReport, tendremos que acceder a ellos desde nuestra

aplicación Java.

En esta hoja guiada veremos los pasos básicos necesarios para mostrar un informe

desde una aplicación Java.

Nota: En esta hoja guiada se usará el informe creado en la hoja anterior, llamado

serviciosagrupados.

Page 974: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

974

EJERCICIO GUIADO Nº 1. CREACIÓN DEL INFORME COMPILADO

55. 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á también un fichero

llamado serviciosagrupados.bak. Este fichero es simplemente una copia de seguridad

que se crea automáticamente al guardar el informe.)

56. Vamos a ver el aspecto del informe. Pulse el botón:

Page 975: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

975

Ya sabe que este botón, llamado Ejecutar informe (usando conexión activa),

permite visualizar el informe relleno con los datos de la base de datos, según la

consulta SQL que haya usado.

57. Sin embargo, este botón no solo sirve para visualizar el informe final, sino que además actúa como compilador, generando un fichero del tipo .jasper.

Los ficheros .jasper son informes compilados, de forma que puedan ser usados en

aplicaciones java.

Page 976: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

976

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

58. 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 estén más accesibles.

Para ello, active la opción Opciones – Opciones:

59. En el cuadro de opciones que aparece active la pestaña Compilador.

Page 977: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

977

60. En el primer recuadro que aparece se tiene que indicar el directorio donde aparecerán los ficheros compilados. Para ello, pulse el botón Explorar y seleccione la carpeta Mis Documentos.

Si todo va bien, el resultado será parecido al siguiente:

61. Pulse el botón 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:

Page 978: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

978

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

Page 979: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

979

EJERCICIO GUIADO Nº 2. CONEXIÓN 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 conexión, 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.

Page 980: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

980

5. Crea un botón en la ventana de tu proyecto. El botón contendrá el texto “Informe Agrupado” y su nombre será btnInformeAgrupado.

Page 981: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

981

6. El objetivo es hacer que aparezca el informe serviciosagrupados cuando se pulse este botón. Para ello, programe lo siguiente en el actionPerformed del botón:

Este código le muestra muchos errores, no se preocupe ahora de ellos. En los siguientes pasos se corregirán. De momento lo que se va a hacer es explicar el código 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 continuación viene una línea donde se crea un objeto informe del tipo JasperPrint: JasperPrint informe = JasperFillManager.fillReport(rutainforme,null,conexión);

3. Esta línea 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 través de otro objeto del tipo JasperFillManager.

4. Es interesante que observes el uso de un método llamado fillReport (rellenar informe)

que se encarga de rellenar el informe con datos.

5. Este método necesita tres parámetros:

b. El sitio donde se encuentra el fichero del informe. c. Los parámetros (Null en nuestro ejemplo. Los parámetros se estudiarán en

próximas hojas guiadas) d. Y el objeto conexión, que le permite a java acceder a la base de datos para

recoger los datos que se presentarán en el informe.

Page 982: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

982

1. Una vez creado el objeto informe, solo tenemos que presentarlo en pantalla. Los informes se presentan a través de un objeto del tipo JasperViewer. Los objetos JasperViewer son ventanas donde se muestran los informes.

JasperViewer ventanavisor = new JasperViewer(informe,false);

2. Esta línea de código crea una ventana llamada ventanavisor donde se muestra el

informe informe. El parámetro false indica que al cerrarse la ventana del informe no debe acabar el programa. Si este parámetro fuera true, al cerrar la ventana del informe se cerraría 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 título “Informe de servicios” con el método setTitle.

4. Todo este código debe estar rodeado de un try...catch para evitar errores inesperados.

7. Todos los errores del código se producen debido a que es necesario indicar los imports correspondientes a las clases JasperPrint, JasperFillManager, JasperViewer que participan en el código.

Un import es una línea de código que le dice a java en qué librería debe encontrar la clase correspondiente.

Normalmente, al hacer clic sobre la línea que da el error, aparece el icono de una

bombilla pequeña en la parte izquierda de la ventana. Al hacer clic sobre esta

bombilla se nos informa de la librería que hace falta importar. Ya sabe que basta

hacer clic sobre esta librería para que se añada la instrucción import

correspondiente de forma automática.

Sin embargo, si prueba esto mismo con las líneas erróneas del código anterior,

verá que no aparece ninguna bombilla. Esto es debido a que las librerías 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.

Page 983: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

983

8. Para evitar este error, es necesario incluir en el proyecto una serie de librerías propias del programa

iReport. Esto se hace de la siguiente forma: 9. Haga clic con el botón derecho del ratón sobre el apartado Bibliotecas de su proyecto y luego active

la opción 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

Page 984: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

984

63. Los ficheros que contienen las librerías necesarias para este programa son lo siguientes: commons-collections-2.1, commons-logging-1.0.2 y jasperreports-2.0.1

Empezaremos añadiendo el fichero commons-collections-2.1. Selecciónelo y active Abrir:

Archivos de programa – JasperSoft – iReport-2.0.1 – lib

Page 985: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

985

64. Observará que se ha agregado el fichero a la zona de bibliotecas:

65. Repita el proceso para agregar los otros dos ficheros necesarios. Al final, su zona de Bibliotecas debe quedar así (observe los tres ficheros añadidos):

Page 986: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

986

66. Gracias a la inclusión de estos ficheros, nuestro proyecto ya dispone de las librerías de clases que contienen a las clases que necesitamos, que recuerda que son: JasperPrint, JasperFillManager, JasperViewer

Si ahora haces clic sobre la primera línea que da error, verá como ahora NetBeans ya sabe el import que debe añadirse, y por tanto aparecerá la bombilla. Pulse sobre la bombilla:

67. Tiene que agregar el import para la clase JasperFillManager: net.sf.jasperreports.engine.JasperFillManager

68. Ahora agregue el import para la clase JasperPrint: net.sf.jasperreports.engine.JasperPrint

69. Y finalmente agregue el import para la clase JasperViewer: net.sf.jasperreports.view.JasperViewer

70. Los errores han desaparecido. Ya puede ejecutar el programa.

71. Si pulsa sobre el botón Informe Agrupado aparecerá el informe.

El informe aparece en una ventana (el visor de informes – objeto JasperViewer) que tiene una pequeña barra de herramientas. En esta barra podrá por ejemplo imprimir el informe, o cambiar su zoom, entre otras cosas:

Page 987: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

987

72. Tal como se ha programado este botón, 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 añada otro botón btnImprimirDirectamente a su ventana:

73. Ahora programe dentro de él lo siguiente:

Ventana visor de informes (JasperViewer) Herramientas: guardar, imprimir, zoom, etc...

Page 988: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

988

El código 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. Además se añade una nueva línea: JasperPrintManager.printReport(informe,true); Esta línea usa un objeto llamado JasperPrintManager que se encarga de imprimir el informe informe usando el método printReport. Si el segundo parámetro tiene el valor true, entonces significa que aparecerá el cuadro de diálogo de impresión:

Si estuviera a false, este cuadro de diálogo no aparecería y el informe se enviaría directamente a la impresora configurada por defecto en el ordenador.

Page 989: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

989

En nuestro caso, al tener el valor true, este cuadro sí aparecerá.

74. Ejecute el programa y pruebe el nuevo botón. No hace falta que imprima el informe.

Page 990: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

990

CONCLUSIÓN

Para poder imprimir un informe creado con iReport desde una aplicación Java es

necesario agregar ciertas librerías pertenecientes al programa iReport:

commons-collections-2.1, commons-logging-1.0.2 y jasperreports-2.0.1

Una vez agregadas estas librerías, 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.

Page 991: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

991

EJERCICIO GUIADO. JAVA. INFORMES CON PARÁMETROS

Conexión con Informes desde Java: Parámetros

En la hoja guiada anterior se conectó una aplicación Java con un informe realizado con

iReport. La aplicación contaba con un botón 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 añaden nuevos registros a las tablas, estos

registros aparecerán 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 ningún 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 más 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 parámetros en la consulta SQL del informe. Un

parámetro se podría definir como dato de la consulta que no está definido aún. Es

necesario definir ese dato antes de ejecutar la consulta y extraer los datos que se

mostrarán.

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 información que aparece en el

listado.

Page 992: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

992

En esta hoja se verá un ejercicio paso a paso de uso de parámetros en la consulta de

informe, y de esta manera entender la utilidad de esta característica.

Page 993: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

993

EJERCICIO GUIADO Nº 1. CREACIÓN DE UN INFORME CON PARÁMETROS

75. 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 Pérez:

76. Visualízalo para recordar su aspecto:

Page 994: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

994

77. Este informe tiene un gran diseño pero está muy limitado, ya que solo es capaz de mostrar el listado de servicios realizados por el trabajador Juan Pérez (DNI 12.321.567-B) Si quisiéramos sacar el listado de servicios de otro trabajador, este informe no nos serviría.

Es necesario hacer que este informe sea más versátil, que sea capaz de mostrar

el listado de servicios de cualquier trabajador. Para ello, será necesario crear un

parámetro en la consulta SQL.

78. Acceda a la consulta del informe a través de la opción Datos – Consulta de informe y obsérvela:

Page 995: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

995

La consulta SQL extrae información de aquellos servicios que hayan sido realizados por el trabajador con DNI 12.321.567-B.

79. Cambie la consulta para que quede así:

Lo que acaba de añadir es un parámetro llamado DNI. Observe su estructura:

$P{nombredelparámetro}

Page 996: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

996

En nuestro caso el nombre que le hemos dado al parámetro es “DNI”, por lo tanto el parámetro es:

$P{DNI}

Este parámetro indica que el DNI no está definido aún. Será el usuario el que

introduzca el DNI según el cual habrá que consultar en la base de datos.

80. Pulse OK. Cada vez que use un parámetro hay que definirlo en el programa iReport. Esto se hace en la zona de campos. Observa que tenemos también una zona de parámetros:

81. En la carpeta de parámetros haz clic con el botón derecho del ratón e indica la opción Add – Parameter para añadir un nuevo parámetro:

Page 997: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

997

82. En la ventana que aparece debes indicar el nombre que le has dado al parámetro. En nuestro caso, el nombre asignado es “DNI”:

83. Ahora ya tiene definido un parámetro 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 parámetro no tiene ahora ningún valor. Al visualizar el informe aparecerá el siguiente mensaje:

Page 998: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

998

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

85. Cierre iReport, guarde los cambios y pase al siguiente ejercicio.

Page 999: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

999

EJERCICIO GUIADO Nº 2. USO DE PARÁMETROS DE UN INFORME DESDE JAVA

1. Abra la aplicación Java que realizó en la hoja guiada anterior. Añada en su ventana un nuevo botón y un cuadro de texto.

El botón 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 botón 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

posición del parámetro. 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 nenúfares.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)

Page 1000: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1000

5. Ahora programe el siguiente código en el actionPerformed del botón Servicios Trabajadores.

Estudiemos con detenimiento este código.

En él verá dos líneas nuevas en las que se definen los valores de los parámetros:

Map parametros = new HashMap();

parametros.put(“DNI”,txtDNI.getText());

En la primera de estas dos líneas se define un objeto de tipo Map. Este objeto contendrá

el nombre de cada parámetro que usará y el valor de dicho parámetro.

Observe la segunda línea, en ella se define el parámetro 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.

Page 1001: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1001

Si existieran más parámetros habría que definirlos de la misma forma, por ejemplo:

parametros.put(“sueldo”,txtSueldo.getText());

parametros.put(“codigo”,”A-54”);

En este código ficticio se crea un parámetro sueldo al que se le asigna el valor de un

cuadro de texto txtSueldo. Y se crea un parámetro codigo al que se le asigna el valor “A-

54”.

En nuestro caso solo necesitamos usar un parámetro llamado DNI. Hay que tener en

cuenta que el nombre del parámetro debe ser el mismo que el nombre usado en iReport.

La siguiente línea es la que crea el objeto informe (JasperPrint) Esta línea crea el informe

a partir del fichero de informe compilado serviciosjuan.jasper, a partir de la base de datos

(representada por el objeto conexión) y lo más interesante ahora es que se indica el

conjunto de parámetros a través del objeto parametro creado antes.

JasperPrint informe =

JasperFillManager.fillReport(rutaInforme,parametros,conexion);

Cuando el informe que se va a mostrar no tiene parámetros, entonces se usa el valor null,

en caso contrario, se usa el objeto parámetro (Map)

El resto del código es igual que los anteriores, se crea el visor de informe conteniendo el

informe y se muestra en pantalla.

Page 1002: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1002

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 Pérez.

El uso de parámetros en los informes da potencia y versatilidad a las aplicaciones,

y es algo muy usado.

Page 1003: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1003

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 parámetro equivalente a un dato. Concretamente, a un DNI. Este dato

forma parte de una condición. 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 aplicación java y la condición se

completará.

Sin embargo, hay que indicar que también se pueden crear parámetros que sustituyan a

una condición completa, en vez de a un solo dato. Observa el siguiente ejemplo:

select * from trabajadores, servicios

where trabajadores.dni=servicios.dni and $P!{COND}

Condición

parámetro

Page 1004: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1004

order by servicios.fecha

En este caso, el parámetro se llama COND y no sustituye a un simple dato, sino que

sustituye a toda la condición. En este caso, la aplicación java mandará una cadena que

tenga forma de condición SQL, como por ejemplo: “trabajadores.sueldo > 200”,

que será reemplazada en el lugar del parámetro.

Para que lo vea claro, el código a usar en la aplicación java para dar valor al parámetro

podría ser como sigue:

Map parametros = new HashMap();

parametros.put(“COND”, “trabajadores.sueldo>200”);

Observa que el valor del parámetro es una condición entera.

Cuando se quiera usar un parámetro que represente a un dato, se usará la siguiente

sintaxis:

$P{nombreparámetro}

Cuando se quiera usar un parámetro que represente a una condición, se usará la

siguiente sintaxis:

$P!{nombreparámetro}

(Observa el uso de la admiración !)

Page 1005: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1005

Page 1006: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1006

CONCLUSIÓN

Cuando un informe tiene una instrucción SQL invariable, siempre mostrará los

mismos datos.

Puede resultar interesante que parte de la instrucción SQL del informe pueda variar,

de forma que se pueda extraer distinta información según el dato que varía. Estos

datos variantes se denominan parámetros.

Un parámetro puede referirse a un dato concreto, o a una condición.

Si el parámetro se refiere a un dato concreto, entonces tiene la siguiente forma:

$P{nombre}

Si el parámetro se refiere a una condición, entonces tiene la siguiente forma:

$P!{nombre}

El parámetro debe ser sustituido por un valor que es proporcionado desde la

aplicación java, y es entonces cuando la instrucción SQL se completa y se ejecuta.

En la aplicación java es necesario crear un objeto de tipo Map que contenga los

distintos parámetros con los valores de cada uno para luego enviar este objeto al

informe que se quiere mostrar.

Page 1007: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1007

El uso de parámetros en informes hace que estos sean mucho más versátiles y que

el programa tenga más posibilidades.

Page 1008: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1008

EJERCICIO GUIADO. JAVA. CARPETA DISTRIBUIBLE

Distribución e Instalación de programas en Java

Una vez que se ha finalizado el programa, debemos prepararlo para la instalación en el

ordenador del cliente. Para ello, es necesario tener en cuenta todos aquellos ficheros

externos que han sido necesarios para la programación de la aplicación: base de datos,

imágenes, informes, etc...

A continuación se indican las cosas a tener en cuenta a la hora de realizar una

distribución de nuestro proyecto.

1. En primer lugar es necesario pulsar el botón Limpiar y construir proyecto principal. Este botón compila el programa y crea una carpeta llamada dist dentro de la carpeta del proyecto, la cual será la carpeta “distribuible”.

(Si hubiera un error de compilación el proceso se detendría y aparecería un mensaje de error)

2. Si realiza esta operación con alguno de sus proyectos, puede acudir a la carpeta del proyecto y observará la existencia de la carpeta dist:

Page 1009: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1009

3. Entre dentro de esta carpeta y observe su contenido:

4. Observará la existencia de un fichero con extensión .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.

Page 1010: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1010

Debe recordar que los programas java pueden ejecutarse en cualquier entorno.

Por ello, los ejecutables java no tienen una extensión .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 máquina virtual de java.

5. Aparte del fichero ejecutable (.jar) el cual tendrá el nombre del proyecto, verá también una carpeta lib. Esta carpeta contendrá aquellas librerías 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. Imágenes, Iconos.

Page 1011: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1011

Si está usando imágenes en su programa (para la presentación, los iconos de los

botones de las barras de herramientas, etc.) tendrá que introducir los ficheros de

estas imágenes dentro de la carpeta distribuible.

Si es ordenado, todas estas imágenes estarán dentro de una misma carpeta

(llamada por ejemplo imágenes) Así pues, copie la carpeta que contiene las

imágenes que está usando dentro la carpeta distribuible:

8. Informes.

Si su programa usa informes, es necesario que los ficheros de estos estén dentro

de la carpeta del distribuible.

Los ficheros de informes necesarios para el funcionamiento del programa son los

ficheros compilados .jasper. Los demás no son necesarios incluirlos.

Page 1012: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1012

Estos ficheros estarán 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 quedaría ahora así:

9. Imágenes de informes.

Si los informes del programa usan imágenes, la situación de estas en la carpeta

distribuible depende de la forma en que haya configurado dichas imágenes 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:

Page 1013: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1013

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.

Page 1014: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1014

10. Si estamos ante este caso, para que funcione los informes con imágenes de su programa es necesario que introduzca las imágenes de los informes directamente en la carpeta distribuible. En nuestro ejemplo la carpeta distribuible quedaría así:

11. Sin embargo, para mantener una cierta organización de la carpeta distribuible, sería interesante que las imágenes de los informes estuvieran también dentro de la carpeta Imágenes. Si quisiera hacer esto, tendría que modificar sus informes con imágenes de forma que se indicara la carpeta donde estará cada imagen. En nuestro ejemplo, la imagen del informe se tendría que haber configurado así:

Page 1015: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1015

12. Si modifica sus informes con imágenes de esta forma y los recompila, entonces podrá organizar su carpeta distribuible de esta manera:

Se indica que las imagen “logo.jpg”

estará dentro de una subcarpeta

Imágenes.

Page 1016: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1016

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 ubicación de la base

de datos, los informes y las imágenes es la correcta.

La carpeta Informes contiene los .jasper

La carpeta Imagenes contiene todas las

imágenes del programa así como las

imágenes usadas por los informes.

Page 1017: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1017

14. Para la instalación 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 máquina 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 tendría que instalar para que el proyecto pudiera ejecutarse.

Page 1018: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1018

CONCLUSIÓN

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 máquina virtual de java para que nuestro

proyecto funcione.

La instalación consistirá básicamente en copiar la carpeta dist al ordenador del

cliente, y en instalar la máquina 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 añadir la base de

datos, los informes y las imágenes del proyecto, si es que este usa alguno de

dichos elementos.

Page 1019: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1019

EJERCICIO GUIADO. JAVA. INSTALABLE.

Instalación 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 máquina virtual de java para que nuestro

programa funcione. Una vez instalada la máquina 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 informáticos básicos. En este

caso, podría ser interesante automatizar la instalación del programa a través de un fichero

de instalación.

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 aplicación que nos permite crear un fichero de instalación a partir de una

aplicación escrita en java. Esto nos permite que nuestras aplicaciones Java sean más

fáciles de distribuir e instalar.

Page 1020: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1020

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.

El programa IZPack se proporciona en la carpeta Herramientas de la carpeta compartida

del curso, aunque puedes bajarte la última versión de forma gratuita desde esta página

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.

Page 1021: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1021

Creación de un Instalable con IZPack. PREPARACIÓN.

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 guardarás en la carpeta Distribuible.

3. Ahora crea usando el Bloc de Notas un fichero llamado Leeme.txt. Aquí introducirás algún comentario sobre tu proyecto que consideres útil para el cliente. Por ejemplo datos de contacto (teléfono, email), información sobre la versión del programa o cualquier otra información que consideres interesante. Este fichero también lo guardarás en la carpeta Distribuible.

4. Busca un icono para tu programa y almacénalo también 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 fíjese en los textos remarcados):

Page 1022: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1022

<?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?>

<installation version="1.0">

<info>

<appname>Nombre del Programa</appname>

<appversion>Versión</appversion>

<authors>

<author name="Juan Pérez" email="[email protected]"/>

</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"/>

Page 1023: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1023

<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"/>

<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 continuación:

- Datos del programador.

En la primera parte del fichero se indican los datos del programador y del

programa. Observe:

<info>

Pon aquí el nombre de tu programa. Y aquí la versión

Page 1024: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1024

<appname>Nombre del Programa</appname>

<appversion>Versión</appversion>

<authors>

<author name="Juan Pérez" email="[email protected]"/>

</authors>

<url>http://www.mipagina.es/</url>

</info>

- Carpetas de tu programa.

En la parte final del fichero tendrás que indicar las carpetas que forman tu programa (es decir las carpetas que contiene la carpeta distribuible) Observa:

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

Escribe aquí tu nombre,

Y tu página web

En este ejemplo se supone que la carpeta

distribuible (dist) contiene:

- Una carpeta de librería (lib) - Una carpeta para la base de

datos (base) - - Una carpeta para los informes

(informes) - Una carpeta para las imágenes

(imágenes)

Tendrá que indicar también el nombre

del fichero executable de su programa, el

cual se encuentra también dentro de la

carpeta distribuible. En este ejemplo se

supone que el fichero se llama

gestion.jar. Escriba usted el nombre de

su programa.

Page 1025: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1025

Y este es el fichero de icono que ha

introducido en la carpeta distribuible.

Page 1026: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1026

7. Ahora tiene que añadir un nuevo fichero dentro de la carpeta Distribuible que configura la creación 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

fíjese 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 Mecánico"

target="$INSTALL_PATH\uninstaller\uninstaller.jar"

Page 1027: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1027

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 continuación:

<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" 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 tendrás que averiguar como se

llama el tuyo) y el nombre del fichero de icono.

Page 1028: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1028

/>

<shortcut name="Desinstalar Taller Mecánico"

target="$INSTALL_PATH\uninstaller\uninstaller.jar"

workingDirectory="$INSTALL_PATH"

iconFile="$INSTALL_PATH\icono.ico"

startMenu="no"

programGroup="yes"

/>

</shortcuts>

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

Mecánico”, porque el programa gestiona un

Page 1029: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1029

Creación de un Instalable con IZPack. GENERACIÓN 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 símbolo 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 accederás a la carpeta del programa IZPACK:

Page 1030: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1030

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 tendrías

que indicar el siguiente comando para crear el instalable:

bin\compile c:\proyectos\dist\install.xml -b c:\proyectos\dist

4. Al ejecutar este comando, se generará un fichero llamado install.jar dentro de la carpeta distribuible. Este es el fichero de instalación.

5. Si ejecuta este fichero aparecerá un programa de instalación que le guiará a través de varios pasos por la instalación de su programa. El resultado será que instala su programa en el menú inicio e incluso, si activa la opción correspondiente durante la instalación, se creará un acceso directo en el escritorio a su programa.

Creación de un Instalable con IZPack. DISTRIBUCIÓN DEL INSTALABLE.

Page 1031: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1031

1. Una vez creada la carpeta de distribución con el fichero install.jar dentro de ella, solo hay que guardar esta carpeta en un CD y entregárselo al cliente.

2. El cliente solo tiene que introducir el CD, entrar dentro de él y ejecutar con un doble clic el fichero de instalación install.jar. Y el programa se instalará automáticamente.

3. Es necesario que el cliente tenga instalada la máquina virtual de java en su ordenador para que la instalación sea posible. Por eso es recomendable incluir en el CD la máquina virtual de java para que el usuario pueda instalarla también antes de instalar su programa.

Page 1032: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1032

CONCLUSIÓN

La distribución 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 básicos de informática podemos

crear un fichero de instalación dentro de la carpeta distribuible para que el usuario

solo tenga que entrar dentro de ella y hacer doble clic sobre el fichero de

instalación.

Para generar el fichero de instalación, es necesario usar un programa llamado

IZPACK.

Se introducirán varios ficheros dentro de la carpeta distribuible, necesarios para la

creación 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 máquina virtual

de java para que el cliente también la pueda instalar.

Hay que tener en cuenta que si el cliente no tiene instalada la máquina virtual de

java no se podrá realizar la instalación del programa.

Page 1033: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1033

METODOLOGÍA DE LA PROGRAMACIÓN

EJERCICIOS PARA PROGRAMAR JAVA

PRIMEROS PROGRAMAS

Ejercicio 1

Realice un programa en java con las siguientes características:

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 botón con el texto “Ocultar Nombre”. Nombre del botón: btnOcultarNombre

- Un botón con el texto “Visualizar Nombre”. Nombre del botón: btnVisuNombre

- Un botón con el texto “Ocultar Ciudad”. Nombre del botón: btnOcultarNombre

- Un botón con el texto “Visualizar Ciudad”. Nombre del botón: btnVisuCiudad

El funcionamiento del programa será el siguiente:

- Cuando se pulse el botón btnOcultarNombre, se debe ocultar la etiqueta etiNombre. - Cuando se pulse el botón btnVisuNombre, se debe visualizar la etiqueta etiNombre.

Page 1034: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1034

- Cuando se pulse el botón btnOcultarCiudad, se debe ocultar la etiqueta etiCiudad. - Cuando se pulse el botón btnVisuCiudad, se debe visualizar la etiqueta etiCiudad.

Para hacer esto debe programar el evento actionPerformed de cada botón.

Usará el método 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 vacía (sin texto dentro). El nombre será etiTexto1. - Otra etiqueta vacía (sin texto dentro). El nombre será etiTexto2. - Un botón con el texto “Traspasa 1”. El nombre será btnTraspasa1. - Un botón con el texto “Traspasa 2”. El nombre será btnTraspasa2.

El programa funcionará de la siguiente forma:

- Cuando el usuario pulse el botón “Traspasa 1”, lo que se haya escrito dentro del cuadro de texto se copiará dentro de la etiqueta 1.

- Cuando el usuario pulse el botón “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 botón.

Usará el método setText para situar el texto en la etiqueta, y getText para recoger el texto del

cuadro de texto.

Page 1035: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1035

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 vacía llamada etiTexto. - Un botón con el texto “Vaciar” llamado btnVaciar.

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 botón “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 método setText para colocar texto en la etiqueta y usar el método 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.

Page 1036: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1036

- Un cuadro de texto llamado txtCiudad. - Una etiqueta llamada txtFrase. - Un botón con el texto “Aceptar” llamado btnAceptar. - Un botón con el texto “Desactivar” llamado btnDesactivar. - Un botón 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 botón “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 botón “Desactivar”, entonces los dos cuadros de texto se desactivarán. Cuando el usuario pulse el botón “Activar”, los dos cuadros de texto se volverán a activar.

Tendrá que programar el evento actionPerformed de los botones.

Tendrá que usar la concatenación de cadenas. Recuerde que se pueden concatenar cadenas a

través del operador +.

Tendrá que usar el método setText para colocar el texto en la etiqueta y el método getText para

recoger el texto de cada cuadro de texto.

Tendrá que usar el método setEnabled para activar o desactivar cada cuadro de texto.

Page 1037: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1037

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 tamaño más grande que las otras y un color de fondo.

El programa debe funcionar de la siguiente forma:

- Cuando el puntero del ratón “sobrevuele” la etiqueta etiOcultar, las etiquetas con las palabras deben desaparecer.

- Cuando el puntero del ratón salga de la superficie de la etiqueta etiOcultar, entonces las etiquetas con las palabras volverán a aparecer.

Tendrá que programar los eventos mouseEntered y mouseExited para que el programa detecte

cuando el ratón entra o sale de la etiqueta etiOcultar.

Debe usar el método 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 botón con el texto “Esquina”. Este botón se llamará btnEsquina.

Page 1038: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1038

- Un botón con el texto “Centro”. Este botón se llamará btnCentro. - Un botón con el texto “Agrandar”. Este botón se llamará btnAgrandar. - Un botón con el texto “Achicar”. Este botón se llamará btnAchicar.

El programa debe funcionar de la siguiente forma:

- Cuando el usuario pulse el botón “Esquina”, la etiqueta etiNombre se colocará en la esquina de la ventana.

- Cuando el usuario pulse el botón “Centro”, la etiqueta etiNombre se colocará en el centro de la ventana.

- Cuando el usuario pulse el botón “Agrandar”, la etiqueta etiNombre cambiará de tamaño, agrandándose.

- Cuando el usuario pulse el botón “Achicar”, la etiqueta etiNombre cambiará de tamaño, empequeñeciéndose.

- Cuando el usuario lleve el puntero sobre uno de los botones, el botón cambiará de tamaño agrandándose. Cuando el puntero salga del botón, el botón volverá a su tamaño normal.

Debe programar los eventos actionPerformed, mouseEntered y mouseExited para los botones.

Tendrá que usar el método setLocation para cambiar la posición de la etiqueta. Este método recibe

como parámetro la posición x e y donde situará el componente.

Tendrá que usar el método setSize para cambiar el tamaño de la etiqueta y de los botones. Este

método recibe como parámetro el ancho y alto del componente.

La propiedad preferredSize permite definir un tamaño inicial a cada componente de la ventana.

Ejercicio 7

Page 1039: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1039

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 botón con el texto “Azul”. Este botón se llamará btnAzul. - Un botón con el texto “Rojo”. Este botón se llamará btnRojo. - Un botón con el texto “Verde”. Este botón se llamará btnVerde. - Un botón con el texto “Fondo Azul”. Este botón se llamará btnFondoAzul. - Un botón con el texto “Fondo Rojo”. Este botón se llamará btnFondoRojo. - Un botón con el texto “Fondo Verde”. Este botón se llamará btnFondoVerde. - Un botón con el texto “Transparente”. Este botón se llamará btnTransparente. - Un botón con el texto “Opaca”. Este botón se llamará btnOpaca.

El programa debe funcionar de la siguiente forma:

- Cuando se pulse el botón “Azul”, el texto de la etiqueta se pondrá de color azul. - Cuando se pulse el botón “Rojo”, el texto de la etiqueta se pondrá de color rojo. - Cuando se pulse el botón “Verde”, el texto de la etiqueta se pondrá de color verde. - Cuando se pulse el botón “Fondo Azul”, el fondo de la etiqueta se pondrá de color azul. - Cuando se pulse el botón “Fondo Rojo”, el fondo de la etiqueta se pondrá de color rojo. - Cuando se pulse el botón “Fondo Verde”, el fondo de la etiqueta se pondrá de color verde. - Cuando se pulse el botón “Transparente”, la etiqueta dejará de ser opaca. - Cuando se pulse el botón “Opaca”, se activará la propiedad opaca de la etiqueta.

Debe programar los eventos actionPerformed de cada botón.

Para cambiar el color de fondo de una etiqueta, usará el método setBackground.

Para cambiar el color del texto de una etiqueta, usará el método 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 método setOpaque.

Page 1040: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1040

Page 1041: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1041

PROGRAMACIÓN

JAVA

LISTAS, COMBOS, MODELOS

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 opción con los siguientes nombres:

Page 1042: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1042

o Un botón “Trimestre 1” llamado optTri1. o Un botón “Trimestre 2” llamado optTri2. o Un botón “Trimestre 3” llamado optTri3. o Un botón “Trimestre 4” llamado optTri4. o Todos estos botones deben estar agrupados a través de un objeto ButtonGroup al

que llamaremos grupoTrimestres. o Interesará que estos botones estén dentro de un panel.

- Un botón “Rellenar” llamado btnRellenar. - Un botón “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 continuación el usuario pulsará el botón 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 botón, entonces el cuadro de lista

contendrá: Abril, Mayo, Junio. - Cuando el usuario pulse el botón Vaciar, el cuadro de lista se vaciará. - 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:

Page 1043: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1043

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 botón “Rellenar” llamado btnRellenar. - Una etiqueta llamada etiResultado. - Un botón “Vaciar” llamado btnVaciar.

El programa funcionará de la siguiente forma:

- El usuario introducirá un número en txtInicio. - Luego introducirá otro número en txtFin. - También introducirá un número en txtIntervalo. - Al pulsar el botón Rellenar, el combo se rellenará con el listado de números comprendidos

entre el número inicial y el número final con intervalo el indicado.

- Un ejemplo: o El usuario introduce en txtInicio un 2 o El usuario introduce en txtFin un 12

Page 1044: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1044

o El usuario introduce en txtIntervalo un 3 o Al pulsar el botón Rellenar, el combo debe rellenarse con los siguientes números:

2, 5, 8, 11 o Observa, del 2 al 12 saltando de 3 en 3.

- Al elegir cualquiera de los números en el combo, este debe mostrarse en la etiqueta etiResultado.

- Al pulsarse el botón “Vaciar” el combo se vacia.

A tener en cuenta.

- Si el usuario introduce algo que no sea un número en los cuadros de texto, el programa debería mostrar un error.

- El número inicial debe ser menor que el número final. En caso contrario el programa debe mostrar un error.

Page 1045: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1045

PROGRAMACIÓN

JAVA

JTOGGLEBUTTONS

Ejercicio 1

Realice un programa cuya ventana tenga el siguiente aspecto:

Page 1046: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1046

- Los botones numerados desde el 1 al 6 son JToggleButtons. Sus nombres son respectivamente: botonUno, botonDos, etc…

- 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 números de los botones seleccionados. Por ejemplo, si están seleccionados el 2 y el 4, aparecerá un 6.

- Si se pulsa el botón Desactivar Todos, todos los botones activados se desactivarán.

- Si se pulsa el botón Activar Todos, se activarán todos los botones.

Page 1047: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1047

PROGRAMACIÓN

JAVA

JSLIDER

Ejercicio 1

Una empresa de productos químicos 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 fórmula:

Litros de agua = 2 * Litros a Fabricar + Calidad / Densidad

La cantidad de sales necesaria viene dada por la siguiente fórmula:

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 estarán comprendidos entre 1 y 100. El valor inicial del deslizador será 50.

Page 1048: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1048

- Un JSlider llamado deslizadorCalidad que represente la calidad del detergente. Sus valores estarán comprendidos entre 0 y 10. El valor inicial será 5.

- Un JSlider llamado deslizadorDensidad que represente la densidad deseada. Sus valores estarán 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 / algún panel.

La ventana puede tener el siguiente aspecto:

Page 1049: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1049

El programa funcionará de la siguiente forma:

- El usuario arrastrará los deslizadores y automáticamente aparecerá en las etiquetas los valores de cada deslizador y la cantidad total de aguas y sales calculada.

El usuario arrastra los

deslizadores...

...Los valores de las etiquetas

cambian...

Page 1050: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1050

Page 1051: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1051

PROGRAMACIÓN

JAVA

JSPINNER

Ejercicio 1

Se propone hacer un juego sencillo, que simule la apertura de una caja a través de una combinación. Para ello, debes crear una ventana como la que sigue:

Esta ventana contiene los siguientes elementos:

- Tres JSpinner a los que se les llamará: spiCentenas, spiDecenas y spiUnidades. Estos JSpinner solo admitirán los valores entre 0 y 9.

- Un botón btnAbrir.

- Una etiqueta con borde llamada etiResultado.

Page 1052: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1052

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 botón 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 número menor que 246, entonces en la etiqueta debe aparecer el mensaje: “El número secreto es mayor”.

- Si los valores de los JSpinner forman un número mayor que 246, entonces en la etiqueta debe aparecer el mensaje: “El número secreto es menor”.

Nota:

- Ten en cuenta que el valor obtenido de un JSpinner no es un número. Si quieres obtener el número entero del JSpinner tienes que usar un código como este:

int x;

x = Integer.parseInt(spiValor.getValue().toString()) ;

- Sea el número A las centenas, el B las decenas y el C las unidades. Para calcular el número correspondiente hay que hacer el siguiente cálculo:

N = A * 100 + B * 10 + C

Page 1053: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1053

Ejemplo de funcionamiento:

Seleccionas los números...

Pulsas Abrir...

Page 1054: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1054

PROGRAMACIÓN

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 usarán varias barras de desplazamiento. La ventana del programa que debe construir debe ser similar a la siguiente:

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 verificación que puede llamar chkFrecuencia1, chkFrecuencia2, etc… - Un panel con título y dentro de él tres botones de opción a los que puede llamar optPelícula,

optConcierto y optPlano. (Para estos tres botones de radio necesitará un objeto del tipo ButtonGroup al que puede llamar grupoEcualización)

El programa funcionará de la siguiente forma:

- Las cinco barras de desplazamiento deben tener valores comprendidos entre un mínimo de 0 y un máximo de 10. El incremento unitario debe ser de 1 y el incremento en bloque de 2.

Page 1055: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1055

- 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 máximo una barra en la etiqueta aparezca un 10.

- Las casillas de verificación indican el bloqueo o no de cada barra. Si el usuario activa una casilla de

verificación, 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 método setEnabled)

- Las opciones de ecualización predefinidas permitirán colocar las barras de desplazamiento en unos

valores predefinidos. Concretamente:

o Si el usuario activa la opción Película, las barras quedarán con los siguientes valores respectivamente: 2, 5, 8, 5, 2

o Si el usuario activa la opción Concierto, las barras quedarán con los siguientes valores respectivamente: 9, 5, 1, 5, 9

o Si el usuario activa la opción Plano, todas las barras se colocarán a 5.

- Cuando el programa se inicie, todas las barras deben estar a 5 y la opción Plano debe estar activada.

Page 1056: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1056

PROGRAMACIÓN

JAVA

BARRA DE MENÚS

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 verificación.

El programa además debe de contar con un menú con una opción llamada “Activación” y otra llamada “Info” La opción Activación contendrá las siguientes opciones:

Page 1057: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1057

- La opción “Apagar Todas” desactivará todos los cuadros de verificación de las luces. - La opción “Encender Todas” activará todos los cuadros de verificación de las luces. - La opción “Dia” contiene las siguientes subopciones:

- Si se activa la opción “Dia – Oficina 1”, entonces se encenderán (activarán) las luces principal y secundaria de la oficina 1, y se apagará (desactivará) la luz de seguridad de dicha oficina.

- Si se activa la opción “Dia – Oficina 2”, entonces se encenderán (activarán) las luces principal y

secundaria de la oficina 2, y se apagará (desactivará) la luz de seguridad de dicha oficina.

- Si se activa la opción “Dia – Oficina 3”, entonces se encenderán (activarán) las luces principal y secundaria de la oficina 3, y se apagará (desactivará) la luz de seguridad de dicha oficina.

- Si se activa la opción “Dia – Todas”, entonces todas las oficinas tendrán las luces principal y

secundarias encendidas, y apagadas las luces de seguridad. La opción Noche contiene las siguientes opciones:

- Si se activa la opción “Noche – Oficina 1”, entonces se apagarán las luces principal y secundaria de la oficina 1 y se encenderá la luz de seguridad.

- Si se activa la opción “Noche – Oficina 2”, entonces se apagarán las luces principal y secundaria de

la oficina 2 y se encenderá la luz de seguridad.

- Si se activa la opción “Noche – Oficina 3”, entonces se apagarán las luces principal y secundaria de la oficina 3 y se encenderá la luz de seguridad.

Page 1058: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1058

- Si se activa la opción “Noche – Todas”, entonces se apagarán todas las luces principales y

secundarias de todas las oficinas y se encenderán todas las luces de seguridad. La opción Salir permitirá finalizar el programa.

La opción Info del menú contendrá lo siguiente:

- La opción Principales mostrará un JOptionPane donde se indique cuantas luces principales hay encendidas ahora mismo y cuantas apagadas.

- La opción Secundarias mostrará un JOptionPane donde se indique cuantas luces secundarias hay

encendidas ahora mismo y cuantas apagadas.

- La opción Seguridad mostrará un JOptionPane donde se indique cuantas luces de seguridad hay encendidas y cuantas apagadas.

- La opción Acerca de... mostrará un JOptionPane que contendrá el nombre del programa y del

programador.

MEJORA OPCIONAL Sería interesante que cada cuadro de verificación estuviera acompañado de una pequeña imagen que representara una bombilla encendida o apagada según el estado de la luz. Use etiquetas para contener las imágenes. En el EJERCICIO DE INVESTIGACIÓN 2 puede encontrar más información sobre esto.

Page 1059: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1059

PROGRAMACIÓN

JAVA

BARRA DE HERRAMIENTAS

Ejercicio 1

Se va a mejorar el programa de control de luces de la hoja anterior, añadiéndole una barra de herramientas. El programa anterior tenía un menú con las siguientes opciones:

Page 1060: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1060

El objetivo del ejercicio es crear una barra de herramientas que contenga un botón para algunas de las opciones principales del menú. Concretamente, la barra de herramientas contendrá los siguientes botones:

- Un botón para la opción Apagar Todas. - Un botón para la opción Encender Todas. - Un botón para activar todas las oficinas en modo “día” (es equivalente a la opción Activación – Día –

Todas) - Un botón para activar todas las oficinas en modo “noche” (es equivalente a la opción Activación –

Noche – Todas) - Un botón para conseguir información sobre las luces principales (Info – Principales) - Un botón para conseguir información sobre las luces secundarias (Info – Secundarias) - Un botón para conseguir información sobre las luces de seguridad (Info – Seguridad)

En cada actionPerformed de cada botón de la barra de herramientas se tiene que programar el mismo código que el de la opción del menú correspondiente.

Page 1061: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1061

PROGRAMACIÓN

JAVA

MENÚS CONTEXTUALES

Ejercicio 1

Se va a añadir una mejora más en el programa de luces realizado en las hojas anteriores. Concretamente se añadirá un menú contextual que contenga las siguientes opciones: Apagar Todas Encender Todas ------------------- (Separador) Modo Día Modo Noche ------------------- (Separador) Principales Secundarias Seguridad Este menú aparecerá cuando el usuario haga clic con el botón derecho del ratón sobre el fondo de la ventana de su programa. Es decir, tendrá que programar el clic del ratón sobre el formulario. Las opciones del menú contextual coinciden con las opciones de la barra de menús de la siguiente forma: Apagar Todas – Activación / Apagar Todas Encender Todas – Activación / Encender Todas Modo Día – Activación / Día / Todas Modo Noche – Activación / Día / Noche Principales – Info / Principales Secundarias – Info / Secundarias Seguridad – Info / Seguridad Programe dichas opciones de forma que se realice la operación correspondiente a su opción del menú hermana.

Page 1062: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1062

PROGRAMACIÓN

JAVA

DIALOGO ABRIR/GUARDAR FICHERO

Notas Iniciales

Supongamos que tiene en su proyecto un objeto del tipo JFileChooser llamado elegirFichero. A través del método getSelectedFile obtiene el fichero que ha elegido el usuario. El método 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 código, verá que se crea una variable f de tipo File. Y f es el fichero elegido por el usuario en el cuadro de diálogo Abrir. Los objetos del tipo File poseen diversos métodos que permiten obtener información sobre el fichero y realizar algunas operaciones con ellos. He aquí algunos métodos que se pueden usar: getName() - Devuelve el nombre del fichero. Por ejemplo: String nombre = f.getName(); //La variable nombre contendría el nombre del fichero f getPath() - Devuelve el camino completo del fichero. Por ejemplo: String camino = f.getPath(); //La variable camino contendría el camino del fichero f exists() - Devuelve verdadero o falso según exista o no.

Page 1063: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1063

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 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 botón “Info Fichero”, aparecerá el cuadro de diálogo (JFileChooser) Abrir, donde el usuario podrá elegir un fichero. Una vez que el usuario elija un fichero y pulse el botón “Abrir”, aparecerán 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.

Page 1064: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1064

- Si el usuario, en cambio, pulsa el botón “Eliminar Fichero”, entonces el programa mostrará el cuadro de diálogo “Abrir” y una vez que el usuario elija un fichero, el programa lo borrará (use delete())

Pida una confirmación antes de eliminar el fichero. Tenga cuidado al comprobar esta opción.

Page 1065: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1065

PROGRAMACIÓN

JAVA

VARIABLES GLOBALES

Ejercicio 1

Realizar un programa cuya ventana contenga los siguientes elementos:

- Un cuadro de texto llamado txtNumero. - Un botón “Acumular” llamado btnAcumular. - Un botón “Resultados” llamado btnResultados. - Un botón “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 número en el cuadro de texto txtNumero y luego pulsará el botón “Acumular”. En ese momento se borrará el número introducido en el cuadro de texto.

- Este proceso lo repetirá el usuario varias veces.

- Cuando el usuario pulse el botón “Resultados”, deben aparecer en las etiquetas los siguientes datos:

o El número mayor introducido hasta el momento. o La suma de los números introducidos hasta el momento. o La media de los números introducidos hasta el momento. o Cuantos números ha introducido el usuario hasta el momento.

- El botón “Reiniciar” reinicia el proceso borrando todo lo que hubiera en las etiquetas de resultados y reiniciando las variables globales.

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 número mayor introducido. - Una variable double llamada suma. Contendrá en todo momento la suma de los números

introducidos. - Una variable int llamada cuenta. Contendrá en todo momento la cuenta de todos los números

introducidos hasta ahora.

Page 1066: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1066

Al comenzar el programa, y al pulsar el botón “Reiniciar”, será necesario que estas tres variables se inicien a 0. Nota. Se supondrá que todos los número introducidos serán 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 botón “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 adivinación. El usuario introducirá un número entre 1 y 10 en el cuadro de texto txtNumero.

- Luego introducirá una apuesta en el cuadro de texto txtApuesta.

- Y a continuación pulsará el botón “Jugar”. - El programa calculará entonces un número al azar entre 1 y 10 y lo mostrará en la etiqueta

etiNumero.

- Si el número introducido por el usuario coincide con el número elegido al azar por la máquina, entonces el usuario gana y se le debe sumar lo apostado a la cantidad que tenía en dicho momento. Si el usuario pierde entonces se le debe restar lo apostado a la cantidad que tenía. 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 número aleatorio entre 1 y 10 debes usar el siguiente código: int n; //el numero

double aleatorio;

aleatorio = Math.random();

Page 1067: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1067

aleatorio = aleatorio * 10;

aleatorio = Math.floor(aleatorio);

aleatorio = aleatorio + 1;

n = (int) aleatorio;

(Más información sobre la generación de números aleatorios en el Ejercicio de Investigación Nº3)

Page 1068: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1068

PROGRAMACIÓN

JAVA

PROGRAMAS CON CÁLCULOS

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 botón llamado btnCalcular.

El programa funcionará de la siguiente forma:

- El usuario introducirá las unidades y el precio y luego pulsará el botón Calcular. - El programa entonces calculará el total de la venta, el iva y el total más iva y presentará

dichos resultados en cada etiqueta.

Ejercicio 2

Realice un programa para calcular la nota final de un alumno.

Page 1069: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1069

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 botón 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 botón 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 más, 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 aparecerán de color negro.

Page 1070: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1070

Ejercicio 3

Realizar un programa para calcular el área y el perímetro de un círculo.

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 círculo. - Una etiqueta llamada etiPerimetro, donde se mostrará el perímetro del círculo.

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 perímetro 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 número.

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.

Page 1071: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1071

El diseño de la ventana queda a su elección.

Ejercicio 5

Realizar un programa que calcule la raíz cuadrada de un número. 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 número en el cuadro de

texto txtNumero, inmediatamente aparecerá su raíz cuadrada en la etiqueta. Para ello, tendrá que

programar el evento keyReleased del cuadro de texto.

Use la clase Math para realizar el cálculo de la raíz cuadrada.

Ejercicio 6

Realice un programa que contenga dos cuadros de texto: txtPalabra1, y txtPalabra2. La ventana

tendrá también un botón llamado btnConcatena y una etiqueta llamada etiTexto.

El usuario introducirá las dos palabras dentro de los cuadros de texto y luego pulsará el botón

Concatena. El resultado será que en la etiqueta etiTexto aparecerán las dos palabras escritas

concatenadas.

Page 1072: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1072

Por ejemplo, si el usuario escribe en el primer cuadro de texto “Lunes” y en el segundo “Martes”, en

la etiqueta aparecerá: “LunesMartes”.

Page 1073: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1073

Ejercicio 7

Realizar un programa que muestre 10 etiquetas llamadas respectivamente: etiUna, etiDos, etiTres,

etc...

Estas etiquetas contendrán los números del 0 al 9.

Aparte, la ventana tendrá un cuadro de texto llamado txtNumero.

Se pide que cuando el usuario lleve el ratón sobre una de las etiquetas, aparezca en el cuadro de

texto el número correspondiente.

Los números se van añadiendo 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

debería haber aparecido lo siguiente: 131.

Añada un botón 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:

ax2+bx+c=0

Page 1074: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1074

Dados unos valores para a, b y c, se debe calcular cuanto vale x.

Una ecuación de segundo grado puede tener 0, 1 o 2 soluciones.

Para saber el número de soluciones de una ecuación de segundo grado se debe realizar el

siguiente cálculo:

R = b2 – 4ac

Si R es menor de cero, la ecuación no tiene solución.

Si R da 0, la ecuación tiene una solución.

Si R es mayor de cero, la ecuación tiene dos soluciones.

Cuando existe una solución, 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)

x = (-b – raiz(R) ) / (2a)

(raíz es la raíz cuadrada)

Page 1075: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1075

Realice el programa para resolver las ecuaciones de segundo grado. El diseño de la ventana

queda a su elección. Procure que el programa indique cuando hay o no soluciones, y que las

muestre de forma adecuada.

Page 1076: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1076

PROGRAMACIÓN

JAVA

CENTRALIZAR CÓDIGO Ejercicio 1

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 información. Una contiene la palabra “Horas”, otra contiene la palabra “Minutos” y

otra contiene el símbolo dos puntos (:). - Un cuadro de texto vacío al que se le llamará txtCantidadMin - Un botón con el signo + al que se le llamará btnSumar. - Un botón con el signo – al que se le llamará btnRestar.

Además:

Page 1077: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1077

- Una barra de herramientas con el nombre barraHerramientas, que contenga tres botones:

o Un botón herramientasSumar. o Un botón herramientasRestar. o Un botón herramientasReiniciar.

- Asigne a estos botones el icono que quiera. Por ejemplo, iconos de relojes.

Además:

- La ventana contendrá una barra de menús a la que puede llamar barraMenus. Esta barra contiene una opción “Acción” a la que puede llamar menuAccion.

- Dentro de la opción Acción, tendrá estas otras opciones:

- Una opción “Sumar” a la que llamará menuSumar. - Una opción “Restar” a la que llamará menuRestar. - Una opción “Reiniciar” a la que llamará menuReiniciar. - Y una opción “Salir” a la que llamará menuSalir. - Además tendrá una serie de separadores para mejorar la presentación 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 botón sumar, o bien activa el botón sumar de la barra de herramientas, o bien

activa la opción sumar del menú, entonces los minutos escritos se suman a la hora que se muestra.

Page 1078: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1078

- En cambio, si el usuario pulsa el botón restar, o bien activa el botón restar de la barra de

herramientas, o bien activa la opción restar de la barra de menús, entonces los minutos escritos se restan a la hora que se muestra.

- Si el usuario pulsa el botón reiniciar de la barra de menús o pulsa la opción reiniciar del menú,

entonces la hora que se muestra se reinicia a las 00:00 horas.

Page 1079: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1079

Un ejemplo:

El usuario introduce 90

minutos y luego pulsa

“Sumar”

Entonces aparece la nueva

hora (en formato

hora:minutos)

Page 1080: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1080

A TENER EN CUENTA

Supongamos ahora que el

usuario introduce un 40 y

luego pulsa “Restar”

La hora actual se actualiza

después de restar los 40

minutos…

Page 1081: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1081

- Se aconseja que realice un procedimiento Sumar que se encargue de hacer la suma de minutos. - Realice también 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 cálculo 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 división 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 Y que se quiera restar 70 minutos Primero se hace el cálculo 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 división son los minutos: 795 % 60 = 15 La nueva hora por tanto es las 13 : 15

Page 1082: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1082

PROGRAMACIÓN

JAVA

CUADROS DE DIÁLOGO Ejercicio 1 Se pide realizar un programa que facilite el cálculo del precio de implantación de un determinado software en una empresa. Se pretende calcular el coste de instalación, el coste de formación y el coste de mantenimiento. Para ello, debe realizar un proyecto con una ventana como la que sigue:

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 botón Calcular aparecerá la suma de los tres en la etiqueta Total. Por otro lado, cada cuadro de texto tiene asignado un botón con tres puntos que permitirá facilitar el cálculo de cada coste a través de un cuadro de diálogo. Cuadro de diálogo Coste de Instalación

En el caso de que se pulse el botón correspondiente al Coste de Instalación, el cuadro de diálogo que debe aparecer tiene que ser el siguiente (haz que sea modal):

Page 1083: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1083

Aquí se indicará el número de copias de la versión simplificada del programa a instalar, y el número de copias de la versión completa. Al pulsar el botón Aceptar, se mostrará el coste total por instalación en el cuadro de texto correspondiente de la ventana principal y luego se cerrará el cuadro de diálogo. Para calcular el coste de instalación, ten en cuenta lo siguiente: Cada copia de la versión simplificada cuesta 120 euros, y cada copia de la versión completa cuesta 180 euros. Si por ejemplo, el usuario introduce 1 copia simplificada y 2 de la versión completa, el coste total será: coste por instalación = 120 * 1 + 180 * 2 = 480 Si se pulsa el botón Cancelar, el cuadro de diálogo se cierra y no se muestra nada en el cuadro de texto del coste de instalación de la ventana principal. Cuadro de diálogo Coste de Formación

En el caso de que se pulse el botón correspondiente al Coste de Formación, el cuadro de diálogo que debe aparecer tiene que ser el siguiente (haz que sea modal):

El coste de formación se calculará multiplicando el número de alumnos por el número de horas por 10 euros. Por ejemplo, si el usuario introduce 3 alumnos y 12 horas, el coste por formación será: coste por formación = 2 * 12 * 10 = 240 Al pulsar el botón Aceptar, se calculará dicho coste y se introducirá en el cuadro de texto del coste de formación de la ventana principal (luego el cuadro de texto se cerrará). Si se pulsa el botón Cancelar, el cuadro de diálogo simplemente se cerrará, sin que ocurra nada más.

Page 1084: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1084

Cuadro de diálogo Coste de Mantenimiento

En el caso de que se pulse el botón correspondiente al Coste de Mantenimiento, el cuadro de diálogo 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 diálogo) 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 botón Cancelar, el cuadro de diálogo se cierra sin más.

MEJORAS Ayuda

Añade un botón a la ventana principal con esta forma:

Al pulsar este botón, aparecerá un cuadro de diálogo de ayuda con este aspecto (haz que no sea modal y que esté siempre por encima de la ventana principal:

Page 1085: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1085

Al pulsar el botón Cerrar, el cuadro de diálogo 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 añadas un JTextPane este aparecerá dentro de un JScrollPane. Pantalla de Splash (Presentación)

Se añadirá un nuevo cuadro de diálogo al proyecto que servirá como pantalla de presentación (a estos cuadros de diálogo se les suele denominar Splash) Diseñe este cuadro de diálogo como quiera. Puede añadir varias imágenes, colocar el texto donde quiera, etc. Debe mostrar este cuadro de diálogo al comenzar el programa (en el evento windowOpened del formulario) Si quiere mostrar el cuadro de diálogo de la presentación en el centro de la pantalla, puede usar este código (se supone que el cuadro de diálogo 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 diálogo debe tener un botón Cerrar, o bien, debe tener la posibilidad de cerrarse cuando el usuario haga clic sobre él en cualquier parte. Para mejorar su cuadro de diálogo de presentación, se recomienda que active la propiedad del cuadro de diálogo llamada undecorated. Esta propiedad oculta la barra de título del cuadro de diálogo.

Page 1086: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1086

PROGRAMACIÓN

JAVA

DISEÑO DE VENTANA DESDE CÓDIGO

Ejercicio 1 Realice un proyecto cuya ventana tenga el siguiente diseño. Este diseño lo tiene que hacer totalmente desde código, sin usar la ventana de diseño del NetBeans:

Tenga en cuenta lo siguiente:

- La ventana debe tener como título “Ejercicio 1” - El tamaño 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 botón con el texto “metros/seg” es un JToggleButton y debe estar activado al arrancar el

programa.

Page 1087: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1087

- En la parte inferior de la ventana hay un JSlider. Su valor mínimo será 0 y su valor máximo será 100. El valor inicial del JSlider tiene que ser 20.

- El JSlider debe mostrar sus marcas (método setPaintTicks) y la separación entre marcas debe ser de 5 (método setMinorTickSpacing)

Ejercicio 2 Realice un proyecto cuya ventana principal tenga el siguiente diseño. Este diseño lo tiene que hacer directamente desde código, sin usar la ventana de diseño del NetBeans.

Tenga en cuenta lo siguiente:

- La ventana debe tener el título “Ejercicio 2” - El tamaño 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 artículos. (El combo se

muestra desplegado para que puedas ver la lista de tipos de artículos) - En la parte inferior hay una etiqueta vacía con color CYAN de fondo.

Page 1088: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1088

PROGRAMACIÓN

JAVA

ASIGNACIÓN DE EVENTOS DESDE CÓDIGO

Ejercicio 1 Realice un programa para calcular el área y el perímetro de un círculo. La ventana del programa debe tener un aspecto parecido al siguiente:

El usuario introducirá un radio y…

- Si pulsa el botón Área se calculará el área del círculo. (actionPerformed del botón de Área) - Si pulsa el botón Perímetro se calculará el perímetro del círculo. (actionPerformed del botón de

Perímetro) - Si pulsa el botón Limpiar en el cuadro de texto aparecerá un 0 y la etiqueta de resultado (la de color

rojo) se vaciará. (actionPerformed del botón Limpiar)

Todo el programa debe ser realizado directamente desde código, sin usar la ventana de diseño de NetBeans.

Ejercicio 2 Realice un programa para calcular la velocidad de un vehículo. La ventana del programa tendrá el siguiente diseño:

Page 1089: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1089

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 también 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 diseño como la programación de eventos debe realizarla directamente desde código, sin usar la ventana de diseño del NetBeans.

Page 1090: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1090

PROGRAMACIÓN

JAVA

ASIGNACIÓN DE EVENTOS DESDE CÓDIGO. EVENTOS DE RATÓN Ejercicio 1 Realice un programa que tenga el siguiente aspecto:

En la ventana hay dos etiquetas. Una de ellas es de color negro y la otra es de color gris. Están 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 ratón:

- mouseEntered. Cuando el ratón entre en la superficie de la etiqueta debe cambiar su texto por “Pulsame”.

- mouseExited. Cuando el ratón salga de la superficie de la etiqueta debe cambiar el texto de esta otra

vez por “Etiqueta”.

- mousePressed. Cuando se pulse un botón del ratón sobre la etiqueta, esta debe moverse de sitio de forma que parezca que se ha pulsado como si fuera un botón (observa la imagen)

Page 1091: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1091

(sin pulsar) (pulsada)

Para conseguir esto, debes colocar la etiqueta gris sobre la etiqueta negra.

Cuando suceda este evento también debes cambiar el texto de la etiqueta por “Está pulsado”

- mouseReleased. Cuando se suelte el botón del ratón, la etiqueta volverá a su posición normal, y el texto cambiará a “Pulsado”.

Page 1092: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1092

PROGRAMACIÓN

JAVA

ASIGNACIÓN DE EVENTOS DESDE CÓDIGO. 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 diseño de la ventana desde código. 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 código. Aquí tiene la información necesaria:

a. El evento a programar del JSlider se llama: stateChanged b. Pertenece al oyente llamado ChangeListener c. Asignarás el oyente al JSlider con el método addChangeListener d. El evento lleva como parámetro un objeto evt del tipo ChangeEvent

3. Interesa que al girar la rueda del ratón cambie el valor del JSlider. Para controlar el movimiento de la rueda del ratón debe asignar un evento al formulario (this). Aquí tiene la información necesaria del evento para la rueda del ratón:

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 método addMouseWheelListener d. El evento lleva como parámetro un objeto evt del tipo MouseWheelEvent

Page 1093: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1093

PISTA: El objeto evt pasado como parámetro del evento de la rueda del ratón contiene información sobre como se ha movido la rueda. Este objeto tiene un método llamado getUnitsToScroll que devuelve un número entero que indica cuanto se ha movido la rueda. Este número puede ser positivo o negativo según hacia donde se movió la rueda. Aprovechando esto, el evento de la rueda del ratón se puede programar así: int valor = slider.getValue(); //slider es el objeto JSlider valor = valor + evt.getUnitsToScroll(); slider.setValue(valor);

Page 1094: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1094

PROGRAMACIÓN

JAVA

ASIGNACIÓN DE EVENTOS DESDE CÓDIGO. EVENTOS DE VENTANA Ejercicio 1

La ventana sobre la que trabajamos también 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 través del método addWindowListener.

Todos los eventos llevan como parámetro 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.

Page 1095: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1095

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

Además, 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.

Page 1096: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1096

PROGRAMACIÓN

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 día de la semana.

Los botones deben aparecer en horizontal:

Añada un botón “Aceptar” a la ventana (un botón normal) y dos etiquetas.

Al pulsar el botón “Aceptar” debe aparecer en una de las etiquetas el número de botones

activados. También debe aparecer en la otra etiqueta los días de la semana elegidos (activos)

Page 1097: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1097

Ejercicio 2

Se necesita hacer un programa que muestre la siguiente ventana:

Diseñe la ventana totalmente desde código y usando vectores. Tendrá que usar los siguientes

vectores:

- Un vector de etiquetas (JLabel) para cada etiqueta. Necesitarás también un vector auxiliar de String que contenga los textos de las etiquetas: “Devoluciones”, “Impagos”, “Caducidad” y “Robos”.

- Un vector de cuadros de texto (JTextField)

Page 1098: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1098

- Un vector de botones (JButton)

Tendrás que construir cada vector y luego tendrás que construir los elementos de dichos vectores,

colocándolos en la ventana.

El programa no tiene que hacer nada, solo limítese a diseñar la ventana.

Page 1099: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1099

PROGRAMACIÓN

JAVA

VECTORES DE COMPONENTES Ejercicio 1 Realizar un programa donde aparezcan diez botones conteniendo los números entre el 0 y 9.

Todos estos botones pertenecerán a un vector de JButton, y tendrán asociado un evento

actionPerformed.

Cada vez que se pulse uno de los botones, en un cuadro de texto de la ventana se añadirá el dígito

correspondiente, como si estuvieramos usando una calculadora.

Añadir también un botón “Borrar” (no perteneciente al vector) que permita borrar el contenido del

cuadro de texto.

El aspecto del programa puede ser similar al siguiente:

Page 1100: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1100

COLOCACIÓN DE LOS BOTONES

Para la colocación 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 botón:

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);

Se pulsó el 9 y luego

el 5

Page 1101: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1101

}

Ejercicio 2

Se pide hacer un programa que muestre 8 etiquetas, cada una con el nombre de una provincia

andaluza. Estas etiquetas estarán 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 demás se colocará en azul (para cambiar el color de fondo: setBackground y setOpaque)

- Al sobrevolar el ratón 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 ratón la etiqueta (evento mouseExited) el color del texto de la etiqueta volverá a ser de color negro.

Page 1102: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1102

PROGRAMACIÓN

JAVA

POO. CREACIÓN 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 opción Pared Norte. - El botón Asignar asignará el ancho y alto que se haya introducido a la pared que esté seleccionada

en ese momento.

- El botón Area mostrará en un JOptionPane el área de la pared seleccionada en ese momento.

- El botón Perímetro mostrará en un JOptionPane el perímetro de la pared seleccionada en ese momento.

Page 1103: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1103

CLASE RECTANGULO PARA HACER ESTE EJERCICIO USARÁ UNA CLASE DE CREACIÓN PROPIA LLAMADA RECTÁNGULO.

La clase Rectangulo debe tener las siguientes características:

Page 1104: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1104

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

Métodos:

Métodos set:

setBase – permite asignar un valor a la propiedad Base.

setAltura – permite asignar un valor a la propiedad Altura.

Métodos get:

getBase – devuelve el valor de la propiedad Base

getAltura – devuelve el valor de la propiedad Altura

Page 1105: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1105

getArea – devuelve el área del rectángulo

getPerímetro – devuelve el perímetro del rectángulo

Otros métodos:

Cuadrar – este método 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 RECTÁNGULO, CADA UNO DE LOS CUALES HARÁ REFERENCIA A UNA DE LAS CUATRO PAREDES:

Objetos de la clase Rectángulo que usará en el proyecto:

- ParedNorte - ParedSur - ParedOeste - ParedEste

Para programar cada botón de la ventana principal, solo tiene que ayudarse dando órdenes a las cuatro paredes o pidiéndoles información.

Page 1106: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1106

Ejercicio 2

PRIMERA PARTE

Trabajamos de programador para una empresa de venta por correo. Esta empresa recibe pedidos

de clientes y necesita controlar la situación de cada pedido.

Para facilitar la realización 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 proporcionarán

información sobre el estado del pedido y nos facilitará la programación de los proyectos para la

empresa.

SE PIDE PROGRAMAR LA CLASE PEDIDO TENIENDO EN CUENTA SUS CARACTERISTICAS,

LAS CUALES SE MENCIONAN A CONTINUACIÓN:

Page 1107: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1107

CLASE PEDIDO

Nombre de la Clase: Pedido

Propiedades de los objetos de la Clase Pedido:

Articulo: una cadena que indica el nombre del artículo 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 envío.

Descuento: un double indicando el tanto por ciento de descuento.

Valores iniciales de las propiedades de los objetos de la Clase Pedido:

Articulo: (cadena vacía)

Unidades: 1

Precio: 0

GastosEnvio: 3

Descuento: 0

Métodos set

setArticulo – permite asignar el nombre del artículo al objeto pedido

setUnidades – permite asignar el número de unidades pedidas

setPrecio – permite asignar un precio unidad al artículo del pedido

setGastosEnvio – permite asignar la cantidad de gastos de envío del pedido

setDescuento – permite asignar el tanto por ciento de descuento del pedido

Page 1108: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1108

Métodos get

getArticulo – devuelve el nombre del artículo del pedido

getUnidades – devuelve el número de unidades del artículo

getPrecio – devuelve el precio del artículo del pedido

getGastosEnvio – devuelve los gastos de envío 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 más el Iva. Se calcula así:

TotalMasIva = TotalSinIva + Iva

getTotalDescuento – devuelve el total del descuento. Se calcula así:

TotalDescuento = TotalMasIva * Descuento / 100

getTotalPedido – devuelve el total del pedido. Se calcula así:

Page 1109: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1109

TotalPedido = TotalMasIva – TotalDescuento

Page 1110: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1110

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 introducirán los siguientes datos del pedido a enviar: o Nombre del Artículo o Unidades pedidas o Precio unidad del artículo o Gastos de envío o Tanto Por Ciento de descuento.

- Al pulsar el botón “Aceptar Pedido”, todos estos datos deben asignarse a un objeto llamado ped de tipo Pedido.

- Al pulsar el botón “Ver Desglose”, deben aparecer en las distintas etiquetas (de color verde en la imagen) los siguientes datos del pedido:

Page 1111: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1111

o Nombre del Artículo o Unidades pedidas o Precio unidad o Gastos de envío o Total Sin Iva del pedido o Iva del pedido o Total Más iva o Total de Descuento o Total del Pedido.

- Para hacer esto solo tendrá que pedirle información al objeto ped usando sus métodos get y luego colocar esta información en cada etiqueta.

PARA PODER REALIZAR ESTE PROYECTO SERÁ NECESARIO INCLUIR LA PROGRAMACIÓN

DE LA CLASE PEDIDO REALIZADA EN EL APARTADO ANTERIOR DEL EJERCICIO.

SI NO SE AÑADE LA PROGRAMACIÓN DE LA CLASE, SERÁ IMPOSIBLE CREAR EL OBJETO

PED QUE NOS PERMITE MANEJAR LAS CARACTERÍSTICAS DEL PEDIDO.

Page 1112: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1112

PROGRAMACIÓN

JAVA

CUADROS DE MENSAJE, CONFIRMACIÓN E INTRODUCCIÓN DE DATOS

Ejercicio 1

Realice un programa para calcular la división de un número A entre un número B. El programa

tendrá los siguientes elementos en la ventana:

- Dos cuadros de texto llamados txtA y txtB donde se introducirán los dos números.

- Un botón “Calcular División” llamado btnDivision.

- Una etiqueta llamada etiResultado donde aparecerá el resultado.

El programa debe funcionar de la siguiente forma:

- Cuando se pulse el botón “Calcular División” se calculará la división del número 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 número 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 también se mostrará un error.

Page 1113: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1113

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. - Un botón 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 número de meses trabajados. - Al pulsar el botón 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 botón calcular, antes de que aparezca el sueldo en la etiqueta de resultado, el programa debe pedirle al usuario que introduzca una contraseña. Solo si la contraseña es correcta el programa mostrará el sueldo total.

- Para introducir la contraseña use un JOptionPane.showInputDialog.

- Si el usuario introduce una contraseña incorrecta, el programa mostrará un aviso (JOptionPane.showMessage) y el resultado no se mostrará.

Page 1114: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1114

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 botón 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 botón calcular para calcular el índice de masa corporal, el cual se calcula así:

IMC = Peso / Talla2

- El IMC calculado aparecerá en la etiqueta, y además, aparecerá un mensaje indicando la conclusión a la que se llega, la cual puede ser una de las siguientes según el IMC:

IMC CONCLUSIÓN <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 mórbida

Page 1115: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1115

El mensaje puede ser algo así: “Su IMC indica que tiene anorexia”, por ejemplo. Este

mensaje aparecerá en un JOptionPane.showMessage.

- Cuando pulse el botón Limpiar, se borrarán los cuadros de texto Peso y Talla. Antes de que esto ocurra, el programa debe pedir confirmación, con un cuadro de diálogo de confirmación (JOptionPane.showConfirmDialog). El cuadro de confirmación tendrá el siguiente aspecto:

¿Desea borrar los datos?

SI NO

Según lo elegido por el usuario se borrarán los cuadros de texto o no.

Page 1116: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1116

PROGRAMACIÓN

JAVA

POO. HERENCIA

EJERCICIO 1

Interesa crear una etiqueta propia cuya función sea la de mostrar temperaturas. Este tipo de etiqueta se llamará EtiquetaTemperatura y tendrá las siguientes características: Propiedades temperatura – double Métodos setTemperatura()

Este método recibe como parámetro un double con la temperatura a mostrar. Esta temperatura se almacena en la propiedad temperatura. Además, este método muestra la temperatura en la etiqueta, añadiendo ºC. Por ejemplo, si la temperatura asignada fuera 10, entonces en la etiqueta aparecería:

10 ºC getTemperatura() Este método devuelve un double con la temperatura actual. mostrarRangoColor() Este método asignará un color a la etiqueta según 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

Page 1117: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1117

Si la etiqueta no contuviera un valor numérico válido, entonces se mostrará transparente (es decir, setOpaque(false) ) cambiarTemperatura() Este método recibe un valor double como parámetro. Si este valor es positivo, entonces la temperatura aumenta en este valor. Si el valor es negativo, la temperatura disminuye.

Page 1118: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1118

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 añadir la propiedad temperatura a la clase EtiquetaTemperatura y programar los métodos antes comentados.

EJERCICIO 2

Realiza un proyecto cuya ventana principal tenga el siguiente aspecto:

Page 1119: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1119

En la parte superior añadirá (a través de código) una etiqueta del tipo EtiquetaTemperatura, que

estará inicializada a 0 ºC

En la parte inferior añadirá tres botones y un cuadro de texto (esto lo puede hacer desde la

ventana de diseño). Cada vez que se pulse el botón +, la temperatura de la etiqueta aumentará en

la cantidad de grados indicados en el cuadro de texto. Y cuando se pulse el botón -, la temperatura

disminuirá.

Cada vez que varíe la temperatura de la etiqueta, deberá variar su color.

Al pulsar el botón “Fahrenheit”, aparecerá en un JOptionPane la temperatura que tiene

actualmente la etiqueta convertida a grados Fahrenheit.

Page 1120: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1120

PROGRAMACIÓN

JAVA

POO. DIALOGOS PROPIOS Planteamiento Inicial Todos los proyectos que hacemos en el trabajo tienen que llevar un cuadro de diálogo de presentación que contenga:

- El nombre del programa. - La versión. - El nombre del programador.

Resulta un rollo tener que programar el cuadro de presentación 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 diálogo que contenga el nombre del programa, la versión y el programador. Gracias a esta clase que vamos a programar, no tendremos que perder tiempo cada vez que necesitemos añadir una presentación 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 diálogo, o, dicho de otra forma, heredará de la clase JDialog. El aspecto de un cuadro de diálogo de este tipo en funcionamiento podría ser el siguiente:

Page 1121: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1121

Las tres etiquetas con bordes se llaman respectivamente: etiNombrePrograma, etiVersion, etiNombreProgramador. El botón se llamará btnEmpezar. Todos estos elementos están dentro de un JPanel al que se le ha asignado un borde con relieve. Métodos de la clase DialogoPresentacion Esta clase tendrá los siguientes métodos: setNombrePrograma

- Recibirá una cadena con el nombre del programa, y esta cadena se introducirá en la etiqueta etiNombrePrograma.

setVersion

- Recibirá una cadena con la versión 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 botón “Empezar”, lo único que tiene que suceder es que se cierre el cuadro de diálogo.

Page 1122: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1122

Proyecto Ejemplo Debes crear un programa simple que permita calcular el área de un círculo. Este proyecto debe incluir una presentación que aparezca al principio. Esta pantalla de presentación debe contener los siguientes datos: Nombre del programa: Cálculo del Área del Círculo Versión: v 1.0 Nombre del programador: su nombre. 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, versión y programador. Y hacer que aparezca la presentación cuando se ejecute el programa. Pista. La aparición de la presentación se programará en el evento windowOpened de la ventana principal.

Page 1123: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1123

PROGRAMACIÓN

JAVA

PROGRAMACIÓN 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.

Page 1124: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1124

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:

Ventana Interna Debe añadir a su proyecto una clase JInternalFrame para diseñar 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 líneas. Llame al objeto JTextPane con el nombre txtTexto.

panelInterno

(JDesktopPane)

Page 1125: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1125

Estas ventanas internas contendrán el texto del fichero que se abra. Para facilitar la tarea de abrir un fichero y colocar su texto en la ventana interna debe añadir el siguiente método 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; 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 método 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 código de este método, en la parte final del enunciado se da una explicación de su funcionamiento.

txtTexto

(JTextPane)

Page 1126: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1126

Opciones principales del programa Se comenta a continuación la forma en que deben funcionar las distintas opciones del programa: Opción Archivo – Abrir Esta opción 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 método 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 título de la ventana interna. Opción Archivo – Cerrar La opción Cerrar cerrará la ventana interna que esté activa (si es que hay alguna) Opción Archivo – Cerrar Todas Esta opción cerrará todas las ventanas internas abiertas en el panel interno. Opción Archivo – Salir Permitirá salir del programa. Opción Ventana – Cascada Esta opción colocará todas las ventanas internas que haya abiertas en cascada. Esto es, una encima de otra, mostrando el título de cada una.

Page 1127: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1127

Opción Ventana – Mosaico Horizontal Esta opción hará visible todas las ventanas mostrándolas en horizontal, ocupando todo el panel interno. Para ello, tendrás que obtener el tamaño vertical del panel interno, y dividirlo por el número 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.

Page 1128: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1128

Page 1129: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1129

Opción Ventana – Mosaico Vertical Esta opción hará visible todas las ventanas mostrándolas en vertical, ocupando todo el panel interno. Para ello, tendrás que obtener el tamaño horizontal del panel interno, y dividirlo por el número 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.

Page 1130: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1130

EXPLICACIÓN MÉTODO ponerTexto Para realizar este ejercicio es necesario añadir a la clase de la ventana interna el siguiente método. No es necesario entender el código de este procedimiento para hacer el ejercicio, pero en cualquier caso, aquí hay una explicación 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 método 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 través de “canales”. Los canales son objetos que se “enganchan” al fichero uno detrás 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:

- 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 información 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 través del método readLine del objeto BufferedReader se pueden extraer una a una las

líneas de texto del fichero. - Una vez finalizado el trabajo con el fichero se cierra el canal FileReader y el canal BufferedReader.

La creación de un objeto File a partir del camino del fichero se hace con la siguiente instrucción: File fi = new File(caminofichero);

Camino Fichero

(String)

Objeto Fichero

(File)

Canal de Acceso al

Fichero

(FileReader)

Canal de Acceso al

Fichero

(BufferedReader)

Page 1131: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1131

La creación de un canal FileReader y la conexión con el fichero anterior se hace a través de la siguiente instrucción: FileReader lectura = new FileReader(fi); La creación de un canal BufferedReader y la conexión con el canal FileReader anterior se hace a través de la siguiente instrucción: BufferedReader entrada = new BufferedReader(lectura); Una vez hecho esto, tenemos un objeto llamado entrada del tipo BufferedReader que posee un método llamado readLine que permite leer una línea de texto del fichero. A través de este método vamos leyendo líneas de texto del fichero. Hay que tener en cuenta que si al usar readLine obtenemos el valor null, es que ya no hay más texto en el fichero. 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 código anterior crea una variable texto que contiene el texto completo del fichero. Este código extrae una a una las líneas de texto del fichero y las va concatenando en la variable texto. Como hemos terminado con la manipulación del fichero, es bueno cerrar los canales de comunicación con el fichero (el canal FileReader y el canal BufferedReader creados):

entrada.close(); lectura.close(); Y finalmente metemos el texto extraído 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 código susceptible de tener errores de ejecución (es decir, de lanzar excepciones)

Page 1132: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1132

PROGRAMACIÓN

JAVA - BASES DE DATOS

MODELO E-R 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 teléfono de contacto. La empresa tiene una serie de comerciales que son los que realizan las ventas. La empresa quiere controlar la información de sus comerciales. Concretamente necesita almacenar de ellos sus nombres y apellidos y su móvil. A cada comercial se le asigna un número en la empresa para distinguirlos. Diariamente, los comerciales realizan ventas de productos a los clientes. Interesa almacenar información sobre dichas ventas. De cada venta interesa almacenar el nombre del producto que se vende, las unidades vendidas del artículo, el precio del producto y la fecha en que se efectuó la venta. También interesa saber la forma de pago. Debes tener en cuenta también la siguiente información : 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, añada 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 foráneas según las relaciones existentes. 7. Realice el gráfico correspondiente al Modelo E-R.

Page 1133: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1133

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 información producida por esta actividad. Concretamente, la empresa necesita almacenar información sobre los camiones que posee. Necesita almacenar la matrícula de cada camión, la marca y el modelo y el año de compra. Por otro lado, la empresa tiene una serie de conductores. De cada conductor se quiere almacenar el nombre, los apellidos, el móvil y el sueldo que gana. A cada conductor se le asigna un número en la empresa. No hay dos conductores con dos números iguales. La empresa quiere controlar la información correspondiente a cada transporte que se efectúa. 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 información de los clientes que encargan transportes. La información que interesa almacenar de cada cliente es : el CIF del cliente, el nombre de la empresa, la dirección de la empresa, el teléfono de la empresa. Hay que tener en cuenta también la siguiente información : En un transporte en concreto solo participa un camión. Ahora bien, un camión 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. 2. Identifique los atributos de cada entidad. 3. Indique el atributo clave para cada entidad. Si fuera necesario, añada 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 foráneas según las relaciones existentes. 7. Realice el gráfico correspondiente al Modelo E-R.

Page 1134: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1134

SUPUESTO Nº 3. « MEDICIONES » Una empresa química realiza mediciones constantemente de los materiales que contiene la tierra de distintas parcelas de cultivo, y le interesaría tener un control de toda la información que esto genera. Para ello le encargan un programa para gestionar esta información. A esta empresa le interesaría guardar información sobre cada medición que se hace. Interesa almacenar lo siguiente: fecha en que se hace la medición, hora, temperatura ambiente en el momento de hacer la medición, humedad del aire y un comentario sobre la medición (en este comentario se indicará el resultado de la medición) Cada medición se numera, de forma que no puede haber dos mediciones con el mismo número. Las mediciones las realizan químicos especializados contratados por la empresa. Esta empresa desea almacenar los datos de estos químicos: nombre, apellidos y teléfono de contacto. Las mediciones se realizan en terrenos particulares, e interesa almacenar información sobre dichos terrenos. Concretamente interesa almacenar: el número de hectáreas del terreno, nombre del propietario, DNI del propietario, teléfono de contacto del propietario, dirección del terreno. A cada terreno se le asignará un código único para distinguirlo de los demás. Las mediciones se plasman finalmente en informes recopilatorios que se envían a la empresa que ha encargado las medidas. Interesa almacenar de cada informe lo siguiente: número de informe (no hay dos informes con el mismo número), 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 también lo siguiente: Un químico realiza muchas mediciones, pero una medición la realiza solo un químico. En un mismo terreno se pueden realizar diversas mediciones, pero tenga en cuenta que una medición está realizada en un solo terreno. Un informe de mediciones plasmará el resultado de muchas mediciones, pero una medición aparecerá en un solo informe. 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, añada 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 foráneas según las relaciones existentes. 7. Realice el gráfico correspondiente al Modelo E-R.

Page 1135: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1135

SUPUESTO Nº4. “REVISIONES MÉDICAS” En un hospital se realizan distintas revisiones médicas a los pacientes ingresados, y les interesa almacenar información sobre estas revisiones. De cada revisión interesa almacenar la fecha y hora en que se hizo, peso y altura del paciente y otros resultados de dicha revisión. Cada revisión se numera de forma que no haya dos revisiones con el mismo número. Cada revisión se realiza a un solo paciente, aunque a un paciente se le pueden hacer varias revisiones mientras está ingresado. Interesa almacenar la información de cada paciente: nombre, apellidos, DNI y fecha de nacimiento del paciente. Los médicos realizan revisiones a sus pacientes. Hay que tener en cuenta que un mismo médico puede realizar revisiones a distintos pacientes, pero un paciente tiene asignado un solo médico para las revisiones. Interesa almacenar la información de cada médico: nombre, apellidos, especialidad. A cada médico se le asigna un código 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, añada 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 foráneas según las relaciones existentes. 7. Realice el gráfico correspondiente al Modelo E-R.

Page 1136: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1136

PROGRAMACIÓN

JAVA - BASES DE DATOS

TRASPASO A TABLAS SUPUESTO Nº 1. "CONTROL DE VENTAS" A partir del Modelo Entidad-Relación correspondiente a este supuesto de la hoja anterior, realice el traspaso a tablas de modelo. Introduzca luego algunos datos en las tablas. Invéntese los datos, pero procure que tengan cierto sentido. Tenga en cuenta que los datos correspondientes a las claves y claves foráneas tendrán que coincidir para que la base de datos tenga coherencia. SUPUESTO Nº 2. « TRANSPORTES » A partir del Modelo Entidad-Relación correspondiente a este supuesto de la hoja anterior, realice el traspaso a tablas de modelo. Introduzca luego algunos datos en las tablas. Invéntese los datos, pero procure que tengan cierto sentido. Tenga en cuenta que los datos correspondientes a las claves y claves foráneas tendrán que coincidir para que la base de datos tenga coherencia. SUPUESTO Nº 3. « MEDICIONES » A partir del Modelo Entidad-Relación correspondiente a este supuesto de la hoja anterior, realice el traspaso a tablas de modelo. Introduzca luego algunos datos en las tablas. Invéntese los datos, pero procure que tengan cierto sentido. Tenga en cuenta que los datos correspondientes a las claves y claves foráneas tendrán que coincidir para que la base de datos tenga coherencia. SUPUESTO Nº4. “REVISIONES MÉDICAS” A partir del Modelo Entidad-Relación correspondiente a este supuesto de la hoja anterior, realice el traspaso a tablas de modelo. Introduzca luego algunos datos en las tablas. Invéntese los datos, pero procure que tengan cierto sentido. Tenga en cuenta que los datos correspondientes a las claves y claves foráneas tendrán que coincidir para que la base de datos tenga coherencia.

Page 1137: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1137

PROGRAMACIÓN

JAVA - BASES DE DATOS

RELACIONES MUCHAS A MUCHAS SUPUESTO Nº 1 « LIMUSINAS » Una empresa de alquiler de limusinas quiere gestionar la siguiente información : Por un lado se quiere almacenar la información de los clientes que solicitan el uso de una limusina. Se almacenará el nombre, apellidos, DNI y teléfono del cliente. Por otro lado se quiere almacenar la información de las distinas limusinas propiedad de la empresa. Se almacenará la matrícula, la marca y el modelo. Una limusina es alquilada por muchos clientes (en momentos distintos claro está, un día la alquila un cliente y otro día la alquila otro) Por otro lado, un cliente alquila muchas limusinas (en momentos distintos también, un día 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 chófer que condujo en el viaje. SE PIDE :

1. Este supuesto produce una relación Muchas a Muchas entre las entidades limusinas y clientes. Represente dicha relación.

2. A continuación identifique la entidad intermedia que elimina la relación Muchas a Muchas. 3. Añada los atributos que considere necesarios a la entidad intermedia. 4. Realice el Modelo Entidad Relación completo del supuesto teniendo en cuenta la nueva entidad

introducida y sus atributos. 5. Realice el traspaso a tabla de dicho modelo.

Page 1138: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1138

SUPUESTO Nº 2 « RESERVAS HOTEL » Un hotel quiere guardar un histórico con todas las reservas realizadas en el hotel por sus clientes. Concretamente se quiere guardar lo siguiente : Información sobre sus clientes : nombre del cliente, apellidos, DNI y país. Información sobre sus habitaciones : número de la habitación, número de camas, precio de la habitación por noche. Un cliente puede haber reservado varias habitaciones (no tiene por qué ser a la vez : un verano puede alojarse en la habitación nº 124, pero al verano siguiente puede alojarse en la habitación nº 535 del mismo hotel) En una habitación se alojan muchos clientes (no a la vez, claro está : una semana está alojado el cliente Juan González y a la semana siguiente está alojado el cliente Ana Pérez) Interesaría almacenar también como se ha pagado la reserva de la habitación, y la fecha de entrada y de salida del cliente en la habitación. SE PIDE :

1. Este supuesto produce una relación Muchas a Muchas entre las entidades habitaciones y clientes. Represente dicha relación.

2. A continuación identifique la entidad intermedia que elimina la relación Muchas a Muchas. 3. Añada los atributos que considere necesarios a la entidad intermedia. 4. Realice el Modelo Entidad Relación completo del supuesto teniendo en cuenta la nueva entidad

introducida y sus atributos. 5. Realice el traspaso a tabla de dicho modelo.

Page 1139: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1139

SUPUESTO Nº 3 « TALLER MECÁNICO » Un taller mecánico quiere guardar información sobre todas las reparaciones que se realizan en él. Para ello se quiere guardar información sobre lo siguiente : Mecánicos : Interesa almacenar la información del mecánico que realiza la reparación. Se almacenará el nombre del mecánico, apellidos, móvil y un código que identifica a cada mecánico. Coches : Interesa almacenar la información de los coches que han sido reparados en el taller. Se almacenará la matrícula, marca y modelo del coche. Debes tener en cuenta que un mecánico repara muchos coches (no a la vez, se supone, primero uno y luego otro) Por otro lado, un coche puede ser reparado por varios mecánicos (es de suponer que un coche puede sufrir varias averías a lo largo de su vida, y cada una de estas avería puede ser reparada por un mecánico distinto) Interesa almacenar también el coste de cada reparación, así como el número de horas que se usaron para hacer la reparación. SE PIDE :

1. Este supuesto produce una relación Muchas a Muchas. Represente dicha relación. 2. A continuación identifique la entidad intermedia que elimina la relación Muchas a Muchas. 3. Añada los atributos que considere necesarios a la entidad intermedia. 4. Realice el Modelo Entidad Relación completo del supuesto teniendo en cuenta la nueva entidad

introducida y sus atributos. 5. Realice el traspaso a tabla de dicho modelo.

Page 1140: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1140

SUPUESTO Nº 4 « VIDEOCLUB » Un videoclub quiere almacenar información sobre los alquileres de películas que se hicieron. Le interesa almacenar información sobre las películas y sobre sus socios : Películas : se almacenará el número del DVD (no hay dos DVD con el mismo número), el título de la película que contiene, el nombre del director y el tipo de película. Socios : se almacenará el número de socio (no hay dos socios con el mismo número), el nombre y apellidos del socio, su teléfono y dirección. Hay que tener en cuenta que una película 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 películas (No a la vez, claro está : primero alquila una, y al día siguiente alquila otra, y así sucesivamente) Interesaría almacenar también la fecha en que produce cada alquiler y lo que pagó el socio por el alquiler. SE PIDE :

1. Este supuesto produce una relación Muchas a Muchas. Represente dicha relación. 2. A continuación identifique la entidad intermedia que elimina la relación Muchas a Muchas. 3. Añada los atributos que considere necesarios a la entidad intermedia. 4. Realice el Modelo Entidad Relación completo del supuesto teniendo en cuenta la nueva entidad

introducida y sus atributos. 5. Realice el traspaso a tabla de dicho modelo.

Page 1141: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1141

PROGRAMACIÓN

JAVA - BASES DE DATOS - ACCESS

CREACIÓN DE BASES DE DATOS EN ACCESS En las hojas de ejercicios anteriores ha diseñado las bases de datos para distintos supuestos. Ha realizado el Modelo Entidad – Relación 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 diseñadas 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 diseñadas 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 diseñadas 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 diseñadas para este supuesto. Introducir algunos datos en las tablas (Intente que los datos sean coherentes) SUPUESTO « TALLER MECÁNICO » Crear un fichero de base de datos llamado TALLER usando el programa Access. Introducir en él las tablas diseñadas para este supuesto. Introducir algunos datos en las tablas (Intente que los datos sean coherentes)

Page 1142: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1142

PROGRAMACIÓN

JAVA - BASES DE DATOS – ACCESS – CONSULTAS

CREACIÓN DE CONSULTAS EN ACCESS Entre en la base de datos MANEMPSA (usada en las hojas de ejercicios guiados) y añada registros a las tablas hasta que estas queden así: Tabla Trabajadores

Tabla Coches

Tabla Clientes

Tabla Servicios

Page 1143: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1143

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 número del servicio, fecha, tipo y cantidad de aquellos servicios que hayan costado menos de 180 euros.

3. Crear una consulta llamada Servicios anteriores 2006.

En ella deben aparecer los campos número del servicio, fecha, tipo y cantidad de aquellos servicios que fueron realizados antes del 1 – 1 – 2006

4. Crear una consulta llamada Servicios de Fontanería

En ella deben aparecer los campos número de servicio, cantidad, tipo y comentario de todos aquellos servicios que fueron de fontanería y costaron 250 o más euros.

5. Crear una consulta llamada Listado de Servicios No Limpieza

En ella deben aparecer los campos número de servicio, cantidad, tipo y comentario de los servicios de Fontanería 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.

Page 1144: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1144

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 demás 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 tendrás que usar varias tablas para hacer la consulta.

8. Crear una consulta llamada Servicios a Academias

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 año 2006

En ella aparecerán 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 aparecerán los campos fecha del servicio, tipo, cantidad, nombre del cliente, dirección 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, dirección 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 Papelerías

En ella deben aparecer los campos CIF, nombre del cliente, dirección del cliente y teléfono fijo de todos aquellos clientes que sean academias o papelerías.

Page 1145: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1145

14. Crear una consulta llamada Listado de SEAT y trabajadores

En ella deben aparecer los campos matrícula, marca y modelo de los seat de la empresa. También 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: matrícula del vehículo, marca y modelo. Nombre y apellidos del trabajador que hizo el servicio. Nombre y dirección 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.

Page 1146: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1146

PROGRAMACIÓN

JAVA - BASES DE DATOS – SQL – CONSULTAS

CREACIÓN 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 añadido 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.

17. Crear una consulta llamada Servicios Baratos SQL.

En ella deben aparecer los campos número 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 número del servicio, fecha, tipo y cantidad de aquellos servicios que fueron realizados antes del 1 – 1 – 2006

19. Crear una consulta llamada Servicios de Fontanería SQL

En ella deben aparecer los campos número de servicio, cantidad, tipo y comentario de todos aquellos servicios que fueron de fontanería y costaron 250 o más euros.

20. Crear una consulta llamada Listado de Servicios No Limpieza SQL

En ella deben aparecer los campos número de servicio, cantidad, tipo y comentario de los servicios de Fontanería 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 demás campos pertenecen a la tabla Servicios.

Page 1147: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1147

22. Crear una consulta llamada Servicios realizados por Juan SQL

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 tendrás 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 año 2006 SQL

En ella aparecerán 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 aparecerán los campos fecha del servicio, tipo, cantidad, nombre del cliente, dirección 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

En ella deben aparecer los campos CIF, nombre del cliente, dirección 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 Papelerías SQL

En ella deben aparecer los campos CIF, nombre del cliente, dirección del cliente y teléfono fijo de todos aquellos clientes que sean academias o papelerías.

29. Crear una consulta llamada Listado de SEAT y trabajadores SQL

En ella deben aparecer los campos matrícula, marca y modelo de los seat de la empresa. También interesa que aparezca el nombre y apellido del conductor de cada coche.

Page 1148: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1148

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: matrícula del vehículo, marca y modelo. Nombre y apellidos del trabajador que hizo el servicio. Nombre y dirección 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 también estas otras consultas usando el lenguaje SQL (asígneles el nombre que quiera):

1. Se pide mostrar un listado de clientes con las siguientes características:

Campos a mostrar: nombre del cliente, dirección, teléfono 1. La condición es que no tengan teléfono 2 (dicho de otra forma, que el campo teléfono 2 sea nulo)

2. Se pide mostrar un listado de clientes con las siguientes características:

Campos a mostrar: nombre, dirección, teléfono 1. La condición es que vivan en una calle, es decir, que su dirección comience por “C/”

3. Se pide mostrar un listado de trabajadores con las siguientes características:

Campos a mostrar: nombre, sueldo, fecha de entrada. La condición es que hayan entrado en la empresa en el año 2002. Es decir, entre el 1/1/2002 y el 31/12/2002.

4. Se pide mostrar un listado de trabajadores con las siguientes características:

Campos a mostrar: nombre, apellidos, sueldo. Condición: 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 características:

Campos a mostrar: todos Condición: Que no se llamen “Ana” Ordenados por nombre ascendentemente.

Page 1149: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1149

6. Se pide mostrar un listado de coches con las siguientes características:

Mostrar todos los campos. Ordenado por año de compra, de más antiguo a más moderno.

7. Mejore la consulta anterior de forma que también se muestre el nombre del trabajador que conduce cada coche.

Page 1150: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1150

8. Se pide mostrar un listado de servicios con las siguientes características:

Campos a mostrar: tipo de servicio, fecha, cantidad, comentario. Condición: 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 también se muestre la dirección donde se hizo el servicio. 10. Se pide mostrar un listado de servicios con las siguientes características:

Campos a mostrar: tipo de servicio, fecha, cantidad, comentario. Condición: se pide mostrar los servicios de limpieza y los de fontanería todos en la misma consulta. Ordenado por fecha de más reciente a más antigua.

11. Se pide mostrar un listado de servicios con las siguientes características:

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 dirección del cliente. Condición: se pide mostrar aquellos servicios de fontanería 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.

Page 1151: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1151

PROGRAMACIÓN

JAVA - BASES DE DATOS – SQL – ALTAS/BAJAS/MODIFICACIONES

CREACIÓN DE CONSULTAS DE ACCIÓN USANDO SQL PREPARACIÓN Los ejercicios que vienen a continuación modificarán el contenido de las tablas. En el caso de equivocación es posible perder todos los datos contenidos en la tabla con la que se está trabajando. Para evitar problemas, se harán copias de las tablas y se trabajará con las copias. En este ejercicio de preparación se explica brevemente como realizar una copia de una tabla. Siga los pasos que se indican a continuación:

1. Entre en la base de datos MANEMPSA que tiene guardada en MIS DOCUMENTOS. 2. En la zona de tablas, haga clic con el botón derecho sobre la tabla Trabajadores y active la opción

Copiar.

3. En una zona en blanco haga clic con el botón derecho y active la opción Pegar.

4. Aparecerá un cuadro de diálogo 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, verás que ha aparecido una nueva tabla llamada Trabajadores2. Si la abres,

observarás que su contenido es el mismo que Trabajadores. EJERCICIO: Crear una copia de las demás tablas: Clientes à Clientes2 Coches à Coches2 Servicios à Servicios2 (Nota: para los siguientes ejercicios usaremos las copias de las tablas, para así mantener intacto el contenido de las tablas originales)

Page 1152: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1152

INSERCIÓN 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 añada los siguientes trabajadores:

Rosa González, 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 Rodríguez, 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 matrícula 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 añada el siguiente coche:

SEAT Córdoba con matrícula 4454-EEE. Año 2004. Está asignado al trabajador con DNI 56.456.345-W

MODIFICACIÓN DE REGISTROS

NOTA: COMPROBAR QUE LOS EJERCICIOS SE HAN REALIZADO CORRECTAMENTE ENTRANDO EN LAS TABLAS Y OBSERVANDO SU CONTENIDO

EJERCICIOS:

31. Se pide asignar a los trabajadores de la tabla Trabajadores2 que hayan entrado antes del año 2005 un sueldo de 1400 euros.

32. En la tabla Trabajadores2 asigne al trabajador con DNI 33.987.987-F el coche con matrícula 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 teléfono móvil del gerente de la empresa Academia La Plata. El móvil es el 633

45 54 45. Se pide que en la tabla Clientes2 asigne ese teléfono móvil 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 dirección es C/Lealas 10, y su teléfono fijo es el 956 30 90

90. Se pide que en la tabla Clientes2 haga dichos cambios a dicho cliente.

Page 1153: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1153

ELIMINACIÓN 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 año 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 fontanería de más de 250 euros.

Comprueba el resultado observando el contenido de la tabla Servicios2

3. Eliminar de la tabla Servicios2 aquellos servicios en los que se haya instalado algún 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 móvil (es decir, que el campo móvil 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

Page 1154: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1154

EJERCICIO FINAL Para la realización 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 botón derecho sobre ellas y activar la opción eliminar. Así pues, elimine las tablas: Trabajadores2, Clientes2, Servicios2, Coches2.

Page 1155: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1155

PROGRAMACIÓN

JAVA

CADENAS

Ejercicio 1

Realice un programa cuya ventana tenga los siguientes elementos:

- Un cuadro de texto llamado txtFrase. - Varias etiquetas. (Llámelas como quiera) - Un botón “Analizar” llamado btnAnalizar.

El programa funcionará de la siguiente forma:

- El usuario introducirá una frase en el cuadro de texto, y luego pulsará el botón Analizar.

- Al pulsar Analizar, el programa mostrará la siguiente información en las etiquetas:

o La frase en mayúsculas. o La frase en minúsculas. o Número de caracteres de la frase. o Número 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:

Page 1156: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1156

- Un cuadro de texto llamado txtFrase y otro llamado txtSubcadena. - Varias etiquetas. - Un botón “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 botón Analizar.

- Al pulsar el botón, el programa debe mostrar la siguiente información:

o La posición en la que se encuentra la primera aparición de la palabra en la frase. o La posición en la que se encuentra la última aparición 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 después 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 información a mostrar sería:

Posición inicial: 3

Posición 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:

Page 1157: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1157

- 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 botón “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 botón Analizar, el programa debe indicar la siguiente información 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 posición inicial en la que se encuentra.

Page 1158: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1158

PROGRAMACIÓN

JAVA – APLICACIONES DE BASES DE DATOS

CREACIÓN 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 botón, deberá aparecer en un JOptionPane el listado de coches de la empresa. Debe aparecer la marca, modelo y año de cada coche, y además deben aparecer ordenados por año ascendentemente.

- “Listado de Clientes” – btnClientes

Cuando se pulse este botón, deberá aparecer en un JOptionPane el listado de clientes de la empresa. Debe aparecer el CIF del cliente, el nombre y la dirección. Los clientes deben aparecer ordenados por nombre.

- “Listado de Servicios” – btnServicios

Cuando se pulse este botón 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

Cuando se pulse este botón, 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

Page 1159: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1159

Cuando se pulse este botón, deberá aparecer en un JOptionPane el listado de servicios de limpieza realizados. Debe aparecer el número del servicio, el DNI del trabajador que realizó el servicio, el tipo de servicio y el coste. Debe aparecer ordenado por número de servicio de menor a mayor.

- “Electricidad” – btnElectricidad

Este botón 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 botón, interesa que aparezca en un JOptionPane la suma de las cantidades de todos los servicios realizados.

- “Citroen” – btnCitroen

Cuando se pulse este botón, interesa que aparezca en un JOptionPane el número de coches citroen que tiene la empresa.

- “Estadisticas Limpieza” – btnEstLim

Cuando se pulse este botón, interesa que aparezca en un JOptionPane lo siguiente:

• El número de servicios de limpieza que se han realizado. • 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 botón interesa que aparezca en un JOptionPane los datos del quinto servicio realizado. Interesa que aparezca el número del servicio, el tipo de servicio y el coste de dicho servicio.

- “Listado de servicios de fontanería” – btnFont

Cuando se pulse este botón interesa que aparezca en un JOptionPane un listado con los servicios de fontanería. 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 botón interesa que aparezca en un JOptionPane un listado con los servicios con una cantidad menor de 200 euros.

Page 1160: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1160

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.

Page 1161: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1161

PROGRAMACIÓN

JAVA – APLICACIONES DE BASES DE DATOS

FECHAS, NÚMEROS REALES, VALORES NULOS EJERCICIO 1 Crear un programa en Java que manipulará la base de datos MANEMPSA. La ventana principal de esta aplicación tendrá dos botones y un JTextPane:

Botón Datos Trabajadores Al pulsar este botón debe aparecer el listado de trabajadores en el JTextPane.

Page 1162: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1162

Concretamente deben aparecer el nombre, apellidos, sueldo, fecha de entrada y matrícula del coche que conduce. El listado debe aparecer ordenado por fechas ascendentemente (es decir, primero los trabajadores con más antigüedad, y luego los más recientes) Las fechas deben aparecer en el siguiente formato: Día / Mes / Año Los sueldos deben aparecer con la coma decimal. Si el trabajador no tuviera asignada un coche, en el campo matrícula debería aparecer la cadena “sin coche”. Botón Datos Servicios Al pulsar este botón aparecerá el listado de servicios en el JTextPane. El listado aparecerá ordenado por fechas de más reciente a más antiguo. Debe aparecer la fecha del servicio, el coste, el tipo y el comentario. La fecha debe aparecer en formato: Dia del Mes del Año. 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”.

Page 1163: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1163

PROGRAMACIÓN

JAVA – APLICACIONES DE BASES DE DATOS

CONSULTAS DEL USUARIO Realizar una pequeña aplicación de base de datos que maneje la base de datos MANEMPSA. La ventana principal del programa contendrá un JTextPane y los siguientes elementos: Botón Ver Servicios Al pulsar este botón aparecerá en el JTextPane el listado con todos los servicios realizados por la empresa ordenados por fecha de forma ascendente. Deben aparecer en el listado los siguientes campos: fecha del servicio, tipo, coste y comentario. La fecha aparecerá en formato dia-mes-año. El coste aparecerá con coma decimal. No interesa que aparezcan los valores null. Cuando esto suceda, sustituirlos por un simple guión “-“. Selección por costes: Se deben añadir a la ventana los siguientes elementos:

- Un cuadro de texto. - Un botón “Mayor que” - Un botón “Menor que” - Un botón “Igual a” - Un botón “Distinto de”

En el cuadro de texto el usuario introducirá una cantidad. Al pulsar el botón “Mayor que” aparecerá el listado de servicios cuyo coste sea mayor a dicha cantidad. Al pulsar el botón “Menor que” aparecerá el listado de servicios cuyo coste sea menor a dicha cantidad. Al pulsar el botón “Igual a” aparecerá el listado de servicios cuyo coste sea igual a dicha cantidad. Al pulsar el botón “Distinto de” aparecerá el listado de servicios cuyo coste sea distinto a dicha cantidad. Selección por tipo: Se deben añadir a la ventana los siguientes elementos:

- Un cuadro de texto. - Un botón “Igual a”.

Page 1164: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1164

- Un botón “Contiene a”. El usuario introducirá un texto en el cuadro de texto. Al pulsar el botón “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 botón “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 Fontanería, Carpintería, etc. Es decir, todos los servicios que contengan “ía” en el tipo. Selección por fecha: Se deben añadir a la ventana los siguientes elementos:

- Un cuadro de texto para el día, otro para el mes y otro para el año. - Un botón “Anterior a” - Un botón “Posterior a” - Un botón “En el año”

El usuario introducirá una fecha en los cuadros día-mes-año. Luego, si el usuario pulsa el botón 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 botón En el año, el programa mostrará el listado de servicios que hayan sido realizados en el año indicado en el cuadro año. (En este caso no se tienen en cuenta los cuadros día y mes)

Page 1165: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1165

PROGRAMACIÓN

JAVA – APLICACIONES DE BASES DE DATOS

ALTAS DE REGISTROS Realizar una pequeña aplicación de base de datos que maneje la base de datos MANEMPSA. La ventana principal de dicha aplicación contendrá los siguientes elementos: Botón Listado de coches Al pulsar este botón, 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 permitirán introducir los datos de un nuevo coche que se quiera añadir. Dentro del panel también tendremos un botón Alta que al ser pulsado efectuará la introducción del nuevo coche en la tabla. Al pulsarse el botón Alta, deberá mostrarse el contenido de la tabla coches en el panel, y allí deberá aparecer el listado incluyendo el nuevo coche introducido. (El código del botón Alta deberá construir una consulta SQL válida del tipo INSERT INTO que permita introducir los datos del nuevo coche)

Page 1166: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1166

PROGRAMACIÓN

JAVA – APLICACIONES DE BASES DE DATOS

BAJA DE REGISTROS Mejorar la aplicación realizada en la hoja de ejercicios anterior de forma que posibilite la eliminación de coches de la tabla coches de la base de datos MANEMPSA. Para ello, debe añadir a la ventana principal lo siguiente:

- Un cuadro de texto donde el usuario introducirá una matrícula. - Un botón Eliminar coche.

Al pulsar el botón Eliminar coche, se borrará de la tabla el coche cuya matrícula 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 matrícula introducida en el cuadro de texto no se corresponde con ningún coche de la base de datos. (En este caso no se hará el borrado, claro está)

- En el caso de que la matrícula exista, el programa pedirá confirmación antes de efectuar el borrado.

Page 1167: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1167

PROGRAMACIÓN

JAVA – APLICACIONES DE BASES DE DATOS

MODIFICACIÓN DE REGISTROS Mejorar la aplicación realizada en la hoja de ejercicios anterior de forma que posibilite la modificación de coches de la tabla coches de la base de datos MANEMPSA. Para ello, debe añadir a la ventana principal lo siguiente:

- Un panel de modificación que contenga un cuadro de texto por campo de la tabla coches (Este panel será muy parecido al panel de introducción de coches)

- Un botón Buscar al lado del cuadro de texto de la matrícula. - Un botón Efectuar Modificación.

El usuario tendrá que introducir una matrícula y luego pulsará el botón Buscar. Al pulsar este botón, el programa rellenará los cuadros de texto con los datos del coche que tenga dicha matrícula. Si no existe un coche con dicha matrícula 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 botón Efectuar Modificación. Al pulsar este botón se efectuará la modificación 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.

Page 1168: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1168

PROGRAMACIÓN

JAVA – JTABLE

EJERCICIO Nº1

Se pide que realice una aplicación que muestre una tabla con las siguientes columnas: Nombre Examen 1 Examen 2 Examen 3 Al comenzar el programa la tabla estará vacía y solo se mostrará la cabecera. El programa constará además de la tabla de los siguientes elementos:

- Un botón “Añadir Blanco”.

Este botón añadirá una nueva fila en blanco a la tabla.

- Un botón “Añadir Alumno”.

Este botón añadirá una nueva fila a la tabla con los siguientes valores: Nombre: “No definido” Examen 1: 5 Examen 2: 5 Examen 3: 5

- Un botón “Eliminar”

Este botón eliminará la fila donde que esté seleccionada en ese momento. En el caso de que no hubiera ninguna fila seleccionada al pulsar este botón, el programa debe mostrar un mensaje de error.

- Un botón “Resultados”

Este botón mostrará en un JOptionPane la nota media del alumno de la fila que esté seleccionada. También 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 botón, el programa debe mostrar un mensaje de error.

- Un botón “Resultados Trimestre 1”

Page 1169: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1169

Este botón mostrará en un JOptionPane el número de alumnos que aprobaron el examen 1 y el número de alumnos que suspendieron dicho examen.

Page 1170: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1170

PROGRAMACIÓN

JAVA – JTABLE

EJERCICIO Nº1

Realiza un programa que contenga un JTable y un botón. El botón 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 Nº2

Realiza un programa igual al anterior pero que permita mostrar el contenido de la tabla servicios de la base de datos MANEMPSA.

Page 1171: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1171

PROGRAMACIÓN

JAVA – JTABLE

EJERCICIO Nº1

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 botón Eliminar, otro botón Nuevo Cliente y un botón Modificar Cliente. Al pulsar Eliminar se eliminará el cliente seleccionado en el JTable. Al pulsar Nuevo Cliente aparecerá un cuadro de diálogo donde el usuario introducirá los datos de un nuevo cliente. Al pulsar Modificar Cliente aparecerá un cuadro de diálogo donde el usuario podrá cambiar los datos del cliente que haya seleccionado en el JTable.

Page 1172: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1172

PROGRAMACIÓN

JAVA – JTABLE

EJERCICIO Nº1

El programa realizado en la hoja de ejercicios anterior permitía el alta, baja y modificación de los clientes de la base de datos MANEMPSA. Se pide ahora que añada un cuadro de diálogo de filtrado al ejercicio de la hoja anterior que permita filtrar por los distintos campos de la tabla de clientes.

Page 1173: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1173

PROGRAMACIÓN

JAVA

CADENAS (CONTINUACIÓN)

Ejercicio 1

Realizar un programa cuya ventana tenga los siguientes elementos:

- Un cuadro de texto llamado txtFrase. - Varias etiquetas. - Un botón “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 botón Analizar.

- El programa mostrará en las etiquetas el número 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 mayúsculas y en minúsculas.

- Si el usuario no introduce nada en el cuadro de texto txtFrase, entonces el programa debería mostrar un error.

Ejercicio 2

Realizar un programa cuya ventana tenga los siguientes elementos:

Page 1174: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1174

- Un cuadro de texto llamado txtDNI. - Una etiqueta llamada etiDNI. - Un botón “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 botón Preparar DNI. El resultado será que el DNI introducido aparecerá “preparado” en la etiqueta etiDNI.

- A continuación 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

31 543 234 A

etc.

Sin embargo, cuando el usuario pulse el botón Preparar DNI, en la etiqueta etiDNI debe

aparecer el DNI con el siguiente formato:

31543234A

Es decir, sin ningún espacio y sin puntos ni guiones.

- Si el usuario no introduce nada en el cuadro de texto del DNI y pulsa el botón, entonces debe aparecer un error emergente (JOptionPane).

Page 1175: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1175

Ejercicio 3

Se pide hacer un programa que le permita al usuario introducir una palabra en latín de la primera

declinación, y a continuación generar sus “casos” en plural y singular.

Las palabras de la primera declinación en latín son sustantivos femeninos (la mayoría), 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

Page 1176: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1176

Debes observar que algunos casos son exactamente iguales a la palabra inicial, como por ejemplo

el Nominativo Singular.

Otros casos, en cambio, se construyen añadiendo algunas letras al final de la palabra inicial. Por

ejemplo, el Acusativo singular se construye añadiendo 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 concatenaría: 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 botón “Declinar” llamado btnDeclinar.

El programa funcionará de la siguiente forma:

- El usuario introducirá una palabra en latín de la primera declinación en el cuadro de texto, y luego pulsará el botón “Declinar”. Entonces en las etiquetas aparecerán 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 declinación.

- Tenga en cuenta que la palabra introducida puede estar en mayúsculas o minúsculas.

Page 1177: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1177

PROGRAMACIÓN

JAVA – JTABLE

EJERCICIO Nº1

El programa de la hoja de ejercicios anterior permitía la gestión 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 diálogo de filtrado permita al usuario decidir la ordenación del listado. Por otro lado, se pide que junto al JTable donde aparece el listado de clientes aparezca el número de clientes que se está mostrando en todo momento en el JTable.

Page 1178: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1178

PROGRAMACIÓN

JAVA – iREPORT

EJERCICIO Nº1

Crear una DSN llamada EjercicioDSN que haga referencia a la base de datos MANEMPSA que tiene almacenada en Mis Documentos. EJERCICIO Nº2

En el programa iReport, crear una conexión llamada Conexión Ejercicio que esté creada a partir de la DSN del ejercicio anterior. EJERCICIO Nº3

Crear un informe usando la conexión Conexión Ejercicio del ejercicio anterior donde aparezca el listado de clientes de la base de datos MANEMPSA ordenado por nombre de cliente. El título de este listado debe ser: Listado de Clientes y luego guarde el informe con el nombre clientes.

Page 1179: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1179

PROGRAMACIÓN

JAVA – iREPORT

EJERCICIO Nº1

Crea un listado de clientes usando la opción mago de informes de iReport. Este listado debe mostrar los siguientes campos: nombre, dirección y los dos teléfonos. El listado debe salir ordenado por nombre. Una vez creado el listado, debe realizar las siguientes modificaciones en él:

- El título del listado debe ser: “Clientes de MANEMPSA”. Y debe tener las siguientes características: o Color de fondo: Azul. o Tamaño de la letra: 18. o Color de letra: Blanco. o En cursiva.

- La cabecera del listado debe tener las siguientes características:

o Tamaño de letra: 10 o Cada campo de la cabecera debe tener una alineación Centro. o Los campos deben estar en negrita y subrayados o Deben ser de color Azul.

- Los datos del listado deben tener las siguientes características: o Deben tener alineación centro. o Deben tener un tamaño 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 teléfonos deben aparecer en color rojo y en negrita.

Una vez hecho esto, si quiere experimentar realizando algún cambio más, hágalo.

Page 1180: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1180

PROGRAMACIÓN

JAVA – iREPORT

EJERCICIO Nº1

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 diseño:

- El título será NOTA DE SERVICIOS SEGASA

- En el encabezado de página debe aparecer una ficha como la que sigue:

Ficha de Cliente.

CIF: ---el cif del cliente---

NOMBRE: ---el nombre del cliente---

DIRECCIÓN: ---dirección del cliente---

TELEFONO 1: ---teléfono 1 del cliente---

TELEFONO 2: ---teléfono 2 del cliente---

Page 1181: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1181

- Incluya también en el encabezado de página un logotipo (bájese 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. Sería interesante que destacara el encabezado colocándolo en negrita y separándolo del listado de datos a través de una línea.

- En la zona del pie de columna, añada simplemente una línea horizontal.

- En la zona del pie de página y del pie de última página debe aparecer el siguiente texto centrado:

MANEMPSA

Mantenimiento Integral a Empresas

Polígono Industrial Norte, C/ Bonanza 3

11404 Jerez (Cádiz)

Page 1182: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1182

PROGRAMACIÓN

JAVA

EXCEPCIONES

Ejercicio 1

Realizar un programa que le permita al usuario introducir una frase, una posición inicial y una

posición final. (Tres cuadros de texto llamados txtFrase, txtPosIni y txtPosFin.

El programa debe mostrar la subcadena contenida entre la posición inicial y la posición final (use

una etiqueta etiSubcadena)

Esto sucederá cuando se pulse un botón “Analizar” llamado btnAnalizar.

El código de este programa puede generar errores de ejecución (excepciones), en el caso de que

el usuario no introduzca nada en el 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

Page 1183: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1183

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 fórmula:

Raíz( (x2-x1)2 + (y2-y1)2 )

Añada un botón “Calcular” llamado btnCalcular que realice el cálculo. El código que introduzca en

este botón debe ser capaz de capturar cualquier tipo de excepción producida. Interesa que

aparezca un mensaje indicando el tipo de error producido, y el tipo de excepción.

Ejercicio 3

Realice un programa que le pida dos números al usuario. Ambos números deben estar

comprendidos entre 0 y 100.

El programa debe calcular la división y el resto del mayor entre el menor.

El programa debe capturar todo tipo de excepciones producidas en el código.

Además, debe hacer que si el usuario introduce un número no comprendido entre 0 y 100, el

código genere una excepción propia

Page 1184: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1184

PROGRAMACIÓN

JAVA

LA CLASE JFRAME

Ejercicio 1

Realizar un programa cuya ventana contanga los siguientes elementos:

- Un cuadro de texto llamado txtTitulo. - Un botón “Cambiar Título” llamado btnCambiarTitulo. - Un botón “Maximizar” llamado btnMaximizar. - Un botón “Minimizar” llamado btnMinimizar. - Un botón “Restaurar” llamado btnRestaurar. - Un cuadro de texto llamado txtPosicionX. - Un cuadro de texto llamado txtPosicionY. - Un botón “Mover” llamado btnMover. - Un botón “Centrar” llamado btnCentrar. - Un botón “Estilo Java” llamado btnEstiloJava. - Un botón “Estilo Windows” llamado btnEstiloWindows. - Un botón “Rojo” llamado btnRojo. - Un botón “Verde” llamado btnVerde. - Un botón “Azul” llamado btnAzul.

El funcionamiento del programa será el siguiente:

Page 1185: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1185

- Si el usuario pulsa el botón “Cambiar Titulo”, el título de la ventana cambiará, colocándose como título lo que el usuario haya escrito en el cuadro de texto txtTitulo.

- Si el usuario pulsa el botón “Maximizar”, la ventana se maximizará.

- Si el usuario pulsa el botón “Minimizar”, la ventana se minimizará.

- Si el usuario pulsa el botón “Restaurar”, la ventana se restaurará.

- Si el usuario pulsa el botón “Mover”, la ventana se colocará en la posición 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 botón “Centrar”, la ventana se colocará en el centro de la pantalla.

- Si el usuario pulsa el botón “Estilo Java”, entonces toda la ventana cambiará a la visualización Java.

- Si el usuario pulsa el botón “Estilo Windows”, entonces toda la ventana cambiará a la visualización Windows.

- Si el usuario pulsa uno de los botones de color, entonces el fondo de la ventana se cambiará al color indicado.

Además, el programa contará con las siguientes características:

Page 1186: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1186

- Al iniciarse el programa, este debe pedir una contraseña al usuario. Si el usuario introduce la contraseña correcta, entonces el usuario entrará en el programa. En caso contrario el programa se cerrará.

- Al finalizar el programa, este debe pedir una confirmación al usuario:

¿Desea salir del programa?

Si el usuario responde Sí, entonces el programa finalizará. En caso contrario, el programa seguirá funcionando.

Page 1187: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1187

PROGRAMACIÓN

JAVA

CUADROS DE VERIFICACIÓN, BOTONES DE OPCIÓN

Ejercicio 1

Se pide realizar un programa que tenga los siguientes elementos en la ventana principal:

- Un panel con el título “Ingredientes”. No hace falta que le de un nombre. - Un panel con el título “Tamaño”. No hace falta que le de un nombre. - Cuatro JCheckBox con los textos:

o “Bacon” – nombre: chkBacon o “Anchoas” – nombre: chkAnchoas

Page 1188: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1188

o “Cebolla” – nombre: chkCebolla o “Pimiento” – nombre: chkPimiento

- Tres JRadioButtons con los textos: o “Pequeña” – nombre: optPequenia o “Mediana” – nombre: optMediana o “Familiar” – nombre: optFamiliar

- Un botón “Total” llamado btnTotal. - Una etiqueta con borde llamada etiResultado.

El programa funcionará de la siguiente forma:

- El usuario elegirá un tamaño para la pizza que quiere pedir. Este tamaño puede ser uno solo de los siguientes: pequeña, mediana o familiar.

- El usuario elegirá también los ingredientes que desee. Puede seleccionar uno o varios ingredientes.

- Al pulsar el botón Total, el programa calculará y mostrará en la etiqueta etiResultado el precio de la pizza, teniendo en cuenta lo siguiente:

Una pizza pequeña cuesta 7 euros.

Una pizza mediana cuesta 9 euros.

Una pizza familiar cuesta 11 euros.

Si se le añade como ingrediente Bacon, hay que aumentar el precio de la pizza en 1,50

euros.

Si se le añade como ingrediente Anchoas, hay que aumentar el precio de la pizza en 1,80

euros.

Si se le añade como ingrediente Cebolla, hay que aumentar el precio de la pizza en 1,00

euros.

Si se le añade como ingrediente Pimiento, hay que aumentar el precio de la pizza en 1,20

euros.

Page 1189: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1189

Tenga en cuenta esto otro:

- Al ejecutar el programa, debe estar seleccionada la opción 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: PIZZERÍA JAVA, y el nombre del programador.

- Al intentar cerrar el programa, este debe pedir confirmación para salir. Solo si el usuario acepta salir del programa este se cerrará.

Page 1190: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1190

PROGRAMACIÓN

JAVA

LISTAS Y COMBOS

Ejercicio 1

Se pide realizar un programa que tenga el siguiente aspecto:

Esta ventana contiene lo siguiente:

Page 1191: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1191

- Un cuadro de lista con los siguientes productos (y sus precios):

Sistema de Localización – 120

Centro de Control – 60

Modem GSM – 45

Este cuadro de lista se llamará lstProductos.

- Un cuadro de texto donde se introducirán las unidades que se envían, llamado txtUnidades.

- Un combo llamado cboDestino donde tendremos los siguientes elementos:

Península

Canarias

Extranjero

- Un combo llamado cboTipoEnvio donde tendremos los siguientes elementos:

Normal

Urgente

- Un botón “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 número de unidades que se enviarán del producto.

Page 1192: Curso de Netbeans

MATERIAL RECOPILADO POR DANILO MERIDA Ingenieroensistemas.blogspot.com

Ingenieroensistemas.com

Curso de netbeans 7.3 cualquier versión (JAVA)

1192

- El usuario indicará el tipo de destino. - El usuario indicará el tipo de envío. - Al pulsar Calcular, el programa mostrará en la etiqueta etiResultado el total del envío,

teniendo en cuenta lo siguiente:

El total del envío se calcula así:

Total = (Unidades * Precio del producto) + coste destino + coste tipo

El Coste de Destino puede ser uno de los siguientes:

Península – 20

Canarias – 25

Extranjero – 30

El Coste del Tipo de Envío puede ser uno de los siguientes:

Normal – 3

Urgente – 10

Tenga en cuenta esto otro:

- Si se pulsa calcular cuando no hay seleccionado ningún producto, el programa mostrará un mensaje de error emergente indicándolo.

- Si las unidades son incorrectas, debería mostrarse también un error.