manual-netbeans guia de ejercicios

721
EJERCICIO GUIADO. J AVA: CUADROS DE VERI FICACIÓN 1. Realiza un nuevo proyect o. 2. En la v ent ana pr incipal debes añ adir lo siguiente: a. Un botón Aceptar” llam ado bt nAceptar. b. Una etiqu eta con b orde llamada etiResultado. 3. Añade t am bién t res cuadros de verificación. Estos cuadros son objet os del t ipo J Check Box. 4. Añade tr es J CheckBox y camb ia el t ext o de ellos, de form a qu e aparezca P erro” , “ Gato” y “ Ratón” . 5. Debe cam biar el n om bre d e cada uno de ellos. Se llam arán: chk P erro, chkGato, chkRaton. 6. La vent ana t endrá el siguient e aspecto cuand o ter mine: HAUTIRO

Upload: alexander-montilla

Post on 29-Oct-2015

704 views

Category:

Documents


15 download

TRANSCRIPT

Page 1: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 1/719

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 objetosdel tipo JCheckBox.

4. Añade tres J CheckBox y cambia el texto de ellos, de forma que

aparezca “Perro”, “Gato” y “Ratón”.

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:

HAUTIRO

Page 2: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 2/719

 

7. El programa debe funcionar de la siguiente forma:

Cuando el usuario pulse aceptar, en la etiqueta aparecerá un mensajeindicando qué animales han sido “seleccionados”. Para ello hay queprogramar el evento actionPerformed del botón Aceptar. En ese eventoañada el siguiente código:

St r i ng mensaj e="Ani mal es el egi dos: " ;i f ( chkPer ro. i sSel ect ed( ) ) {

mensaj e=mensaj e+"Per r o " ;}

i f ( chkGat o. i sSel ected( ) ) {mensaj e=mensaj e+"Gat o " ;

}

i f ( chkRat on. i sSel ected( ) ) {mensaj e=mensaj e+"Rat on " ;

}

et i Resul t ado. set Text ( mensaj e) ;

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ónchkGato 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.

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

HAUTIRO

Page 3: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 3/719

 

CONCLUSIÓN

Los cuadros de verificación (JCheckBox) se usan cuando quieresseleccionar varias opciones.

HAUTIRO

Page 4: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 4/719

EJERCICIO GUIADO. JAVA: BOTONES DE OPCIÓ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 un panel. Un panel es una zona rectangular que puede contenerelementos (botones, etiquetas, etc) La forma de poner un panel es a través delobjeto J Panel.

4. Una vez añadido el panel en el J Frame, le pondremos un borde para poderlocalizarlo fácilmente. Debes hacer lo siguiente:

a. Selecciona el panel que has añadido.b. Activa la propiedad Border (botón con tres puntos)c. Busca el tipo de borde llamado TitledBorder (borde con título) y pon el

título colores.

HAUTIRO

Page 5: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 5/719

 

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

HAUTIRO

Page 6: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 6/719

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

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

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

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

10. Si ejecuta el programa, observará que pueden seleccionarse varios colores a lavez. Esto no es interesante, ya que los botones de opción se usan para activarsolo una opción entre varias.

HAUTIRO

Page 7: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 7/719

 11. 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! Esteobjeto es invisible, y no se verá en el formulario, sin embargo, lo podréisver 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 mismogrupo. Es decir, que pertenezcan al grupo grupoColores.

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

HAUTIRO

Page 8: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 8/719

 

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

12. Acabas de asociar los tres botones de opción a un mismo grupo. Esto produceque solo una de las tres opciones pueda estar activada. Pruébelo ejecutando elprograma.

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

opt Roj o. set Sel ect ed( t r ue) ;

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

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

14. 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 elactionPerformed del botón Aceptar programe lo siguiente:

St r i ng mensaj e="Col or el egi do: " ;

i f ( opt Roj o. i sSel ect ed( ) ) {mensaj e=mensaj e+"Roj o" ;

} el se i f ( opt Ver de. i sSel ected( ) ) {mensaj e=mensaj e+"Ver de";

} el se i f ( opt Azul . i sSel ect ed( ) ) {mensaj e=mensaj e+"Azul " ;

}

et i Resul t ado. set Text ( mensaj e) ;

HAUTIRO

Page 9: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 9/719

 

15. 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 “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ónestá seleccionado o no.

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

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

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

CONCLUSIÓN

Los botones de opción, también llamados botones de radio (JRadioBut ton) seusan cuando quieres que el usuario pueda elegir una opción de entre varias.

Es interesante que los botones de radio aparezcan dentro de un panel JPanel. Serecomienda colocar un borde al panel.

Es totalmente necesario añadir un objeto del tipo ButtonGroup, y hacer que losbotones de radio pertenezcan a dicho grupo. En caso contrario, será posibleactivar varios botones de opción a la vez.

HAUTIRO

Page 10: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 10/719

EJERCICIO GUIADO. JAVA: CUADROS DE LISTA

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 un cuadro de lista. Los cuadros de listas son objetos J List.

4. Cámbiale el nombre al J List. Ten cuidado, ya que en los J List aparecen siempredentro de otro objeto llamado jScrollPane. Si miras en el Inspector, verás que al

pulsar en el botón +del jScrollPane aparecerá tu J List:

HAUTIRO

Page 11: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 11/719

5. Aprovecha para cambiarle el nombre al J List. El nuevo nombre será lstColores.

6. Si te fijas en el J List, consiste en un cuadro que contiene una serie de Items. Estoselementos pueden ser cambiados a través de la propiedad Model del J List.

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

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

9. Debes hacer que la lista sea la siguiente:

RojoVerdeAzul

10. Ahora programaremos el actionPerformed del botón Aceptar. Debes introducir elsiguiente código:

Str i ng mensaj e;

mensaj e="El col or sel ecci onado es: "+l st Col or es. get Sel ect edVal ue( ) . t oSt r i ng( ) ;et i Resul t ado. set Text( mensaj e) ;

HAUTIRO

Page 12: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 12/719

11. 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: l st Col or es. get Sel ect edVal ue( ) , 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 . t oSt r i ng( ) .e. De esta manera puedes extraer el elemento seleccionado de un cuadro de

lista.f. Luego simplemente ponemos la cadena mensaje dentro de la etiqueta.

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

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

Str i ng mensaj e;

i f ( l st Col or es. get Sel ect edI ndex() ==- 1) {mensaj e="No hay un col or sel ecci onado. " ;

} el se {mensaj e="El col or sel ecci onado es: "+l st Col or es. get Sel ect edVal ue( ) . t oSt r i ng( ) ;

}et i Resul t ado. set Text( mensaj e) ;

14. Observa el código:

a. El método getSelectedIndex me dice el índice del elemento que estáseleccionado.

HAUTIRO

Page 13: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 13/719

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únelemento seleccionado.

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

15. Si ejecuta el programa y pulsa el botón Aceptar sin seleccionar nada el resultadodebería ser el siguiente:

16. Se podría haber prescindido del botón aceptar si el código anterior se hubiera puestoen el evento mouseClicked del cuadro de lista en vez de en el actionPerformed delbotó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 deelementos 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 elementoseleccionado. Si este índice es -1, entonces sabremos que no hay ningún elementoseleccionado.

HAUTIRO

Page 14: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 14/719

EJERCICIO GUIADO. JAVA: CUADROS COMBINADOS

1. Realiza un nuevo proyecto.

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

a. Una etiqueta con borde llamada etiResultado.

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

4. Cámbiale el nombre al J ComboBox. El nombre será cboColores. Tu programa debetener más o menos este aspecto.

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

HAUTIRO

Page 15: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 15/719

 

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

RojoVerdeAzul

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

HAUTIRO

Page 16: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 16/719

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

Para ello, debes programar el evento actionPerformed del combo y añadir el siguientecódigo:

St r i ng mensaj e="El col or el egi do es " ;

mensaj e=mensaj e+cboCol or es. getSel ect edI t em( ) . t oSt r i ng( ) ;et i Resul t ado. set Text ( mensaj e) ;

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

d. Finalmente se coloca el mensaje en la etiqueta.

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

11. 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 concambiar su propiedad “editable” y activarla.

HAUTIRO

Page 17: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 17/719

 

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

CONCLUSIÓN

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

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

 A través del método getSelectedItem se puede extraer la opción seleccionada o eltexto escrito en el combo.

Se escribe aquí yse pulsa enter

HAUTIRO

Page 18: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 18/719

EJERCICIO GUIADO. JAVA: MODELOS DE CUADRO DE LISTA

1. Realiza un nuevo proyecto.

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

a. Una etiqueta con borde llamada etiResultado.

3. Añade un cuadro de lista al formulario (J List).

4. 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 objetodel tipo J ScrollPane.

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

HAUTIRO

Page 19: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 19/719

 

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

Def aul t Li st Model model o = new Def aul t Li st Model ( ) ;model o. addEl ement ( " J uan") ;model o. addEl ement ( "Mar í a") ;model o. addEl ement ( "Lui s" ) ;l st Nombr es. set Model ( model o) ;

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

Def aul t Li st Model model o = new Def aul t Li st Model ( ) ;model o. addEl ement ( "Ana") ;model o. addEl ement ( "Mart a") ;model o. addEl ement ( " J ose") ;l st Nombr es. set Model ( model o) ;

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

a. Lo que hace cada botón es rellenar el cuadro de lista con una serie denombres. En el caso del botón “Curso 1”, la lista se rellena con los nombres

 J uan, María y Luis, mientras que en el caso del botón “Curso 2”, la lista serellena con los nombres Ana, Marta y J ose.

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” condatos, y finalmente asocia el “modelo” al cuadro de lista. Veamos como se

hace todo esto.

HAUTIRO

Page 20: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 20/719

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

Def aul t Li st Model model o = new Def aul t Li st Model ( ) ;

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

model o. addEl ement ( "Ana") ;model o. addEl ement ( "Mart a") ;model o. addEl ement ( " J ose") ;

g. Finalmente asociamos el “modelo” creado al cuadro de lista de la siguienteforma:

l st Nombr es. set Model ( model o) ;

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

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

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

et i Resul t ado. set Text ( l st Nombr es. get Sel ectedVal ue( ) . t oSt r i ng( ) ) ;

Esta instrucción hace que al seleccionar un elemento del cuadro de lista ésteaparezca en la etiqueta etiResultado. Recuerda que el método getSelectedValuepermite recoger el elemento seleccionado (hay que convertirlo a cadena con toString)

Click y cambia ellistado.

HAUTIRO

Page 21: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 21/719

11. Ejecuta el programa:

12. Una propuesta. Añada un botón “Vaciar” llamado btnVaciar. Este botón vaciará elcontenido de la lista. Para esto lo único que tiene que hacer es crear un modelo y, sinintroducir 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 encualquier momento.

Click y apareceel elementoseleccionado enla etiqueta.

HAUTIRO

Page 22: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 22/719

EJERCICIO GUIADO. JAVA: MODELOS DE CUADRO DE LISTA

1. Realiza un nuevo proyecto.

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

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

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

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

i nt i ;

Def aul t ComboBoxModel model o = new Def aul t ComboBoxModel ( ) ;

f or ( i =0; i <10; i +=2) {model o. addEl ement ( "Nº "+i ) ;}

cboNumeros. set Model ( model o) ;

6. 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 loscombos, para crear un objeto “modelo” se usará esta instrucción:

Def aul t ComboBoxModel model o = new Def aul t ComboBoxModel ( ) ;

HAUTIRO

Page 23: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 23/719

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 almodelo del combo.

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

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

cboNumeros. set Model ( model o) ;

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

8. El botón Impares es similar. Programa su actionPerformed como sigue:

i nt i ;Def aul t ComboBoxModel model o = new Def aul t ComboBoxModel ( ) ;

f or ( i =1; i <10; i +=2) {model o. addEl ement ( "Nº "+i ) ;

}

cboNumeros. set Model ( model o) ;

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

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

Se pulsa y se rellenaautomáticamente

HAUTIRO

Page 24: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 24/719

 et i Resul t ado. set Text( cboNumer os. get Sel ect edI t em( ) . t oSt r i ng( ) ) ;

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

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

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

CONCLUSIÓN

Un combo, al igual que los cuadros de lista, es un objeto que cont iene a su vez otroobjeto denominado “modelo” .

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

Combo Modelo Datos

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

HAUTIRO

Page 25: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 25/719

EJERCICIO GUIADO. JAVA: TOGGLEBUTTONS

1. Realiza un nuevo proyecto.

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

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

b. Se añadirá un cuadro de texto llamadotxtPrecioBase.

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

d. Se creará una etiqueta vacía y con bordellamada etiTotal. Use la propiedad font de esta

etiqueta para hacer que el texto tenga unmayor tamaño.

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

Estos botones no son botones normales, sonbotones del tipo J ToggleButton. Usa este tipode objeto para crearlos.

Estos botones, se diferencian de los botonesnormales en que se quedan pulsados cuandose hace un clic sobre ellos, y no vuelven a suestado normal hasta que no se vuelve a hacerclic 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. Laprimera se llamará etiPrecioInstalacion, la segunda etiPrecioFormacion y latercera etiPrecioAlimentacionBD.

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

HAUTIRO

Page 26: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 26/719

 

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

a. El usuario introducirá un precio base para el servicio que se vende.b. A 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ónAlimentació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.

El precio de los Extras dependerá de las opciones elegidas por el usuario. Porejemplo, si el usuario quiere Instalación y Formación, los extras costarán 240euros.

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

Observa como al pulsar los J ToggledButton estos se quedanpulsados.

Si se vuelven a activar se “despulsan”.

HAUTIRO

Page 27: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 27/719

doubl e preci o_base;doubl e pr eci o_i nstal ; / / pr eci o i nstal aci óndoubl e pr eci o_f or ; / / pr eci o f or maci ondoubl e pr eci o_al i ; / / pr eci o al i ment aci on

/ / Recoj o dat os desde l a ventana:

pr eci o_base = Doubl e. parseDoubl e(t xtPreci oBase. getText ( ) ) ;pr eci o_i nst al = Doubl e. par seDoubl e( et i Pr eci oI nst al aci on. get Text ( ) ) ;pr eci o_f or = Doubl e. par seDoubl e( et i Preci oFor maci on. get Text( ) ) ;pr eci o_al i = Doubl e. par seDoubl e( et i Preci oAl i ment aci onBD. get Text( ) ) ;

/ / Ahora que t engo l os datos, puedo hacer cál cul os.

/ / Al pr eci o base se l e van añadi endo pr eci o de extr as/ / según estén o no act i vados l os J Toggl eBut t ons

doubl e pr eci o_t ot al ;

pr eci o_t ot al = pr eci o_base;

i f ( t btnI nstal ac i on. i sSel ected( ) ) { / / Si se sel ecci onó i nstal ac i ón

pr eci o_t ot al = pr eci o_t ot al +pr eci o_i nst al ;}

i f ( t bt nFor maci on. i sSel ected( ) ) { / / Si se sel ecci onó f or maci ónpr eci o_t ot al = pr eci o_t ot al +pr eci o_f or ;

}

i f ( t bt nAl i ment aci onBD. i sSel ected( ) ) { / / Si se sel ecci onó Al i ment aci ón BDpr eci o_t ot al = pr eci o_t ot al +pr eci o_al i ;

}

/ / Fi nal ment e pongo el r esul t ado en l a et i quet aet i Tot al . set Text ( pr eci o_t ot al +" €") ;

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

a. Primero se crean variables doubles (ya que se admitirán decimales) parapoder 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:

pr eci o_base = Doubl e. parseDoubl e(t xtPreci oBase. getText ( ) ) ;

pr eci o_i nst al = Doubl e. par seDoubl e( et i Pr eci oI nst al aci on. get Text ( ) ) ;pr eci o_f or = Doubl e. par seDoubl e( et i Preci oFor maci on. get Text( ) ) ;pr eci o_al i = Doubl e. par seDoubl e( et i Preci oAl i ment aci onBD. get Text( ) ) ;

c. Una vez obtenidos los datos en forma numérica, ya se pueden hacer cálculoscon ellos. El programa declara una nueva variable precio_total donde seintroducirá el resultado. En primer lugar se introduce en esta variable el preciobase.

doubl e pr eci o_t ot al ;

pr eci o_t ot al = pr eci o_base;

HAUTIRO

Page 28: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 28/719

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

i f ( t btnI nstal ac i on. i sSel ected( ) ) { / / Si se sel ecci onó i nstal ac i ónpr eci o_t ot al = pr eci o_t ot al +pr eci o_i nst al ;

}

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

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

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

7. Comprueba el funcionamiento del programa…

8. Supongamos que normalmente (en el 90 por ciento de los casos) la instalación essolicitada por el usuario. Podría ser interesante que el botón Instalación ya salieraactivado al ejecutarse el programa. Para ello, añade en elConstructor la siguientelínea.

t bt nI nstal aci on. set Sel ected( t r ue) ;

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

Comprueba esto ejecutando el programa.

Introduce una cantidad (usa el puntopara los decimales)

Selecciona los extras que desees.

Pulsa Calcular y obtendrás el resultado.

HAUTIRO

Page 29: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 29/719

 CONCLUSIÓN

Los JToggleButton son botones que pueden quedarse pulsados.

 A través del método isSelected podemos saber s i un JToggleButton estáseleccionado.

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

Realmente, estos botones no suelen ser muy usados, ya que pueden ser sustitu idospor Cuadros de Verificación (JCheckBox) que son más conocidos.

HAUTIRO

Page 30: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 30/719

EJERCICIO GUIADO. JAVA: SLIDERS

Introducción a los JSliders

La clase J Slider 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 J Slider tendrá un valor concreto.

El J Slider 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:

El valor que tiene un J Slider es el valor al que apunta el recuadro del J Slider. En la imagenanterior, el J Slider tiene un valor de 85.

Se verá a continuación las características más interesantes de los J Slider y comoprogramarlos.

Ejercicio guiado

1. Crea un nuevo proyecto.

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

HAUTIRO

Page 31: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 31/719

 

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

4. La ventana tendrá el siguiente aspecto:

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

El valor mínimo y máximo del J Slider se puede cambiar. Busca las propiedadesmaximum yminimum del J Slider y asigna los siguientes valores:

Máximo: 500

Mínimo: 100

6. Se puede asignar un valor inicial al J Slider a través de su propiedadvalue. Busqueesta propiedad y asigne un valor de 400. Observe donde se sitúa el recuadro del

 J Slider.

HAUTIRO

Page 32: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 32/719

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

8. Esto, en realidad, no produce ningún cambio en el J Slider. Para que las divisiones sevean, es necesario que active también la propiedad paintTicks. Esta propiedadpintará divisiones en el J Slider:

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

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

Medidas cada 50unidades

HAUTIRO

Page 33: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 33/719

 

11. Bien. Ahora se pretende que cuando el usuario arrastre el deslizador, en la etiquetaaparezca el valor correspondiente. Para ello tendrá que programar el eventostateChanged del J Slider.

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

En este evento programe lo siguiente:

et i Val or . set Text ( "El val or es: "+sl Desl i zador . get Val ue( ) ) ;

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étodogetValue del deslizador nos devuelve el valor que tieneactualmente el deslizador.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 J Slider quepuedes probar por tu cuenta:

orientationPermite cambiar la orientación del JSlider. Podrías por ejemplo hacer que el J Sliderestuviera en vertical.

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

 J Slider.

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

Movemos aquí.

 Y aparece el valorcorrespondiente aquí.

HAUTIRO

Page 34: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 34/719

 paintTrack Esta propiedad permite pintar o no la línea sobre la que se desliza el J Slider. Pruebaa desactivarla.

CONCLUSIÓN

Los JSliders son objetos “ deslizadores” . Permiten elegir un valor arrastrando unpequeñ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.

HAUTIRO

Page 35: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 35/719

EJERCICIO GUIADO. JAVA: SPINNER

Introducción a los JSpinner 

La clase J Spinner permite crear cuadros como el siguiente:

Son elementos muy comunes en los programas. A través de los dos botones triangulares sepuede hacer que el valor del cuadro aumente o disminuya. También se puede escribirdirectamente un valor dentro del cuadro.

Ejercicio guiado

1. Crea un nuevo proyecto.

2. Añade en él un J Spinner. Su nombre será spiValor .  

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

4. La ventana tendrá el siguiente aspecto:

5. Interesa que cuando cambie el J Spinner (ya sea porque se pulsaron los botonestriangulares o porque se escribió dentro) aparezca el valor correspondiente dentro dela etiqueta. Para ello, tendrá que programar el evento stateChanged del J Spinner.

En el evento stateChanged introduzca el siguiente código:

et i Val or . set Text ( "El val or es: " +spi Val or. get Val ue( ) . t oSt r i ng( ) ) ;

HAUTIRO

Page 36: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 36/719

 

6. Como puedes observar, lo que hace el programa es recoger el valor que tiene el J Spinner a través del método getValue y luego se lo asigna a la etiqueta con elclá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í queen el ejemplo se ha usado el método toString() para convertirlo a una cadena.

7. Prueba el programa y observa su funcionamiento:

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

La pregunta ahora es: ¿Se puede modificar el contenido del J Spinner de forma quetenga unos valores concretos? La respuesta es sí. Veamos como hacerlo.

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

Spi nner NumberModel nm = new Spi nner NumberModel ( ) ;nm. set Maxi mum( 10) ;nm. set Mi ni mum( 0) ;spi Val or . set Model ( nm) ;

10. Este código hace lo siguiente:

a. El J Spinner, al igual que los J List y los J ComboBox, es un objeto que contieneotro objeto “modelo”, y es el objeto “modelo” el que contiene los númerosvisualizados en el J Spinner.

b. En el código anterior se crea un “modelo” para el J Spinner, se definen losvalores que contendrá, y luego se asigna al J Spinner. Estudiemos las líneasdel código.

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

El usuario modifica elvalor del J Spinner...

 Y aquí aparece el valorseleccionado.

HAUTIRO

Page 37: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 37/719

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

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

f. Finalmente se asigna el modelo creado al J Spinner.

g. Este código, en definitiva, hará que el J Spinner muestre los valorescomprendidos entre 0 y 10.

11. Prueba el programa y observa los valores que puede tomar el J Spinner.

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

Spi nner NumberModel nm = new Spi nner NumberModel ( ) ;

nm. set Maxi mum( 10) ;nm. set Mi ni mum( 0) ;nm. setSt epSi ze(2) ;spi Val or . set Model ( nm) ;

13. La línea añadida es:

nm. setSt epSi ze(2) ;

Esta línea usa un método del modelo del J Spinner que permite definir el valor decambio del J SPinner. Dicho de otra forma, esta línea hace que los valores del

 J Spinner salten de 2 en 2.

14. Ejecuta el programa de nuevo y observa como cambian los valores del J Spinner.

15. El modelo del J Spinner tiene también un método llamado setValue que permiteasignar un valor inicial al modelo. Pruebe a usar este método para hacer que el

 J Spinner muestre desde el principio el valor 4.

Ahora los valores estáncomprendidos entre 0 y10

HAUTIRO

Page 38: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 38/719

 

CONCLUSIÓN

Los JSpinners son objetos que permiten seleccionar un número, ya sea escribiéndoloen el recuadro, o bien a través de dos botones tr iangulares que permiten aumentar odisminuir el valor actual.

Los JSpinners son objetos con “ modelo” . Es decir, este objeto contiene a su vez otroobjeto “ modelo” que es el que realmente contiene los datos.

Datos Modelo JSpinner 

Para definir el contenido del JSpinner es necesario crear un modelo del tipoSpinnerNumberModel. Se le asigna al modelo los números deseados, y f inalmente seune 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.

HAUTIRO

Page 39: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 39/719

EJERCICIO GUIADO. JAVA: SCROLLBARS

Introducción a las Jscrol lBars (Barras de desplazamiento)

La clase J ScrollBar permite crear barras de desplazamiento independientes, como la que semuestra a continuación:

La barra tiene un valor mínimo, que se consigue haciendo que el recuadro de la barra dedesplazamiento esté pegado a la parte izquierda.

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

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

Valor mínimo

Decrementa el valor poco apoco (incremento unitario)

Incrementa el valor poco a poco(incremento unitario)

Al pulsar directamente sobre la barrase decrementa en mayor cantidad(incremento en bloque)

Al pulsar directamente sobre labarra se incremente en mayorcantidad (incremento en bloque)

HAUTIRO

Page 40: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 40/719

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 (J ScrollBar) y llámala desValor .

3. La barra de desplazamiento aparecerá en vertical. Use la propiedad de la barrallamada 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í:

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

En este evento programa lo siguiente:

et i Val or . set Text( "El val or es: " +desVal or . get Val ue( ) ) ;

HAUTIRO

Page 41: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 41/719

7. Como ves, se coloca en la etiqueta el valor de la barra. El valor de la barra se obtienecon el método getValue. Ejecuta el programa para ver su funcionamiento.

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

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

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

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

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

Pulsa aquí y observacomo el valor cambiapoco a poco…

Pero si pulsas aquí elvalor cambia en mayorcantidad…

5

HAUTIRO

Page 42: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 42/719

 9. Ejecuta ahora el programa y comprueba su funcionamiento:

Si pulsas aquí, el valorse incrementa de 2 en

2, ya que elincremento unitario seconfiguró en 2.

Si pulsas aquí, el valorse incrementa de 20en 20, ya que elincremento en bloque es de 20.

Si llevas la barra dedesplazamiento al mínimo, suvalor será de 50, ya que seconfiguró así con la propiedadminimum… 

Observa lo que sucede cuando llevasla barra de desplazamiento al máximo:aparece un valor de 145, cuando elvalor máximo que asignamos fue de150 ¿por qué?

HAUTIRO

Page 43: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 43/719

 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 valor150, y sin embargo, el valor máximo alcanzado fue de 145. La explicación es lasiguiente:

* Nuestra barra tiene un valor máximo de 150.

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

*** Como el recuadro interno tiene un ancho definido a través de la propiedadVisibleAmount, 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 unvalor inicial a la barra. Programe en el constructor de su programa lo necesario paraque la barra de desplazamiento tenga un valor de 70 al empezar el programa.

CONCLUSIÓN

Las JScrollBars son barras de desplazamiento independientes. Al igual que losJSliders, las JScrollBars t ienen un valor concreto, que puede ser obtenido a través delmétodo getValue.

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

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

Valor máximo (150) *

Valor de la barra (145) **

5 ***

HAUTIRO

Page 44: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 44/719

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

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

2. Añade a tu ventana un objeto J MenuBar

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

4. En el inspector (parte inferior izquierda) observarás como aparece un objeto J MenuBar, y, dentro de él, un objeto del tipo J Menu. Los objetos J Menu representanlas opciones principales contenidas dentro de la barra de menús.

5. Aprovecha el Inspector para cambiar el nombre al objeto J MenuBar. LlámalobarraMenus.

6. Cambia también el nombre al objeto J Menu. Asígnale el nombremenuArchivo. ElInspector tendrá el siguiente aspecto:

HAUTIRO

Page 45: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 45/719

 7. 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” ala opción del menú:

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

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

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

HAUTIRO

Page 46: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 46/719

 

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

12. Cambia los nombres de las dos nuevas opciones. Sus nombres serán: menuEdiciony menuInsertar.

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

14. Ya tenemos creada la barra de menús (J MenuBar) con sus opciones principales(J Menu). Ahora se tendrán que definir las opciones contenidas en cada opciónprincipal. Por ejemplo, crearemos las opciones contenidas en el menú Archivo.

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

Los J MenuItem son objetos que representan las opciones contenidas en los menúsdesplegables de la barra de menús.

HAUTIRO

Page 47: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 47/719

16. Añade un J MenuItem más al menuArchivo y luego cambia el nombre a ambos. Susnombres seránmenuItemAbrir ymenuItemGuardar . El aspecto del Inspector será elsiguiente:

17. Usa ahora la propiedad Text de ambos J MenuItem para asignarles un texto. Elprimero tendrá el texto “Abrir” y el segundo el texto “Guardar”.

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

menú:

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

19. Seguiremos añadiendo elementos al menú. Ahora haga clic con el derecho sobre elelementomenuArchivo y añada un J Separator.

Los J Separator son objetos que definen una separación entre las opciones de un menú.Cámbiele el nombre y llámelo “separador1”:

HAUTIRO

Page 48: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 48/719

 20. 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á elsiguiente:

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

Observa el efecto que produce el separador.

22. Un J Menu representa las opciones principales de la barra de menús. A su vez, un J Menu contiene J MenuItem, que son las opciones contenidas en cada opciónprincipal, y que se ven cuando se despliega el menú.

Sin embargo, un J Menu puede contener a otros J Menu, que a su vez contendránvarios J MenuItem. Usando el botón derecho del ratón y la opción “Añadir”, añade un

 J Menu dentro de menuEdicion:

HAUTIRO

Page 49: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 49/719

 23. Llama al nuevo JMenumenuColores y asignale el texto “Colores”.

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

“Azul”.

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

La opción Edición (J Menu) contiene una opción Colores (J Menu) que a su vezcontiene las opciones Rojo, Verde y Azul (J MenuItems)

26. 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ú.

HAUTIRO

Page 50: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 50/719

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

t hi s . getCont ent Pane( ) . set Backgr ound(Col or . RED) ;

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

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

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

CONCLUSIÓN

Las barras de menús son un conjunto de objetos de dist into tipo que se contienen

unos a los otros:La barra en sí está representada por un objeto del ti po JMenuBar.

La barra contiene opciones principales, representadas por objetos JMenu.

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

Un JMenu también puede contener otros JMenu, que a su vez contendránJMenuItems.

También puede añadir separadores (JSeparator) que permiten visualizar mejor lasopciones dentro de un menú.

HAUTIRO

Page 51: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 51/719

EJERCICIO GUIADO. JAVA: BARRA DE HERRAMIENTAS

Barras de herramientas

Una barra de herramientas es básicamente un contenedor de botones y otros elementospropios de la ventana.

A través de estos botones se pueden activar de forma rápida las opciones del programa, lascuales suelen estar también incluidas dentro de la barra de menús.

Ejercicio guiado

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

2. Añade a tu ventana un objeto J menuBar (una barra de menús)

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

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

La ventana quedará así:

HAUTIRO

Page 52: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 52/719

 5. Las barras de herramientas son simples contenedoras de objetos. Dentro de ellas se

pueden colocar botones, combos, etiquetas, etc.

Normalmente, las barras de herramientas contienen botones. Así que añade cuatrobotones (J Button) dentro de la barra. Solo tienes que colocarlos dentro de ella.

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

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

HAUTIRO

Page 53: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 53/719

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

“Cuatro”.

9. Ejecuta el programa y observa el resultado.

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

actionPerformed.

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

 J Opt i onPane. showMessageDi al og( nul l , "Act i vast e el botón uno") ;

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

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

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

14. Activa la propiedad icon del primer botón. Luego elige la opción Fichero y pulsa elbotó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.

HAUTIRO

Page 54: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 54/719

 

15. 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:

CONCLUSIÓN

Las barras de herramientas son simplemente contenedores de objetos. Normalmentebotones.

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

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

HAUTIRO

Page 55: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 55/719

EJERCICIO GUIADO. JAVA: MENUS EMERGENTES

El evento mouseClicked

El evento mouseClicked es capaz de capturar un clic del ratón sobre un determinadoelemento de la ventana.

Este evento recibe como parámetro un objeto del tipo MouseEvent, y gracias a él se puedeconseguir 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 seaplicarán a la creación y visualización de menús contextuales (o emergentes)

Ejercicio guiado

1. Crea un nuevo proyecto.

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

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

4. Observe el código del evento:

pr i vat e voi d f ormMouseCl i cked( j ava. awt . event . MouseEvent evt ) {/ / TODO add your handl i ng 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.

5. Dentro del evento programe lo siguiente:

i f ( evt. get But t on( ) ==1) { J Opt i onPane. showMessageDi al og(nul l , "Pul so el i zqui er do") ;

} el se i f ( evt. get But t on( ) ==2) { J Opt i onPane. showMessageDi al og(nul l , "Pul so el cent r al " ) ;

} el se i f ( evt. get But t on( ) ==3) { J Opt i onPane. showMessageDi al og(nul l , "Pul so el derecho") ;

}

HAUTIRO

Page 56: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 56/719

 6. Ejecuta el programa y haz clic sobre el formulario con el botón derecho, con el

izquierdo y con el central. Observa el resultado.

7. Ahora quizás puedas comprender el código anterior. En él, se usa el métodogetButton 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.

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

9. Agrega a tu formulario un objeto del tipo JPopupMenu. Estos objetos definen menúsemergentes.

10. Los objetos J PopupMenu no se muestran en el formulario, pero puedes verlo en el

Inspector dentro de la rama de Otros Componentes:

11. Aprovecharemos el inspector para cambiar el nombre al menú. LlámalomenuEmergente.

12. 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 J MenuItem.

13. Añada al menú emergente tres J MenuItem, y asígneles los siguientes nombres acada uno: menuRojo, menuVerde, menuAzul. El inspector debería tener el siguienteaspecto: 

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

15. El menú emergente ya está construido. Ahora tenemos que hacer que aparezcacuando 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 sucódigo por el siguiente:

menuEmer gent e. show( t hi s, evt. get X( ) , evt. get Y( ) ) ;

HAUTIRO

Page 57: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 57/719

 

16. 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 aquelladonde 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 almétodo getY del objeto evt.

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

17. Ejecuta el programa y observa el resultado.

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

18. Para hacer que al pulsarse una opción suceda algo, solo hay que activar el métodoactionPerformed del J MenuItem correspondiente. Por ejemplo, active elactionPerformed del menuRojo y dentro programe lo siguiente:

t hi s. get Cont ent Pane() . setBackgr ound( Col or . RED) ;

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

HAUTIRO

Page 58: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 58/719

 

CONCLUSIÓN

Los menús contextuales son objetos del tipo JPopupMenu. Estos objetos cont ienenJMenuItem al igual que las opciones de menú normales.

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

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

Tendrá que usar el método show del menú emergente para mostrar dicho menú.

HAUTIRO

Page 59: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 59/719

EJERCICIO GUIADO. JAVA: FILECHOOSER

Cuadros de diálogo Abrir y Guardar 

Las opciones Abrir y Guardar son opciones muy comunes en las aplicaciones. Estasopciones permiten buscar en el árbol de carpetas del sistema un fichero en concreto yabrirlo, o bien guardar una información dentro de un fichero en alguna carpeta.

 J ava proporciona una clase llamada J FileChooser (elegir fichero) que permite mostrar laventana típica de Abrir o Guardar:

Ventana Abrir fichero:

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

El objeto J FileChooser nos facilita la labor de elegir el fichero, pero no realiza la apertura o laacción de guardar la información en él. Esto tendrá que ser programado.

HAUTIRO

Page 60: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 60/719

 Ejercicio guiado

1. Vamos a practicar con el J FileChooser. Para ello, crea un nuevo proyecto.

2. 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:

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

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

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

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

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

 J FileChooser.

Los objetos J FileChooser se añadirán el la zona de “Otros Componentes” delinspector.

HAUTIRO

Page 61: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 61/719

 

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

8. Aparecerá entonces un objeto J FileChooser dentro de Otros Componentes.Aprovecha para cambiarle el nombre a este objeto. Su nombre será elegirFichero.

El inspector quedará así:

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

HAUTIRO

Page 62: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 62/719

i nt r esp;

r esp=el egi r Fi chero. showOpenDi al og( t hi s) ;

i f ( r esp==J Fi l eChooser . APPROVE_OPTI ON) {

 J Opt i onPane. showMessageDi al og( nul l , el egi r Fi cher o. get Sel ect edFi l e( ) . t oSt r i ng( ) ) ;

} el se i f ( r esp==J Fi l eChooser . CANCEL_OPTI ON) {

 J Opt i onPane. showMessageDi al og( nul l , "Se pul só l a opci ón Cancel ar " ) ;}

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

11. Analicemos el código anterior:

i nt r esp;

r esp=el egi r Fi chero. showOpenDi al og( t hi s) ;

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

- El método showOpenDialog no solo muestra la ventana “Abrir Fichero” sino quetambién devuelve un valor entero según el botón pulsado por el usuario en estaventana. 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”:

i f ( r esp==J Fi l eChooser . APPROVE_OPTI ON) {

 J Opt i onPane. showMessageDi al og( nul l , el egi r Fi cher o. get Sel ect edFi l e( ) . t oSt r i ng( ) ) ;

} el se i f ( r esp==J Fi l eChooser . CANCEL_OPTI ON) {

 J Opt i onPane. showMessageDi al og( nul l , "Se pul só l a opci ón Cancel ar " ) ;}

- 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 constanteJFileChooser.CANCEL_OPTION, para saber si el usuario pulsó “Calcelar”.

- En el caso de que el usuario pulsara “Abrir”, el programa usa el métodogetSelectedFile 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 J OptionPane.

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

HAUTIRO

Page 63: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 63/719

 12. 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:

el egi rFi chero. get Sel ectedFi l e( ) . t oSt r i ng()  

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

CONCLUSIÓN

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

Estos objetos no abren ni guardan ficheros, solo permiten al usuario elegir el fichero aabrir 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.

HAUTIRO

Page 64: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 64/719

EJERCICIO GUIADO. JAVA: PANELES DE DESPLAZAMIENTO

Paneles de Desplazamiento

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

Por ejemplo, un panel de desplazamiento podría contener una imagen tan grande que no seviera entera:

Los paneles de desplazamiento son objetos del tipo J ScrollPane.

Ejercic io guiado 1

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

2. Añade en el proyecto un J ScrollPane.

3. Un J ScrollPane, por sí mismo, no contiene nada. Es necesario añadir dentro de él elobjeto que contendrá. Para nuestro ejemplo añadiremos dentro de él una etiqueta(J Label)

4. El formulario debe tener ahora este aspecto:

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

HAUTIRO

Page 65: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 65/719

 

Observa como tienes un J ScrollPane que contiene una etiqueta.

6. Aprovechemos el Inspector para cambiar el nombre a cada objeto. Al J ScrollPane lellamaremos scpImagen y a la etiqueta etiImagen.

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

8. Luego introduciremos una imagen dentro de la etiqueta, a través de la propiedadicon. La imagen la introduciremos desde fichero, y elegiremos la siguiente imagen detu disco duro:

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

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

desplazamiento dentro del panel.

HAUTIRO

Page 66: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 66/719

 10. Puedes mejorar el programa si agrandas el panel de desplazamiento de forma que

ocupe todo el formulario:

De esta forma, cuando ejecutes el programa, al agrandar la ventana, se agrandará elpanel de desplazamiento, viéndose mejor la imagen contenida.

11. Ejecuta el programa y compruébalo.

Ejercic io guiado 2

Los J ScrollPane no solo están diseñados para contener imágenes. Pueden contenercualquier otro elemento. Vamos a ver, con otro proyecto de ejemplo, otro uso de los

 J ScrollPane.

1. Crea un nuevo proyecto.

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

HAUTIRO

Page 67: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 67/719

 

3. Ahora añade dentro del J ScrollPane un panel normal (J Panel). En la ventana nonotarás ninguna diferencia, pero en el Inspector debería aparecer esto:

4. Como ves, el J ScrollPane contiene a un objeto J Panel.

5. Aprovechemos para cambiar el nombre a ambos objetos. Al J ScrollPane lollamaremos scpDatos y al J Panel lo llamaremos panelDatos.

6. Los J Panel son objetos contenedores. Es decir, pueden contener otros objetos comopor ejemplo botones, etiquetas, cuadros de texto, etc.

Además, los J Panel pueden ser diseñados independientemente de la ventana. Hazdoble clic sobre el panelDatos en el Inspector y observa lo que ocurre:

7. En la pantalla aparecerá únicamente el J Panel, para que puede ser diseñado apartede la ventana completa:

HAUTIRO

Page 68: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 68/719

 

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

- 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:

HAUTIRO

Page 69: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 69/719

 

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 J Frame contiene un J ScrollPane(scpDatos) que a su vez contiene un J Panel (panelDatos) que a su vez contiene unaserie de etiquetas y cuadros de textos a los que aún no les hemos asignado unnombre:

HAUTIRO

Page 70: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 70/719

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

Como ves, el J Panel contenido en el J ScrollPane es más grande que él, por lo que nose podrá visualizar completamente. Será necesario usar las barras dedesplazamiento del J ScrollPane.

10. Ejecuta el programa para entender esto último.

CONCLUSIÓN

Los objetos JScrollPane son paneles de desplazamiento. Estos paneles puedencontener objetos mayores que el propio panel de desplazamiento. Cuando estosucede, el panel muestra barras de desplazamiento para poder visualizar todo elcontenido del panel.

Los JScrollPane son ideales para mostrar imágenes, paneles y otros elementos cuyotamaño pueda ser mayor que la propia ventana.

HAUTIRO

Page 71: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 71/719

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 lenguajesestructurados 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 eventospueden ir cambiando su valor según se necesite.

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

Ejercic io guiado 1

1. Crea un nuevo proyecto llamadoProyectoParking. Dentro de él añade un paquetellamado paqueteParking. Y finalmente añade un J Frame llamado Parking. El aspectode tu proyecto será el siguiente:

2. Tu clase principal es la clase Parking.

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

Clase Principal

HAUTIRO

Page 72: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 72/719

4. Esta ventana contiene lo siguiente:

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

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

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

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

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

6. Para poder controlar el número de coches en el Parking, es necesario que nuestraclase principal Parking tenga una propiedad (variable global) a la que llamaremoscoches. Esta variable será entera (int).

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

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

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

publ i c cl ass

Seguida del nombre de tu clase principal “Parking”.

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

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

Aquí se declaran las variablesglobales, también llamadaspropiedades de la clase.

HAUTIRO

Page 73: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 73/719

 

10. Cuando el programa arranque, será necesario que la variable global coches tenga unvalor inicial. O dicho de otra forma, será necesario inicializar la variable. Parainicializar la variable iremos al constructor. Añade lo siguiente al código:

Inicializamos a cero ya que se supone que cuando arranca el programa no hayningún coche dentro del parking.

11. Ahora que ya tenemos declarada e inicializada la variable global coches, esta puedeser 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;et i Coches. setText ( “”+coches) ;

Como ves, se le añade a la variable coches uno más y luego se coloca su valoractual en la etiqueta.

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

Inicialización de la propiedadcoches.

Declaración de una variableglobal int llamada coches.

HAUTIRO

Page 74: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 74/719

 

13. Ahora programaremos el botón “Salió un coche” de la siguiente forma:

i f ( coches>0) {coches=coches- 1;et i Coches. setText ( “”+coches) ;

}

Como ves, se accede igualmente a la propiedad coches pero esta vez para restarleuna unidad. Luego se muestra el valor actual de coches en la etiquetacorrespondiente.

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)

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

Pulsas, y aparece aquí el valor dela propiedad coches.

HAUTIRO

Page 75: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 75/719

 

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

15. Finalmente se programará el botón Reiniciar . Este botón, al ser pulsado, debecolocar la propiedad coches a cero. Programa dentro de su actionPerformed losiguiente:

coches=0;et i Coches. set Text ( “0”) ;

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

16. 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 quepueden ser usadas desde cualquier evento del programa. Estas variables mantienensu 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.

Al pulsar aquí aumentas en uno lapropiedad coches.

Al pulsar aquí disminuyes en unola propiedad coches.

HAUTIRO

Page 76: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 76/719

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 estecaso se plantea la necesidad de “copiar y pegar” ese código en los distintos eventos aprogramar:

Esta es una mala forma de programación, ya que se necesitara modificar el código, seríanecesario realizar la modificación en cada copia del código. Es muy fácil que haya olvidos yaparezcan 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 aparezcasolo una vez, y sea llamado desde cada evento:

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

Ejercic io guiado 1

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

Evento 1

Evento 2

Evento 3

Código A

Código A

Código A

Evento 1

Evento 2

Evento 3

Código A

HAUTIRO

Page 77: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 77/719

 

2. 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 J Menu con el texto “Calcular” y que se puede llamar

menuCalcular  - El menuCalcular contendrá tres J MenuItem, 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 .

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

HAUTIRO

Page 78: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 78/719

 

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

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

6. 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:

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 etiquetade resultado

Pulsar enter en el segundo cuadro de texto

HAUTIRO

Page 79: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 79/719

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

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

9. Se va a programar un procedimiento que se encargue de recoger los valores de loscuadros de texto. Calculará la suma de dichos valores, y luego mostrará la suma enla 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 creartus propios procedimientos

HAUTIRO

Page 80: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 80/719

 

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

voi d Sumar( ) {

. . . .}

Si estudias las líneas del código, verás que lo que hace es recoger el contenido delos dos cuadros de texto en dos variables de cadena llamadas cad1 y cad2.

Luego convierte dichas cadenas en números que almacena en dos variables enterasllamadas a y b.

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

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

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

Sumar ( ) ;

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

Sumar ( ) ;

Este es el procedimientoque tienes que introducir enel programa.

HAUTIRO

Page 81: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 81/719

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

Sumar ( ) ;

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

Sumar ( ) ;

16. Antes de continuar, ejecute el programa, introduzca dos números, y compruebe comose 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 segundocuadro de texto.

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

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

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

actionPerformed btnSumar

actionPerformed menuSumar

actionPerformed txtNumero1

Procedimiento

Sumar()

actionPerformed txtNumero2

Pulsar Botón Restar

Activar Calcular – Restar en el menú

Calcular la resta y

mostrar el resultado.

HAUTIRO

Page 82: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 82/719

 

19. El código de este procedimiento es prácticamente idéntico al del procedimiento

Sumar, así que no se comentará.

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

Rest ar ( ) ;

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

Rest ar ( ) ;

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

Programa esteprocedimiento.

actionPerformed btnRestar

actionPerformed menuRestarProcedimiento

Restar()

HAUTIRO

Page 83: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 83/719

 

23. 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 siguientemétodo (puedes hacerlo debajo del método “Restar”):

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

Bor r ar ( ) ;

25. Ejecuta el programa y prueba su funcionamiento.

CONCLUSIÓN

En java se pueden programar procedimientos al igual que en C. Normalmente, estosprocedimientos se programarán debajo del const ructor, y tienen la misma estructuraque en C.

Se puede llamar a un mismo procedimiento desde distintos eventos, evitando así larepetición de código.

Programa elprocedimiento Borrar...

HAUTIRO

Page 84: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 84/719

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 delas ventanas y la situación de los distintos componentes en ellas.

Para diseñar más cómodamente las ventanas, J ava proporciona una serie de objetosdenominados Layouts, que definen la forma que tendrán los elementos de situarse en lasventanas.

Así pues, un Layout define de qué forma se colocarán las etiquetas, botones, cuadros detextos y demás componentes en la ventana que diseñamos.

Ejercicio guiado

“ Diseño Libre”

1. Crea un nuevo proyecto en java.

2. 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:

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

Dicho de otra forma, las líneas azules indican las distancias que siempre serespetarán. Observa la siguiente imagen:

HAUTIRO

Page 85: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 85/719

 

4. Ejecuta el programa y prueba a ensanchar (o achicar) la ventana por el lado derechoy por el lado inferior. Debes observar como la etiqueta y el botón mantienen susdistancias relativas entre sí y con los bordes derecho e inferior de la ventana.

5. 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 unadistribución relativa da igual el tamaño que tenga la ventana. Dicho de otra forma, loselementos 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 quese añaden a la ventana.

Se puede observar como a veces los elementos no se colocan en la posición quedeseamos o como cambian de tamaño de forma inesperada. Todo esto es debido ala necesidad de dichos elementos de mantener unas distancias relativas con otroselementos de la ventana. Cuantos más elementos tengamos en una ventana, másdifícil será el colocarlos usando el Diseño Libre.

 Tanto el botón como laetiqueta estarán siemprea esta distancia del bordederecho de la ventana…

El botón siempre estará aesta distancia de laetiqueta…

El botón siempre estará aesta distancia del bordeinferior de la ventana…

Siempre se mantienen lasdistancias relativasdefinidas en el diseñoaunque el tamaño de laventana cambie.

HAUTIRO

Page 86: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 86/719

“ AboluteLayout. Posiciones Absolutas”

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

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

8. El Inspector tendrá la siguiente forma ahora:

Como ves, aparece un objeto dentro del J Frame llamado AbsoluteLayout. Este objetodefine otra forma de situar los elementos en la ventana. Concretamente, ladistribución AbsoluteLayout permite al programador colocar cada elemento donde élquiera, sin restricciones, sin tener en cuenta distancias relativas.

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

HAUTIRO

Page 87: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 87/719

 

10. La ventana de definir una distribución AbsoluteLayout es la facilidad para colocarcada elemento en la ventana (no tendrás los problemas del Diseño Libre). Sinembargo, la desventaja es que los elementos no mantienen una distribución relativarespecto al tamaño de la ventana.

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

Verás que los elementos de la ventana son inamovibles aunque la ventana cambie detamaño. En cambio, en el Diseño Libre los elementos intentaban siempre estar dentrode la ventana.

“ Distribuc ión en línea. FlowLayout”

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

HAUTIRO

Page 88: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 88/719

 

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

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

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

HAUTIRO

Page 89: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 89/719

 

16. El FlowLayout no permite controlar la posición de los elementos en la ventana, perosí procura que los elementos estén siempre visibles aunque la ventana se cambie detamaño. Ejecuta el programa y observa el comportamiento del FlowLayout alagrandar o achicar la ventana:

“Distribución en rejilla. GridLayout”

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

18. Cambia el layout del J Frame por un GridLayout:

En el FlowLayout, los elementosintentan siempre estar dentro dela ventana, aunque esta secambie de tamaño…

HAUTIRO

Page 90: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 90/719

 19. Marca el GridLayout y cambia sus propiedades Filas y Columnas. Asigna a la

propiedad Filas un 2 y a la propiedad Columnas un 3.

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

Los distintos elementos se adaptarán al espacio que tienen asignado, y cambiarán detamaño.

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

22. 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 ladisposición de los elementos.

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

HAUTIRO

Page 91: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 91/719

 

“BorderLayout”

24. Otra de las distribuciones posibles es la llamada BorderLayout. Esta distribucióncoloca los elementos de la ventana en cinco zonas:

- Zona norte (parte superior de la ventana)- Zona sur (parte inferior de la ventana)- Zona este (parte derecha de la ventana)- Zona oeste (parte izquierda de la ventana)- Zona centro.

25. Haz clic con el derecho sobre el J Frame y asigna una distribución “BorderLayout”.

Con un GridLayout loselementos aparecen enfilas y columnas.

Siempre aparecen dentrode la ventana aunque eltamaño de esta cambie.

HAUTIRO

Page 92: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 92/719

 26. Para poder entender el funcionamiento del BorderLayout, se recomienda que el

 J Frame contenga únicamente 5 botones (elimine los elementos que tiene ahora yañada cinco botones)

La ventana tendrá un aspecto parecido al siguiente:

27. Como se puede observar, cada botón se ha colocado en una zona, y su tamaño havariado hasta ocupar la zona entera. Tenemos un botón en el norte, otro al sur, unoal este, otro al oeste y uno en el centro.

El programador no tiene mucho control sobre la disposición de los elementos en laventana al usar esta distribución.

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

Con un GridLayout loselementos aparecenzonas.

Siempre aparecen dentrode la ventana aunque eltamaño de esta cambie.

HAUTIRO

Page 93: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 93/719

 

CONCLUSIÓN

El diseño de la ventana viene definido por los Layouts o dist ribuc iones.

Diseño Libre – Esta distr ibución viene activada por defecto en el NetBeans, y defineuna distr ibución de componentes en la que se respetan las distancias entre elloscuando la ventana cambia de tamaño.

 AbsoluteLayout – En esta dis tr ibuc ión el programador puede colocar cada elementoen la posición que desee de la ventana. Los distintos elementos mantienen suposic ión aunque la ventana cambie de tamaño, lo que puede hacer que si la ventanase reduce de tamaño algunos elementos no se vean.

FlowLayout – En esta distribución los elementos se colocan uno detrás de otro. Loselementos 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. Loselementos 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 elementossiempre estarán dentro de la ventana aunque esta se reduzca de tamaño.

HAUTIRO

Page 94: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 94/719

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 loselementos en la ventana, pero sin embargo los componentes no se adaptan a los cambiosde 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, eshabitual en java crear una estructura de paneles cada uno de ellos con un layout distinto,según nuestras necesidades.

Normalmente, al J Frame se le asigna un layout que lo divida en zonas, como puede ser elBorderLayout o el GridLayout. Luego, dentro de cada una de estas zonas se introduce unpanel (objeto J Panel). Y a cada uno de estos paneles se le asigna el layout que más leconvenga 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)

JPanel 1(Diseño Libre, AbsoluteLayout o

FlowLayout)

JPanel 2(Diseño Libre, AbsoluteLayout o

FlowLayout)

Componentes  Componentes 

etc…

HAUTIRO

Page 95: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 95/719

 Ejercicio guiado

1. Crea un nuevo proyecto en java.

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

2. En primer lugar, asigna un BorderLayout al J Frame:

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

4. Cambia el nombre a este panel y llámalo panelTitulo, ya que contendrá el nombre delprograma.

Panel en la zona norte.

HAUTIRO

Page 96: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 96/719

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

6. 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 cuandotenemos un BorderLayout. Puedes entonces hacer clic con el derecho sobre J Frame enel Inspector y activar la opción Agregar desde paleta – Swing – JPanel.

HAUTIRO

Page 97: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 97/719

 

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

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

HAUTIRO

Page 98: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 98/719

 

8. El Inspector tendrá la siguiente forma ahora:

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

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

HAUTIRO

Page 99: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 99/719

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

12. A cada panel se le puede asignar un Layout distinto. A este panel le asignaremos unAbsoluteLayout para poder colocar cada elemento donde quiera. Asigna unAbsoluteLayout al panel haciendo clic con el derecho sobre él en el Inspector . ElInspector debería quedar así:

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

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

HAUTIRO

Page 100: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 100/719

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

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

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

 Y el Inspector debe tener un estado similar a este:

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

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

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

HAUTIRO

Page 101: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 101/719

 

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

Observa las líneas “guía”. Indican que las etiquetas dependen de la parte derecha delpanel. A su vez cada una depende de la otra. Es como si estuvieran “enganchadas”,como los vagones de un tren.

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

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

23. A cada una de las divisiones del GridLayout del panelDatos le asignaremos un nuevopanel. Añade al panelDatos cuatro paneles. Esto lo puedes hacer fácilmentehaciendo clic con el botón derecho del ratón sobre el panelDatos en el Inspector yeligiendo 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 alpanelDatos:

HAUTIRO

Page 102: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 102/719

 

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

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

panelDatos

PanelEtiqueta1 PanelCuadro1

PanelEtiqueta2 PanelCuadro2

25. Ahora añada al panelEtiqueta1 y al panelEtiqueta2 sendas etiquetas. Y alpanelCuadro1 y panelCuadro2 sendos cuadros de textos. El panel panelDatos debequedar así:

HAUTIRO

Page 103: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 103/719

 26. 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 enzonas 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.

HAUTIRO

Page 104: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 104/719

EJERCICIO GUIADO. JAVA: DIÁLOGOS

Cuadros de Diálogo

Un cuadro de diálogo es un cuadro con opciones que aparece normalmente cuando seactiva una opción del menú principal del programa.

Los cuadros de diálogo tienen forma de ventana aunque no poseen algunas característicasde estas. Por ejemplo, no pueden ser minimizados ni maximizados.

Los cuadros de diálogo, aparte de las opciones que muestran, suelen contener dos botonestípicos: el botón Aceptar y el botón Cancelar. El primero de ellos da por válidas las opcioneselegidas y cierra el cuadro de diálogo. El segundo simplemente cierra el cuadro de diálogosin hacer ninguna modificación.

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

Para crear cuadros de diálogo en J ava, se usa un tipo de objetos llamado J Dialog. Estosobjetos pueden ser diseñados como si fueran ventanas, aunque representan realmentecuadros de diálogo.

HAUTIRO

Page 105: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 105/719

 Ejercicio guiado

1. Crea un nuevo proyecto en java.

2. Diseña el J Frame 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.

3. 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 Descuentoa aplicar. Estos dos valores serán variables globales, ya que se usarán en distintoslugares del programa.

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

Variablesglobales

HAUTIRO

Page 106: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 106/719

 

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

6. Estamos ya preparados para programar el botón btnCalcular. Entra en suactionPerformed y allí se programará la realización del cálculo de la siguiente forma:

doubl e uni dades;doubl e pr eci o;doubl e t otal ; / / t ot al

doubl e cant i va; / / cant i dad i vadoubl e cant des; / / cant i dad descuent odoubl e total s i ni va; / / to tal s i n i va

/ / Recoj o l os datos de l os cuadr os de t ext os (convi r t i endol os a números)uni dades = Doubl e. parseDoubl e(t xtUni dades. getText ( ) ) ;pr eci o = Doubl e. par seDoubl e( t xtPr eci o. get Text( ) ) ;

/ / Cal cul o el t ot al si n i va, l a cant i dad de i va y l a cant i dad de descuent ot ot al si ni va=pr eci o*uni dades;cant i va=t ot al si ni va*i va/ 100;cant des=t ot al si ni va*descuent o/ 100;

/ / Ahor a cal cul o el preci o t ot al :t ot al = t ot al si ni va+cant i va- cant des;

/ / Col oco el t ot al en l a et i quet a:et i Tot al . set Text ( ""+total ) ;

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

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

Inicialización devariablesglobales

HAUTIRO

Page 107: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 107/719

 

9. Para añadir un cuadro de diálogo al proyecto, se tiene que añadir un objeto del tipo J Dialog sobre el J Frame.

10. Los J Dialog son objetos ocultos, es decir, objetos que se colocan en la parte delInspector llamada Otros Componentes, al igual que sucede con los menúscontextuales o los J FileChooser. Observa tu inspector, allí verás el J Dialog que hasañadido:

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

12. Los diálogos normalmente traen por defecto el layout BorderLayout. Para nuestroejemplo cambiaremos el layout del J Dialog por el Diseño Libre:

13. Los J Dialog se pueden diseñar independientemente, al igual que los J Panel. Solotienes que hacer doble clic sobre el dialogoConfiguracion (en el inspector ) y esteaparecerá en el centro de la ventana.

HAUTIRO

Page 108: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 108/719

14. Así pues debes diseñar el dialogoConfiguracion para que quede de la siguienteforma:

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:

HAUTIRO

Page 109: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 109/719

 15. 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:

16. Para conseguir esto, debes programar el actionPerformed del botónbtnConfiguracion de la siguiente forma:

di al ogoConf i gur aci on. set Si ze( 250, 200) ;di al ogoConf i gur aci on. set Locat i on( 100, 100) ;di al ogoConf i gur aci on. set Vi si bl e( t r ue) ;

17. El código anterior hace lo siguiente:

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

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

- A través del método setVisible hacemos que el cuadro de diálogo semuestre.

18. 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ñoprogramado:

Haces clic sobre Configuracióny aparece el diálogo

HAUTIRO

Page 110: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 110/719

 

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

20. 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ónCancelar del diálogo:

di al ogoConf i gur aci on. di spose( ) ;

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

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

22. 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, setraspasarán los valores introducidos en los cuadros de texto txtIva y txtDescuento alas variables globales iva y descuento.

Una vez que se haya hecho esto, el cuadro de diálogo se debe cerrar.

23. Este es el código que hace lo anterior. Debe programarlo en el actionPerformed delbotón Aceptar:

i va = Doubl e. par seDoubl e( t xtI va. get Text( ) ) ;descuento=Doubl e. par seDoubl e( t xt Descuent o. get Text ( ) ) ;di al ogoConf i gur aci on. di spose( ) ;

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

HAUTIRO

Page 111: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 111/719

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

26. 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. Enella escriba “Configuración de iva y descuento”.

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

28. Ahora se estudiará el concepto de cuadro de diálogo modal y cuadro de diálogo nomodal.

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

modales.

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

HAUTIRO

Page 112: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 112/719

 

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

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 cuadrode diálogo siga delante de ella. Para conseguir esto, es necesario activar lapropiedad del cuadro de diálogo llamada alwaysOnTop. Activa estapropiedad:

Pulsa sobre laventana.

La ventana se activacolocándose por encimadel cuadro de diálogo.

HAUTIRO

Page 113: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 113/719

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

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

30. 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 ventanahasta que este no se haya cerrado.

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

32. 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 comono es posible activarla. Es más, intenta escribir en sus cuadros de texto. Noserá 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 esmodal.

Se puede activar laventana trasera, eincluso escribir en ella.Esto es gracias a que elcuadro de diálogo es nomodal.

Por otro lado, el cuadrode diálogo sigue

mostrándose delante dela ventana. Esto esgracias a la propiedadalwaysOnTop 

HAUTIRO

Page 114: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 114/719

 

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

CONCLUSIÓN

Los Cuadros de Diálogo son ventanas simplif icadas que muestran distintas opcionesal usuario.

Los ob jetos JDialog son los que permiten la creación y uso de cuadros de diálogo enun proyecto java.

Para visualizar un JDialog será necesario llamar a su método setVisible. También soninteresantes 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 elcuadro de diálogo no se haya cerrado.

Los cuadros de diálogo no modales permiten trabajar con otra ventana a pesar de queel propio cuadro de diálogo no haya sido cerrado.

Aunque intentes activar laventana o escribir en ella, nopodrás, ya que el cuadro dediálogo es modal.

Incluso verás un parpadeo enel cuadro de diálogo cuandointentas activar la otraventana.

Se podría decir que un cuadrode diálogo modal es unacaparador, y que no te dejausar otro elemento hasta queno acabes con él.

Solo cuando cierres el cuadrode diálogo podrás seguir

trabajando con la ventana.

HAUTIRO

Page 115: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 115/719

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 formarelativamente 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 noshemos preocupado hasta el momento.

Por ejemplo, cada vez que añades un botón o una etiqueta, se generan automáticamente lasinstrucciones de código que permiten crear dicho botón o dicha etiqueta. También se generael 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:

Ejercic io guiado 1.

1. Crea un proyecto y añade en su ventana un botón (J Button), una etiqueta (J Label) yun cuadro de texto (J TextField).

2. El nombre del botón será “btnBoton”, el de la etiqueta “etiEtiqueta” y el del cuadro detexto “txtCuadroTexto”.

3. A continuación asigna un texto a cada elemento. La ventana final podría tener unaspecto como el que sigue:

4. Todas estas operaciones que has realizado tienen asociado unas instrucciones decódigo que se han generado automáticamente. Para estudiar estas instrucciones,activa el botón Origen en la parte superior de la pantalla:

HAUTIRO

Page 116: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 116/719

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 generadasautomáticamente) Observarás que tiene un + en la parte izquierda. Si haces clicsobre el signo +aparecerá el código generado automáticamente:

6. El código generado (señalado en azul) no puede ser modificado, sin embargo esinteresante estudiarlo para entenderlo. En él puedes encontrar como se crean loscomponentes, como se asigna el texto a éstos etc.

Haz clic en el +paraver el código generado.

Aquí se crea el botón,la etiqueta y el cuadrode texto…

Aquí se asigna el textoa cada elemento…

ETC…

HAUTIRO

Page 117: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 117/719

En esta explicación guiada, se diseñará el formulario entero directamente desde código, sinusar la ventana de diseño. De esta forma, se podrá entender mejor la generación de códigodel NetBeans y se tendrá más control sobre los componentes.

Ejercic io guiado 2

 A. CREACIÓN DEL PROYECTO

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.

Nombre del formulario.

En la parte superior del código verás uncomentario.

En este comentario aparece el nombre del ficheroque contiene el código, que como puedes observartiene el mismo que el del J Frame.

 También aparece la fecha de creación del fichero.

Observarás también una instrucción que indica queeste fichero (ventanaprincipal.java) pertenece alpaquete ventanas.

 También verás otro comentario donde aparece elnombre del autor. Este comentario se puedecambiar para que aparezca tu nombre.

HAUTIRO

Page 118: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 118/719

 

4. Un proyecto en java está formado por módulos denominados CLASES. El proyectoque acabamos de crear tiene un solo módulo: el J Frame que define la ventanaprincipal, llamado precisamente ventanaprincipal. Por tanto, se puede decir quenuestro proyecto tiene una clase llamada ventanaprincipal.

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

publ i c cl ass nombr edel acl ase {

…progr amaci ón de l a cl ase…}

6. Esto lo puedes observar claramente en el código de tu proyecto:

El proyecto operaciones tiene una clase llamadaventanaprincipal, que pertenece al paqueteventanas.

HAUTIRO

Page 119: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 119/719

 

7. Dentro de la clase, tenemos una serie de funciones y procedimientos llamadosMÉTODOS. Es en los métodos donde se programan los eventos que pueden sucedersobre el formulario.

8. Hay un método especial muy importante denominado CONSTRUCTOR. Dentro deeste método se programa el diseño de la ventana y las características iniciales de laventana.

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 llamadoinitComponents. El método initComponents define características iniciales de laventana, y es código generado automáticamente. Si quieres verlo, solo tienes quedesplegar la parte de Código Generado:

Programaciónde la claseventanaprincipal

HAUTIRO

Page 120: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 120/719

 

El contenido del método initComponents no resulta interesante para el ejercicio queestamos realizando, así que puedes ocultar de nuevo el Código Generado, haciendoclic en el símbolo menos -

9. Otro método importante que hay que mencionar es el método main. Este método esel que se ejecuta cuando arranca el programa. Se puede decir que el programa partede aquí.

La tarea que desempeña este método es la de generar la ventana principal ymostrarla en pantalla.

El método main, es similar a la función main del lenguaje C. En el caso del java, elNetBeans genera automáticamente el método main, de forma que no tendremos quehacer 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, soloa partir de código). Al final de esta explicación, la ventana del proyecto tendrá el siguienteaspecto:

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 serdebajo del constructor:

El método initComponents al que hace referencia el constructor es unmétodo generado automáticamente, y no puede ser modificado.

Puedes verlo dentro de la sección de Código Generado.

Este método define algunas características iniciales de la ventana.

Clic aquí 

paraocultar elcódigogenerado

HAUTIRO

Page 121: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 121/719

 

11. Lo primero que se va a hacer es definir características propias de la ventana, comopor 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:

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.

El método donde

diseñaremos nuestraventana…

HAUTIRO

Page 122: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 122/719

 

12. Para que esto tenga efecto, es necesario que el método CrearVentana sea llamadodesde 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, elconstructor llama al método CreacionVentana y se definen las característicasprogramadas.

Con setTitle cambiasla barra de título…

Con setLocation decides la posición dela ventana…

Con setSize defines elancho y alto de laventana…

HAUTIRO

Page 123: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 123/719

 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 luegodefiniremos algunas características propias para finalmente situarla en la ventana.

Al comienzo de la clase, después del public class, donde se suelen definir lasvariables globales, añade el siguiente código:

Este código declara una variable de tipo J Label (etiqueta) y le da el nombre etiNum1.

15. Al escribir este código, aparecerá un error en la línea, ya que será necesario importarla librería donde se encuentra el tipo de objeto JLabel. Podrás usar la bombilla delNetBeans 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:

18. La explicación del código es la siguiente:

- La primera línea construye la etiqueta llamadaetiNum1 que fue delarada antes.

et i Num1 = new J Label ( ) ;

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

Importación de la librería para elobjeto J Label, que define lasetiquetas.

(Agregada automáticamente al pulsarla bombilla del NetBeans)

HAUTIRO

Page 124: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 124/719

 o En la zona de las variables globales se declarará la variable del objeto de

la siguiente forma:

t i poobj et o xxx;

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

xxx = new t i poobj eto( ) ;

- En el ejemplo, la etiqueta creada, cuyo nombre es etiNum1, tiene que contener eltexto “Número 1:”. Esto lo hacemos con el típico método setText:

et i Num1. set Text ( “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 elalto. En el ejemplo, la etiqueta está situada en la posición (10,10) de la ventana ytiene un ancho de 100 y un alto de 20:

et i Num1. set Bounds( 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 paraobtener este panel se usa el método getContentPane:

t hi s. get Cont ent Pane( ) . add( et i Num1) ;

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, primerotienes que declarar la etiqueta en la zona de las variables globales:

21. Luego, en el método ConstruirVentana, añadiremos el siguiente código:

HAUTIRO

Page 125: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 125/719

 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 unancho de 100 y un alto de 20. Finalmente se añade la etiqueta al panel de contenidosde la ventana.

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

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 variablesglobales:

 Tendrás que agregar el import correspondiente para el tipo de objeto J TextField.

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 J TextField

son objetos del tipo cuadro de texto.

HAUTIRO

Page 126: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 126/719

- Esta línea se subrayará en rojo ya que será necesario añadir el import para lalibrería de los J TextField.

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

- Y finalmente, la última línea añade el cuadro de texto al panel de contenidos de laventana.

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 delobjeto y la posición donde se colocará:

30. Ejecuta el programa y comprueba como va el diseño de la ventana:

HAUTIRO

Page 127: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 127/719

 31. Ahora le toca el turno a los botones. Primero declararemos una variable del tipo

 J Button en la zona de variables globales (será necesario añadir el import correspondiente a la clase J Button 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 siguientecódigo en el método ConstruirVentana:

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.

HAUTIRO

Page 128: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 128/719

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

35. Ahora se añadirá otro botón llamado btnRestar. Declara la variable J Button:

36. Tienes que escribir el siguiente código:

37. El código es prácticamente igual que el del primer botón. Solo cambia el nombre delbotón, el texto y la posición y tamaño del botón.

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

HAUTIRO

Page 129: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 129/719

 

CONCLUSIÓN

La ventana de diseño de NetBeans es una herramienta que nos permite diseñar lasventanas sin tener que programar código.

Es posible prescindir de la ventana de diseño y realizar todo el diseño de la ventanaprogramando.

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 adistintas 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 dist intos métodos del objeto para trabajar con él.

HAUTIRO

Page 130: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 130/719

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 laventana y acceder a los eventos que necesitemos fácilmente para programar en ellos lasacciones 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 alcomponente 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 elevento.

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

Programación de eventos

La programación de eventos es compleja, ya que cada evento pertenece a unoyente/adaptador, y a su vez, hay que asociar cada oyente/adaptador al componente queresponde al evento.

Por otro lado, la sintaxis de programación para los eventos es distinta a lo que se ha vistohasta ahora, por lo que puede resultar bastante oscura, aunque por otro lado, siempre sigueel mismo patrón.

Para simplificar el estudio de la programación de eventos, nos limitaremos a los eventos másusados, 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ó.

HAUTIRO

Page 131: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 131/719

o keyReleased Se soltó una tecla.

o keyTyped Se pulsó y soltó una tecla.

- Eventos de Ratón: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.

HAUTIRO

Page 132: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 132/719

 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 detexto, 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. addAct i onLi st ener ( new Act i onLi st ener ( ) {publ i c voi d act i onPer f or med( Act i onEvent evt ) {

xxxAct i onPer f or med( evt ) ;}

}) ;

Para entender la sintaxis de la programación de un evento de acción, supongamos elsiguiente ejemplo:

Se quiere programar el evento de un botón llamado btnSumar desde código. He aquí elcódigo para crear el evento:

bt nSumar . addAct i onLi st ener ( new Act i onLi st ener ( ) {publ i c voi d act i onPer f or med( Act i onEvent evt ) {

btnSumarAct i onPer f ormed( evt ) ;}

}) ;

Una explicación del código:

bt nSumar . addAct i onLi st ener ( new Act i onLi st ener ( ) {publ i c voi d act i onPer f or med( Act i onEvent evt ) {

btnSumarAct i onPer f ormed( evt ) ;}

}) ;

El método addActionListener  permite asignar el oyente albotón.

El evento actionPerformed pertenece a un objeto oyentellamado ActionListener .

El evento actionPerformed, es enrealidad un procedimiento, que tienecomo parámetro un objeto del tipo

 ActionEvent al que llamaremos evt porconvención.

Dentro del procedimiento actionPerformed sehace una llamada a otro procedimiento. Elnombre de este otro procedimiento puede sercualquiera, pero usaremos el nombre delcom onente se uido de “ActionPerformed”

El componente cuyo eventose quiere programar. Eneste ejemplo, el botónbtnSumar

HAUTIRO

Page 133: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 133/719

 El código anterior permite crear y asignar el evento actionPerformed al botón btnSumar , perono programa el evento. Para programar el evento es necesario crear el procedimiento cuyallamada se incluye dentro del evento actionPerformed:

publ i c voi d bt nSumarAct i onPer f ormed( Act i onEvent evt ) {

… aquí se pr ogr ama el evento act i onPerf ormed del bot ón btnSumar …}

A pesar de lo complicado que resulta, hay que tener en cuenta que siempre se programa dela misma forma. Solo hay que cambiar el componente que se quiere programar y asignar unnombre a la función donde se programará el evento.

Hay que tener en cuenta que en el código expuesto antes participan nuevas clases comoson ActionEvent y ActionListener, y se tendrán que agregar los import correspondientes.

EJERCICIO GUIADO

1. Abra el proyecto Operaciones que se hizo en el ejercicio guiado de la hoja anterior.

2. En el ejercicio guiado anterior se diseñó desde código la ventana de dicho proyecto.Esta ventana tiene el siguiente aspecto (Se indica también el nombre de los distintoscomponentes):

3. El objetivo del ejercicio es programar la pulsación del botón btnSumar para queaparezca un J OptionPane con la suma calculada. Luego haremos lo mismo con elbotón btnRestar. Todo esto se hará desde código.

txtNum1 y txtNum2son los cuadros detexto.

btnSumar es elbotón Sumar btnRestar es elbotón Restar

HAUTIRO

Page 134: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 134/719

4. Para recordar, he aquí el código programado hasta ahora. Tenemos una llamadadesde el constructor a un método CreacionVentana donde diseñamos cada uno delos elementos de la ventana:

/ ** Cr eat es new f or m vent anapr i nci pal */publ i c vent anapr i nci pal ( ) {

i ni t Component s( ) ;Cr eaci onVent ana( ) ;}

publ i c voi d Cr eaci onVent ana() {

t hi s. set Ti t l e( "Pr ogr ama Oper aci ones") ;t hi s. set Si ze( 500, 300) ;t hi s. set Locat i on( 100, 100) ;

et i Num1 = new J Label ( ) ;et i Num1. set Text ( "Número 1: " ) ;et i Num1. set Bounds( 10, 10, 100, 20) ;t hi s. getCont ent Pane() . add( eti Num1) ;

et i Num2 = new J Label ( ) ;et i Num2. set Text ( "Número 2: " ) ;et i Num2. set Bounds( 10, 60, 100, 20) ;t hi s. getCont ent Pane() . add( eti Num2) ;

t xt Num1 = new J Text Fi el d( ) ;t xt Num1. setText ( "0" ) ;t xt Num1. set Bounds( 110, 10, 100, 20) ;t hi s. getCont ent Pane() . add( t xt Num1) ;

t xt Num2 = new J Text Fi el d( ) ;t xt Num2. setText ( "0" ) ;t xt Num2. set Bounds( 110, 60, 100, 20) ;t hi s. getCont ent Pane() . add( t xt Num2) ;

bt nSumar = new J But t on( ) ;btnSumar. set Text ( "Sumar" ) ;btnSumar . set Bounds( 10, 120, 100, 20) ;t hi s. getCont ent Pane() . add( bt nSumar) ;

btnRest ar = new J But t on( ) ;bt nRest ar . set Text( "Rest ar ") ;btnRest ar . set Bounds( 150, 120, 100, 20) ;t hi s. get Cont ent Pane( ) . add( bt nRest ar ) ;

}

5. Ahora asignaremos un evento actionPerformed al botón btnSumar . Esto lo haremosal final del método CreacionVentana, El código que debe añadir para el eventoactionPerformed del botón btnSumar es el siguiente:

bt nSumar. addAct i onLi st ener( new Act i onLi st ener( ) {publ i c voi d act i onPer f or med( Act i onEvent evt) {

btnSumarAct i onPer f ormed( evt ) ;}

}) ;

(Recuerda que el código es siempre igual, solo hay que indicar el nombre del botón yel nombre del procedimiento al que se llama)

En el constructor hacemos unallamada a nuestro métodoCreacionVentana

Programamos algunos detallesde la ventana principal… 

Creamos la etiqueta “Número 1”… 

Creamos la etiqueta “Número 2”… 

Creamos el primer cuadro de texto… 

Creamos el segundo… 

Creamos el botón Sumar… 

Creamos el botón Restar… 

HAUTIRO

Page 135: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 135/719

6. Será necesario añadir un import para el objeto oyente ActionListener y para la claseActionEvent.

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ódigodel actionPerformed. A este procedimiento le hemos dado de nombrebtnSumarActionPerformed.

Así pues, añade el siguiente procedimiento a la clase. (No te vayas a equivocar, elsiguiente código está fuera del método CreacionVentana)

8. Es precisamente en este nuevo procedimiento que hemos creado donde se programael evento actionPerformed del botón btnSumar . Lo que se pretende que haga elprograma es que aparezca un J OptionPane con la suma de los númerosintroducidos. Para ello, añade el siguiente código:

Este es el final delmétodoCreacionVentana…

Hay queprogramar elmétodo al quellama el evento… 

Este es el códigoque tienes queañadir 

HAUTIRO

Page 136: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 136/719

 

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 albotón. Esto lo hemos hecho dentro del método CreacionVentana. Este eventohace una llamada al procedimiento donde se programará la respuesta alevento.

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 eventoactionPerformed y asignárselo al botón. Esto se hace añadiendo el código decreación del evento al final del método CreacionVentana.

bt nRest ar . addAct i onLi st ener ( new Act i onLi st ener ( ) {publ i c voi d act i onPer f or med( Act i onEvent evt) {

bt nRestarAct i onPer f ormed( evt ) ;}

}) ;

(Observa que es idéntico al código de asignación del evento del botón btnSumar, solocambia 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 eventoactionPerformed. Es aquí donde se programa la respuesta al evento. En nuestroejemplo, queremos que al pulsar el botón Restar se resten los números introducidos.

Programa elcódigo de lo quetiene que hacer elevento. 

HAUTIRO

Page 137: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 137/719

publ i c voi d bt nRestar Act i onPer f ormed( Act i onEvent evt ) {doubl e a, b, r ;

a=Doubl e. par seDoubl e( t xt Num1. get Text ( ) ) ;b=Doubl e. par seDoubl e( t xt Num2. get Text ( ) ) ;r =a- b;

 J Opt i onPane. showMessageDi al og( nul l , "La r est a 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, primerohay que enlazar el oyente del evento con el componente, y luego programar elmétodo al que llama el evento. Observa el código que hemos programado:

Asignación de un actionPerformed al botón btnSumar.

(Se hace una llamada al métodobtnSumarActionPerformed)

Asignación de un actionPerformed al botón btnRestar.

(Se hace una llamada al métodobtnRestarActionPerformed)

Programación del métodobtnSumarActionPerformed

(respuesta a la pulsación delbotón btnSumar)

Programación del métodobtnRestarActionPerformed

(respuesta a la pulsación delbotón btnRestar)

HAUTIRO

Page 138: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 138/719

 

CONCLUSIÓN

Cada evento pertenece a un ob jeto oyente, y es el oyente el que se asigna alcomponente 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 siguientecó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ónhace una llamada a un procedimiento XXXActionPerformed, (donde XXX representa elnombre del componente que se programa) Es en este procedimiento donde realmentese programa el evento.

HAUTIRO

Page 139: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 139/719

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:

- mouseEnteredo Indica que el ratón entró en la superficie del elemento (etiqueta, botón, etc)

- mouseExitedo Indica que el ratón salió de la superficie del elemento (etiqueta, botón, etc)

- mousePressedo 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 eventoes 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 procedimientodonde realmente se programa la respuesta al evento.

 Todo esto resulta complicado al principio, pero verás que en realidad siempre es igual. Solohay que conocer el nombre de cada evento, el adaptador u oyente al que pertenece y el tipode parámetro que recibe cada evento.

HAUTIRO

Page 140: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 140/719

 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 delconstructor:

XXX. addMouseLi st ener ( new MouseAdapt er ( ) {

publ i c voi d mouseEnt ered( MouseEvent evt ) {XXXMouseEnter ed(evt ) ;

}

publ i c voi d mouseExi t ed( MouseEvent evt ) {XXXMouseExi t ed( evt ) ;

}publ i c voi d mousePressed(MouseEvent evt ) {

XXXMousePressed(evt ) ;}

publ i c voi d mouseRel eased(MouseEvent evt ) {XXXMouseRel eased(evt ) ;

}

publ i c voi d mouseCl i cked( MouseEvent evt ) {XXXMouseCl i cked(evt ) ;

}

}) ;

Veamos este mismo código comentado:

XXX. addMouseLi st ener ( new MouseAdapt er ( ) {

publ i c voi d mouseEnt ered( MouseEvent evt ) {XXXMouseEnter ed(evt ) ;

}

publ i c voi d mouseExi t ed( MouseEvent evt ) {XXXMouseExi t ed( evt ) ;

}publ i c voi d mousePressed(MouseEvent evt ) {

XXXMousePressed(evt ) ;}

publ i c voi d mouseRel eased(MouseEvent evt ) {XXXMouseRel eased(evt ) ;

}

publ i c voi d mouseCl i cked( MouseEvent evt ) {XXXMouseCl i cked(evt ) ;

}

}) ;

Los eventos de ratón

pertenecen al adaptadorllamado MouseAdapter  

Para asignar el adaptador al elementoXXX se usa el método addMouseListener  

Estos son los eventos deratón que pertenecen aladaptador MouseAdapter .

En realidad no hay queponerlos todos, solo hayque añadir los quenecesites.

Cada evento recibe como parámetro unobjeto del tipo MouseEvent al que porconvención se le suele llamar evt.

Este objeto suele contener información

sobre la pulsación del ratón (qué botón seha pulsado, cuantas veces, etc...)

Cada evento hace una llamada a unprocedimiento, cuyo nombre puede sercualquiera, aunque suele construirseuniendo el nombre del componente XXX

 junto con el nombre del evento.

Es luego en estos procedimientos dondese programa la respuesta a cada evento.

HAUTIRO

Page 141: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 141/719

 EJERCICIO GUIADO

1. Crea un nuevo proyecto.

2. Accede al código del proyecto.

3. Inserta una llamada dentro del constructor a un procedimiento CreacionVentana de lasiguiente forma:

4. La ventana va a contener dos etiquetas, que tendremos que declarar en la zona devariables globales:

5. Ahora vamos a diseñar la ventana. Introduce el siguiente código dentro delprocedimiento CreacionVentana:

La llamada...

 Y el procedimiento.

Detalles de la ventana

Se diseña la primeraetiqueta

Se diseña la segundaetiqueta

HAUTIRO

Page 142: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 142/719

 6. Ejecuta ya el programa para observar el resultado de nuestro diseño. El aspecto

debe ser el siguiente:

7. El objetivo del programa es simple. Queremos que al entrar el ratón dentro de lasuperficie 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. Ytambién al pulsar un botón del ratón sobre la etiqueta.

8. Para hacer esto, necesitamos crear un MouseAdapter que contenga los siguienteseventos: mouseEntered, mouseExited y mousePressed. Observa que no esnecesario que contenga el mouseReleased ni el mouseClicked.

Luego, el MouseAdapter se asignará a la etiqueta roja etiZona.

9. Primero programaremos el enlace del adaptadorMouseAdapter con la etiquetaetiZona. Programa al final del método CreacionVentana lo siguiente:

HAUTIRO

Page 143: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 143/719

 

10. 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 quenecesitamos: 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 yaque todavía no han sido programadas.

11. Ahora se programará cada procedimiento que es llamado desde cada evento.Recuerda que esto debe hacerse fuera del método CreaciónVentana. Aquí tienes loque debes programar:

12. Ahora ya puedes ejecutar el programa y comprobar lo que sucede cuando interactúascon el ratón sobre la etiqueta de color rojo.

Debesprogramareste código

(Llave del métodoCreacionVentana)

HAUTIRO

Page 144: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 144/719

13. Vamos a añadir una pequeña mejora que nos servirá para estudiar ese objetollamado evt del tipo MouseEvent que llevan todos los eventos de ratón comoparámetro.

Se dijo antes que este parámetro contiene información sobre la acción del ratón. Porejemplo, 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 hapulsado sobre la etiqueta.

Cambia el procedimiento etiZonaMousePressed y déjalo de la siguiente forma:

14. En el código anterior aprovechamos los métodos que tiene el objeto MouseEventpara averiguar que botón se ha pulsado. Usamos el método getButton que nos diceel botón pulsado. Aprovechamos las constantes de la clase MouseEvent para sabersi se pulsó el botón izquierdo, central o derecho.

15. 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 siguientecódigo:

XXX.addMouseListener(new MouseAdapter() {

public void mouseEntered(MouseEvent evt) {XXXMouseEvent(evt);}

... 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 quecontiene información sobre el evento: qué botón del ratón se pulsó, cuantas veces,etc.

HAUTIRO

Page 145: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 145/719

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ódigonecesario para programarlos.

A la hora de programar eventos sobre un componente concreto, será necesario tener encuenta lo siguiente:

- Primero hay que enlazar el componente con el oyente o adaptador correspondiente alevento.

- 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 procedimientodonde se programa la respuesta al evento.

La sintaxis general de programación de eventos es la siguiente:

Componente. MetodoParaAñadirOyente( new TipoOyente( ) {

publ i c voi d evento1( TipoEvento evt) {Ll amadaAProcedi mi ent o1( evt ) ;

}

publ i c voi d evento2(TipoEvento evt) {Ll amadaAProcedi mi ent o2( evt ) ;

}

. . . ot ros event os. . .}) ;

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.

HAUTIRO

Page 146: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 146/719

 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 llamadaetiTexto, solo tenemos que hacer lo siguiente:

et i Text o. addMouseLi st ener( new MouseAdapter( ) {

publ i c voi d mouseEnt ered( MouseEvent evt ) {et i TextoMouseEnt ered( evt ) ;

}

publ i c voi d mouseExi t ed( MouseEvent evt ) {et i TextoMouseExi t ed( evt ) ;

}

publ i c voi d mousePressed(MouseEvent evt ) {et i TextoMousePr essed( evt ) ;

}

publ i c voi d mouseRel eased(MouseEvent evt ) {

et i Text oMouseRel eased( evt ) ;}

publ i c voi d mouseCl i cked( MouseEvent evt ) {et i TextoMouseCl i cked( evt ) ;

}

}) ;

Ejemplo 2. Eventos del teclado

Los eventos de teclado controlan las pulsaciones de tecla. Entre ellos, podemos mencionar alos 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 .

Los eventos de teclado llevan como parámetro un objeto del tipo KeyEvent.

HAUTIRO

Page 147: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 147/719

Sabiendo lo anterior, si se quisieran programar los eventos de teclado de un cuadro de textollamado txtDato el código necesario sería el siguiente:

t xt Dato. addKeyLi st ener( new KeyAdapt er( ) {

publ i c voi d keyPr essed( KeyEvent evt ) {

t xtDat oKeyPr essed( evt ) ;}

publ i c voi d keyRel eased( KeyEvent evt ) {t xtDat oKeyRel eased( evt ) ;

}

publ i c voi d keyTyped( KeyEvent evt ) {t xtDatoKeyTyped(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 dichoadaptador/oyente, el nombre de los eventos, y el tipo de objeto que llevan como parámetro.

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 suadaptador/oyente, el método para asignar dicho adaptador/oyente al componente, y el tipode datos del parámetro?

Para este caso, se aconseja crear un proyecto de prueba desde la ventana de diseño yasignar el evento X que se quiere estudiar a un componente. Luego simplemente hay queanalizar el código generado por el NetBeans.

HAUTIRO

Page 148: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 148/719

 

--- 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 elevento.* 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 vo id nombreEvento1(TipoDatoParametro evt) {LlamadaAProcedimientoEvento1(evt);

}

public vo id nombreEvento2(TipoDatoParametro evt) {LlamadaAProcedimientoEvento2(evt);

}});

Se puede aprender mucho sobre los eventos asociándolos desde diseño y luegomirando en el código generado.

HAUTIRO

Page 149: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 149/719

EJERCICIO GUIADO. JAVA: VECTORES

Vectores en Java

El manejo de vectores en J ava es similar al manejo de vectores en C. Solo hay que tener encuenta que un vector en J ava se tiene primero que declarar , y luego se tiene que construir ,ya que los vectores son, al igual que todo en J ava, objetos.

Declaración de un vector 

Para declarar un vector se seguirá la siguiente sintaxis:

t i podatos nombr evect or [ ] ;

- t i podat os es el tipo de datos de los elementos del vector (int, double, String, etc.)- nombr evect or es el nombre que tu quieras darle a tu vector.

Por ejemplo, supongamos que queremos crear un vector de enteros llamado v. Ladeclaración será la siguiente:

i nt v[ ] ;

Como puedes ver, en la declaración de un vector no se indica la dimensión, de éste, esdecir, el número de elementos que tiene. Esto se hace en la construcción del vector.

Construcción de un vector 

Para construir un vector que ya haya sido declarado se sigue la siguiente sintaxis:

nombrevect or = new t i podat os[ di m] ;

- nombr evect or es el nombre del vector a construir.- t i podat os es el tipo de datos del vector.- di m es la dimensión del vector (el número de elementos)

Por ejemplo, si queremos que el vector v declarado antes tenga 10 elementos, tendremosque hacer lo siguiente:

v = i nt [ 10] ;

En el momento de la construcción del vector, podemos usar una variable entera paraasignar 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 lavariable num:

v = i nt [ num] ;

HAUTIRO

Page 150: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 150/719

 

 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 entrecorchetes el índice del elemento que quieres usar. Recuerda que los índices comienzan anumerarse en 0.

Ejemplo 1:

et i Resul t ado. set Text( “El r esul t ado es: “+v[3] ) ;

Aquí se coloca en una etiqueta el valor contenido en el elemento de la posición cuarta delvector v.

Ejemplo 2:

f or ( 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.

Longitud de un vector 

Una forma rápida de saber la longitud que tiene un vector es usar lo siguiente:

nombr evect or . l engt h

Por ejemplo, si el vector se llama v, su longitud (el número de elementos que tiene) sería:

v. l engt h

El siguiente código rellena el vector v con ceros, da igual el número de elementos que tenga:

f or ( i =0; i <v. l engt h; i ++) {v[i ] =0;

}

HAUTIRO

Page 151: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 151/719

 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 formageneral de hacerlo sería la siguiente:

t i podat os nombrevect or [ ] = {el ement o1, el ement o2, el ement o3, …, el ement o n};

Por ejemplo:

i nt v[] = {5, 2, 7, 6};

Este código crea un vector con cuatro números enteros: 5, 2, 7, 6.

Ejemplo 2:

St r i ng di as[] = {“Lunes”, “Mart es”, “Mi ércol es”, “J ueves”, “Vi ernes”, “Sábado”, “Domi ngo”};

Este código crea un vector que contiene 7 cadenas, correspondientes a los días de lasemana.

VECTORES DE COMPONENTES

En J ava, se pueden crear vectores de etiquetas, botones, cuadros de textos, etc.

Esto es tremendamente útil cuando se tienen que definir muchos componentes con unafunció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 enla misma ventana de diseño.

Los vectores de componentes se usan igual que se ha indicado antes. Observa el siguienteejemplo:

 J Label vet i [ ] ; / / aquí se cr ea un vect or de et i quet as l l amado vet i

vet i =new J Label [ 3] ; / / aquí se const r uye el vect or , asi gnando 3 et i quet as

/ / ahor a t r abaj amos con l as et i quet as del vect or/ / usando el t í pi co f or

f or ( i =0; i <vet i . l engt h; i ++) {vet i [ i ] = new J Label ( ) ; / / se const r uye cada et i quet avet i [ i ] . set Bounds( 10, 10+i *30, 100, 20) ; / / se asi gna posi ci ón y tamañovet i [ i ] . set Text ( “Et i quet a “+i ) ; / / se asi gna un t ext ot hi s. get Cont ent Pane( ) . add( vet i [ i ] ) ; / / se col oca en l a vent ana

Realiza el siguiente ejercicio guiado para entender el ejemplo:

HAUTIRO

Page 152: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 152/719

 Ejercicio guiado

1. Crea un nuevo proyecto en java.

2. Empecemos definiendo desde código las características de la ventana. Crearemos elmétodo CreacionVentana, y lo llamaremos desde el constructor del proyecto:

3. Vamos a situar en la ventana 10 cuadros de verificación (J CheckBox). Para ello,usaremos un vector de 10 JCheckBox. Este vector se declarará en la zona devariables globales (será necesario añadir el típico import):

4. 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 elconstructor). Construiremos el vector de forma que contenga 10 JCheckBox:

HAUTIRO

Page 153: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 153/719

 

5. Se acaba de construir un vector con 10 cuadros de verificación. Ahora, es necesarioconstruir cada uno de los cuadros del vector y asignarle ciertas propiedades. Esto sehace con un for que recorre los elementos del vector. (Añade el siguiente códigodentro de CreacionVentana):

6. Analiza este código que se acaba de añadir:

a. Observa como cada elemento del vector debe ser construido:

vcuadr os[ i ] = new J CheckBox( ) ;

b. El texto que tendrá cada elemento será: “Opci ón 0”, “Opci ón 1”, etc…

vcuadr os[ i ] . set Text( “Opci ón “+i ) ;

c. Los cuadros de verificación se colocan uno debajo de otro. Estudia la líneasiguiente y observa como varía la posición vertical de cada cuadro:

vcuadr os[i ] . setBounds( 10, 10+30*i , 100, 20) ;

HAUTIRO

Page 154: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 154/719

 7. Ejecuta el programa y observa el resultado:

HAUTIRO

Page 155: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 155/719

 8. 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 delos cuadros. Modifica el código anterior de forma que quede así:

9. En este código puedes observar como se usa un vector de String que se creaconteniendo 10 colores. Luego, ese vector se usa para asignar cada color al texto decada cuadro. Si ahora ejecutas el programa, verás que cada cuadro tiene su textocorrespondiente a un color.

HAUTIRO

Page 156: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 156/719

 

10. Ahora añade un botón con su evento actionPerformed. Añade en la zona de variablesglobales lo siguiente:

 J But t on bt nAcept ar ;

 Y luego, dentro de CreacionVentana, añade el siguiente código:

11. Ahora programaremos la respuesta al evento actionPerformed de forma que elprograma diga cuantos cuadros hay seleccionados. Para ello, se tendrá queprogramar el procedimiento btnAceptarActionPerformed, cuya llamada se encuentraen el código anterior (la línea que da error):

Así pues, fuera de CreacionVentana, programa el siguiente procedimiento:

12. En este código se puede observar como se usa un for para recorrer fácilmente elvector de cuadros y averiguar cuales de ellos está activado. Aumentamos uncontador y lo demás es sencillo.

Si este programa se hubiera hecho desde diseño, el código para contar el número decuadros activados sería mucho más engorroso. Piénsalo.

HAUTIRO

Page 157: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 157/719

13. Ejecuta el programa. Selecciona varios cuadros y pulsa el botón Aceptar. Observa elresultado:

CONCLUSIÓN

En Java, los vectores debe declararse y luego const ruirse. Es en la construcción delvector 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, facilitandoluego el trabajo con todos estos elementos en conjunto y facili tando las labores dediseño.

HAUTIRO

Page 158: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 158/719

EJERCICIO GUIADO. JAVA: VECTORES Y EVENTOS

 Asignac ión de eventos a los elementos de un vector de componentes

En J ava se pueden crear vectores de componentes, como ya se vio en la hoja guiadaanterior. Estos vectores pueden contener un grupo de etiquetas, o botones, cuadros detextos, etc.

Gracias a los vectores de componentes se pueden crear rápidamente por código estoscomponentes 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

1. Crea un nuevo proyecto en java.

2. Empecemos definiendo desde código las características de la ventana. Crearemos elmétodoCreacionVentana, y lo llamaremos desde el constructor del proyecto:

3. Vamos a situar en la ventana 5 botones, y para ello usaremos un vector de botones,

que tendremos que declarar en la zona de variables globales:

4. Dentro del procedimientoCreacionVentana construiremos el vector y construiremoscada uno de los botones que contiene, asignando las distintas características decada uno. Debes añadir el siguiente código a CreacionVentana:

HAUTIRO

Page 159: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 159/719

 

5. En el código anterior se crea un vector de cadenas (String) con el texto de cadabotó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 eltexto correspondiente, le asignamos su posición y su tamaño, y lo colocamos en el

panel de contenido de la ventana.

6. Ejecuta el programa para observar su aspecto hasta ahora:

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

HAUTIRO

Page 160: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 160/719

 

Este código asigna a cada botón un evento actionPerformed que hace una llamada aun procedimiento al que se le ha llamado botonesActionPerformed. (Esta llamada daerror porque aún no ha sido programado el procedimiento. Esto se hará acontinuación.)

Hay que tener en cuenta que cuando se pulse cualquiera de los botones, se ejecutaráel procedimiento botonesActionPerformed. Programa este procedimiento (fuera deCreacionVentana, por supuesto) de la siguiente forma:

8. Ejecuta el programa y observa el resultado. Cuando pulsas cualquiera de losbotones, se ejecuta la respuesta al evento y esta lo que hace es mostrar un mensajea través de un J OptionPane donde aparece el texto “Has pulsado uno de losbotones”.

El procedimiento botonesActionPerformed sirve como respuesta para todos losbotones. El problema que plantea esto es, ¿cómo saber qué botón se ha pulsado? Esaquí donde entra en funcionamiento el parámetro evt que suelen llevar todos loseventos.

9. Modifica el procedimiento botonesActionPerformedde forma que quede así:

Este código resulta muy interesante. El parámetro evt tiene siempre un métodollamado getSource que devuelve el componente de la ventana sobre el que hasucedido el evento. De esta manera obtenemos el botón que ha sido pulsado.(Observa que es necesario hacer un cast) Aprovechamos esto para introducir elbotó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ónpulsado con el método getText.

10. Ejecuta el programa y observa el resultado.

HAUTIRO

Page 161: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 161/719

 

CONCLUSIÓN

Se pueden asignar eventos a los elementos de un vector a través de un for que recorralos distintos elementos del vector y le asigne el evento o eventos necesarios.

Cuando se asigna un mismo procedimiento de respuesta a eventos a varioscomponentes, es necesario usar el parámetro evt junto con el método getSource paraaveriguar el componente sobre el que ha sucedido el evento.

La forma general de acceder al elemento sobre el que sucedió el evento es lasiguiente:

TipoComponente variable = (TipoComponente) evt.getSource();

La variable variable contendrá el componente activado.

HAUTIRO

Page 162: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 162/719

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. Estafilosofí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 seles 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 J ava todo son objetos. Veamos algunos ejemplos de uso de objetos en J ava:

Ejemplo 1

Supongamos que tenemos una etiqueta llamada etiTexto. Esta etiqueta es un objeto.

Como objeto que es, la etiqueta etiTexto tiene una serie de características, como por ejemplo: el colorde 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, sepuede cambiar el tamaño y posición de la etiqueta usando el método setBounds:

et i Text o. setBounds( 10, 20, 100, 20) ;

Normalmente, los métodos que permiten cambiar las características del objeto son métodos cuyonombre empieza por set.

Los métodos también permiten pedirle al objeto que me de información. Por ejemplo, podríamos usarel conocido método getText para recoger el texto que contenga la etiqueta y almacenarlo en unavariable:

St r i ng t ext o;t exto = et i Text o. get Text ( ) ;

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 ordenara la etiqueta etiTexto que se vuelva a pintar en la ventana usando el método repaint:

et i Text o. r epai nt ( ) ;

HAUTIRO

Page 163: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 163/719

 Ejemplo 2

Supongamos que tenemos un cuadro de texto llamado txtCuadro. Como todo en J ava, un cuadro detexto es un objeto.

Un objeto tiene propiedades, es decir, características. Nuestro cuadro de texto txtCuadro tienecaracterísticas propias: un color de fondo, un ancho, un alto, una posición en la ventana, el estaractivado o no, el estar visible o no, etc…

A un objeto se le puede dar órdenes, llamadas métodos. Estas órdenes nos permiten cambiar lascaracterí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étodollamado setBackground:

t xtCuadr o. setBackgr ound( Col or . RED) ;

Otros métodos que permiten cambiar las propiedades del objeto txtCuadro son:

setVisible - permite poner visible / invisible el cuadro de textosetEnabled - permite activar / desactivar el cuadro de textosetEditable - permite hacer que se pueda escribir o no en el cuadro de textosetText - permite introducir un texto en el cuadro de textosetBounds - permite cambiar el tamaño y posición del objetosetToolTipText - permite asociar un texto de ayuda al cuadro de textoetc…

Un objeto nos da información sobre él. Para pedirle información a un objeto usaremos métodos deltipo get. Por ejemplo, para pedirle al cuadro de texto el texto que contiene, usaremos el métodogetText:

St r i ng cadena = t xtCuadr o. get Text ( ) ;

Otros métodos que le piden información al cuadro de texto son:

getWidth - te dice la anchura que tiene el cuadro de textogetHeight - te dice el alto que tiene el cuadro de textogetSelectedText - te devuelve el texto que está seleccionado dentro del cuadro de textogetToolTipText - te dice el texto de ayuda que tiene asociado el cuadro de textoetc… 

 También se le puede dar al objeto simplemente órdenes para que haga algo. Por ejemplo, podemosordenar al cuadro de texto txtCuadro que seleccione todo el texto que contiene en su interior a travésdel método selectAll:

t xt Cuadr o. sel ectAl l ( ) ;

Otros métodos que ordenan al cuadro de texto son:

repaint - le ordena al cuadro de texto que se vuelva a pintarcopy - le ordena al cuadro de texto que copie el texto que tenga seleccionadocut - le ordena al cuadro de texto que corte el texto que tenga seleccionadopaste - le ordena al cuadro que pegue el texto que se hubiera copiado o cortadoetc… 

HAUTIRO

Page 164: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 164/719

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 momentocuando se le da un nombre al objeto. Para declarar un objeto se sigue la siguiente sintaxis:

Cl ase nombreobj eto;

Por ejemplo, para declarar la etiqueta del ejemplo 1, se usaría el siguiente código:

 J Label et i Text o;

Para declarar, en cambio, el cuadro de texto del ejemplo 2, se usaría el siguiente código:

 J Text Fi el d t xt Cuadr o;

Construir un Objeto

En el momento de la “construcción” de un objeto, se le asignan a este una serie de propiedadesiniciales. 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 delsiguiente código general:

nombreobj et o = new Cl ase( ) ;

Por ejemplo, para construir la etiqueta del ejemplo 1, se haría lo siguiente:

et i Texto = new J Label ( ) ;

Para construir el cuadro de texto del ejemplo 2, se haría lo siguiente:

t xtCuadr o = new J Text Fi el d( ) ;

NOTA. En algunos casos, la sintaxis de la declaración y la construcción se une en una sola línea. Porejemplo, supongamos que queremos declarar la etiqueta etiTexto y construirla todo en una línea,entonces se puede hacer lo siguiente:

 J Label et i Text o = new J Label ( ) ;

En general, para declarar y construir un objeto en una sola línea se sigue la siguiente sintaxis:

Cl ase nombreobj et o = new Cl ase( ) ;

HAUTIRO

Page 165: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 165/719

La Clase como generadora de objetos

Conociendo la Clase, se pueden crear tantos objetos de dicha Clase como se quiera. Es decir, laClase 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 seconstruyen) aunque luego el programador puede dar forma a cada objeto cambiando sus

propiedades.

Por ejemplo, la Clase J Label define etiquetas. Esto quiere decir que podemos crear muchas etiquetasusando esta clase:

 J Label et i Text o = new J Label ( ) ; J Label et i Resul t ado = new J Label ( ) ; J Label et i Dat o = new J Label ( ) ;

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 darforma a cada una:

et i Text o. setBackgr ound( Col or . RED) ;et i Text o. set Text ( “Hol a”) ;et i Resul t ado. setBackgr ound( Col or. GREEN) ;et i Resul t ado. set Text ( “Er r or ”) ;et i Dato. setBackgr ound( Col or. BLUE) ;et i Dat o. set Text ( “Cadena”) ;

En el ejemplo se le ha dado, usando el método setBackground, un color a cada etiqueta. Y se hacambiado 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 usadobotones. 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 llamadobtnAceptar , y otro llamado btnCancelar ?- ¿Cómo construiría dichos botones?- 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)

HAUTIRO

Page 166: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 166/719

 

CONCLUSIÓN

Un Objeto es un elemento que tiene una serie de características llamadasPROPIEDADES.

Por otro lado, al objeto se le pueden dar órdenes que cumpli rá 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 const ruirlos:

Declaración:

CLASE nombreobjeto;

Construcción:

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.

HAUTIRO

Page 167: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 167/719

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 J ava, han sido objetosincluidos en el propio lenguaje, que se encuentran disponibles para que el programador los use ensus 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 claseJButton, 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óndel 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óndel objeto, etc.

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 delobjeto, 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 quetienen disponible.

Por ejemplo, le podemos decir a un objeto que se pinte de nuevo usando el métodorepaint, podemos ordenarle a un cuadro de texto que coja el cursor, con el métodorequestFocus, 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 especializamosen un tipo de programa en concreto, puede ser necesaria la creación de objetos propios, programadospor nosotros mismos, de forma que puedan ser usados en nuestros futuros programas.

HAUTIRO

Page 168: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 168/719

 

Objetos prop ios

A la hora de diseñar un objeto de creación propia, tendremos que pensar qué propiedades debe tenerdicho objeto, y métodos serán necesarios para poder trabajar con él. Dicho de otra forma, debemospensar 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, yapodremos generar objetos de dicha clase, declarándolos y construyéndolos como si de cualquier otroobjeto se tratara.

A continuación se propondrá un caso práctico de creación de objetos propios, con el que trabajaremosen las próximas hojas.

Lo que viene a continuación es un planteamiento teórico de diseño de una Clase de Objetos.

HAUTIRO

Page 169: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 169/719

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. Parafacilitar el control de la información de cada sala programaremos una Clase de objeto a la quellamaremos SalaCine.

La Clase SalaCine 

La Clase SalaCine definirá características de una sala de cine, y permitirá crear objetos querepresenten salas de cine. Cuando la Clase SalaCine esté programada, se podrán hacer cosas comolas que sigue:

Los Multicines Avenida tienen una sala central donde se proyectan normalmente los estrenos. Sepodría crear un objeto llamado central de la clase SalaCine de la siguiente forma:

Sal aCi ne cent r al ;

Por supuesto, este objeto puede ser construido como cualquier otro:

cent r al = new Sal aCi ne( ) ;

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íacrear un objeto llamado salaVO de la clase SalaCine de la siguiente forma:

Sal aCi ne sal aVO; / / decl ar aci ón

sal aVO = new Sal aCi ne( ) ; / / const r ucci ó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 lassiguientes 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)

HAUTIRO

Page 170: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 170/719

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 J Label), 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 lassiguientes:

Aforo: 100Ocupadas: 0Película: “” (la cadena vacía) Entrada: 5,00

Observa este código, en él construimos el objeto correspondiente a la sala central del multicine:

Sal aCi ne cent r al ;

cent r al = new Sal aCi ne( ) ;

En este momento (en el que el objeto central está recién construido) este objeto tiene asignado unaforo 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 elprogramador decidirá según su conveniencia.

Métodos de los objetos SalaCine 

Para comunicarnos con los objetos de la Clase SalaCine que construyamos, tendremos que disponerde 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 queestá programando.

Para nuestro caso particular, supondremos que los objetos de la Clase SalaCine deberán tener lossiguientes métodos:

Métodos de cambio de propiedades (Métodos set)

setAforo - asignará un aforo a la sala de cinesetOcupadas - asignará una cantidad de butacas ocupadas a la sala de cinesetLibres - asignará una cantidad de butacas libres a la sala de cinesetPelicula - asignará un título de película a la sala de cinesetEntrada - fijará el precio de las entradas a la sala de cine

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

HAUTIRO

Page 171: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 171/719

Para crear el objeto, se usaría el siguiente código:

/ / Se const r uye el obj et oSal aCi ne sal aVO;sal aVO = new Sal aCi ne( ) ;

/ / Se l e asi gnan car acterí st i cassal aVO. set Af or o( 50) ; / / af or o 50sal aVO. set Pel i cul a( “Met r ópol i s”) ; / / l a pel í cul a que se pr oyectasal aVO. set Ent r ada( 3) ; / / ent r ada a 3 eur os

Al construir el objeto salaVO tiene por defecto los valores siguientes en sus propiedades:

Aforo: 100Ocupadas: 0Película: “”Entrada: 5,00

Gracias a los métodos disponibles hemos asignados estos nuevos valores:

Aforo: 50Ocupadas: 0Pelí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 objetogetLibres - devuelve el número de butacas que tiene libres el objetogetPorcentaje - devolverá el porcentaje de ocupación de la salagetIngresos - devolverá los ingresos producidos por la sala (entradas vendidas por precio)getPelicula - devolverá el título de la película que se está proyectandogetEntrada - 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 multicine),para obtener la película que se está proyectando en dicha sala solo habría que usar este código:

St r i ng pel i ; / / una var i abl e de cadenapel i = cent r al . get Pel i cul a( ) ;

O, por ejemplo, para saber los ingresos producidos por la sala central…

doubl e i ngr esos;i ngr esos = cent r al . get I ngr esos( ) ;

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 lacadena vacía.

HAUTIRO

Page 172: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 172/719

entraUno

- Este método le dice al objeto que ha entrado una nueva persona en la sala. (Esto debeproducir que el número de plazas ocupadas aumente en uno)

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)

setAforo - modifica la propiedad AforosetOcupadas - modifica la propiedad OcupadassetLibres - modifica la propiedad Ocupadas tambiénsetPelicula - modifica la propiedad PelículasetEntrada  - modifica la propiedad Entrada

Métodos de petición de información (get)

getAforo - devuelve el valor de la propiedad AforogetOcupadas - devuelve el valor de la propiedad OcupadasgetLibres - devuelve el número de butacas libresgetPorcentaje - devuelve el porcentaje de ocupación de la salagetIngresos - devuelve los ingresos obtenidos por la venta de entradas

getPelicula - devuelve el valor de la propiedad PelículagetEntrada - devuelve el valor de la propiedad Entrada

Métodos de orden

Vaciar   - vacía la ocupación de la sala y borra la películaentraUno   - le indica al objeto que ha entrado una persona más en la sala

HAUTIRO

Page 173: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 173/719

EJERCICIO PRÁCTICO

Supongamos que programamos una Clase de objetos llamada Rectangulo, la cual permitirá construirobjetos 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 tipoRectangulo?

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 superímetro, y teniendo en cuenta que los objetos Rectangulo tienen dos propiedades (Base yAltura), ¿qué cuatro métodos get serían interesantes de programar para los objetos del tipoRectangulo?

5. Teniendo en cuenta los métodos del punto 4. Supongamos que quiero almacenar en unavariable double llamada area el área del objeto suelo. ¿Qué código usaría? Y si quieroalmacenar el perímetro del objeto suelo en una variable llamada peri?

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 prop iedades (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 Clasede objetos.

HAUTIRO

Page 174: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 174/719

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 unproyecto J ava.

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 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 AforosetOcupadas - modifica la propiedad OcupadassetLibres - modifica la propiedad Ocupadas tambiénsetPelicula - modifica la propiedad PelículasetEntrada  - modifica la propiedad Entrada

Métodos de petición de información (get)

getAforo - devuelve el valor de la propiedad AforogetOcupadas - devuelve el valor de la propiedad OcupadasgetLibres - devuelve el número de butacas libresgetPorcentaje - devuelve el porcentaje de ocupación de la salagetIngresos - devuelve los ingresos obtenidos por la venta de entradasgetPelicula - devuelve el valor de la propiedad PelículagetEntrada - devuelve el valor de la propiedad Entrada

Métodos de orden

Vaciar   - vacía la ocupación de la sala y borra la películaentraUno   - le indica al objeto que ha entrado una persona más en la sala

HAUTIRO

Page 175: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 175/719

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:

Sal aCi ne. j ava

Cuando programemos esta clase dentro de NetBeans, veremos las facilidades que nos proporcionaeste para la creación de la clase. De momento, solo veremos de forma teórica como hay queprogramar 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:

publ i c cl ass Sal aCi ne {

}

La programación de una clase comienza siempre con una línea de código como la que sigue:

publ i c cl ass NombreDeLaCl ase {

}

 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. Laspropiedades de una clase son básicamente variables globales de ésta. Si introducimos laspropiedades de la clase SalaCine, esta nos quedaría así:

publ i c cl ass Sal aCi ne {

i nt Af or o;i nt Ocupadas;St r i ng Pel í cul a;doubl e Ent r ada;

}

Constructor de la Clase 

Cuando se planteó la clase SalaCine, se tuvo que decidir qué valores iniciales deberían tener laspropiedades de la clase. Para asignar estos valores iniciales, es necesario programar lo que sedenomina el Constructor .

HAUTIRO

Page 176: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 176/719

El Constructor de una clase es un método (un procedimiento para entendernos) un poco especial, yaque debe tener el mismo nombre de la clase y no devuelve nada, pero no lleva la palabra void. Dentrodel constructor se inicializan las propiedades de la clase.

En general, la programación del constructor sigue la siguiente sintaxis:

publ i c NombreDeLaCl ase( ) {propi edad1 = val or ;propi edad2 = val or ;etc…

}

La clase SalaCine, añadiendo el Constructor , tendrá el siguiente aspecto:

publ i c cl ass Sal aCi ne {

i nt Af or o;i nt Ocupadas;St r i ng Pel í cul a;

doubl e Ent r ada;

/ / Const r uct orpubl i c Sal aCi ne( ) {

Af or o = 100;Ocupadas = 0;Pel i cul a = “”;Ent r ada = 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 asignarvalores 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 yque 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 seasigna.

Veamos la programación del método setAforo, de la clase SalaCine:

publ i c voi d set Af or o( i nt af o) {

Af oro = af o;

}

Observa este método:

- Es void, es decir, no devuelve nada (el significado de la palabra public se verá más adelante)

Constructor

HAUTIRO

Page 177: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 177/719

- El método recibe como parámetro una variable del mismo tipo que la propiedad quequeremos modificar (en este caso int) y un nombre que se recomienda que no sea igual al dela propiedad (en nuestro caso, afo, de aforo)

- Puedes observar que lo que se hace simplemente en el método es asignar la variable pasadacomo parámetro a la propiedad.

La mayoría de los procedimientos set usados para introducir valores en las propiedades tienen lamisma forma. Aquí tienes la programación de los demás procedimientos set de la clase SalaCine.

/ / Método setOcupadas publ i c voi d set Ocupadas( i nt ocu) {

Ocupadas = ocu;}

/ / Método setPelicula publ i c voi d set Pel i cul a( St r i ng pel i ) {

Pel i cul a = pel i ;

}

/ / Método set Ent r adapubl i c voi d set Ent r ada( doubl e ent r a) {

Ent r ada = ent r a;}

Hay un método set de la clase SalaCine llamado setLibres cuya misión es asignar el número delocalidades libres del cine. Sin embargo la clase SalaCine no tiene una propiedad “Libres”. Enrealidad, este método debe modificar el número de localidades ocupadas. Observa su programación:

/ / Mét odo set Li br espubl i c voi d set Li bres( i nt l i b) {

i nt ocu;

ocu = Af or o – l i b;Ocupadas = ocu;

}

Al asignar un número de localidades ocupadas, estamos asignando indirectamente el número delocalidades libres. Como puedes observar en el método, lo que se hace es calcular el número delocalidades ocupadas a partir de las libres, y asignar este valor a la propiedad Ocupadas.

No se pensó en crear una propiedad de la clase llamada Libres ya que en todo momento se puedesaber 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:

HAUTIRO

Page 178: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 178/719

publ i c cl ass Sal aCi ne {

i nt Af or o;i nt Ocupadas;St r i ng Pel í cul a;doubl e Ent r ada;

/ / Const r uct orpubl i c Sal aCi ne( ) {

Af or o = 100;Ocupadas = 0;Pel i cul a = “”;Ent r ada = 5. 0;

}

/ / Métodos set

/ / Mét odo set Af or opubl i c voi d set Af or o( i nt af o) {

Af oro = af o;}

/ / Método setOcupadas publ i c voi d set Ocupadas( i nt ocu) {

Ocupadas = ocu;}

/ / Método setPelicula publ i c voi d set Pel i cul a( St r i ng pel i ) {

Pel i cul a = pel i ;}

/ / Método set Ent r adapubl i c voi d set Ent r ada( doubl e ent r a) {

Ent r ada = ent r a;}

/ / Mét odo set Li br espubl i c voi d set Li bres( i nt l i b) {

i nt ocu;

ocu = Af or o – l i b;Ocupadas = ocu;

}

}

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 tenersiempre la misma forma.

Estos métodos no suelen llevar parámetros y devuelven el valor de la propiedad correspondienteusando la típica instrucción return usada tanto en las funciones. Por tanto, un método get nunca esvoid. Siempre será del mismo tipo de datos que la propiedad que devuelve.

Veamos la programación del método getAforo:

Métodos Set

HAUTIRO

Page 179: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 179/719

/ / Método getAf or opubl i c i nt get Af or o( ) {

r et ur n Af or o;}

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ét odo get Ocupadaspubl i c i nt get Ocupadas( ) {

r eturn Ocupadas;}

/ / Mét odo get Pel i cul apubl i c St r i ng get Pel i cul a( ) {

r et ur n Pel í cul a;}

/ / Método getEnt r adapubl i c doubl e get Ent r ada( ) {

r et ur n Ent r ada;}

 Todos estos métodos son iguales. Solo tienes que fijarte en el tipo de datos de la propiedad quedevuelven.

Existen otros métodos get que devuelven cálculos realizados con las propiedades. Estos métodosrealizan algún cálculo y luego devuelven el resultado. Observa el siguiente método get:

/ / Mét odo get Li br es

publ i c i nt get Li br es() {i nt l i b;l i b = Af oro – Ocupadas;r et urn l i b;

}

No existe una propiedad Libres, por lo que este valor debe ser calculado a partir del Aforo y el númerode localidades Ocupadas. Para ello restamos y almacenamos el valor en una variable a la que hemosllamado lib. Luego devolvemos dicha variable.

Los dos métodos get que quedan por programar de la clase SalaCine son parecidos:

/ / Método getPor cent aj e

publ i c doubl e get Por cent aj e( ) {doubl e por;por = ( doubl e) Ocupadas / ( doubl e) Af oro * 100. 0;r et ur n por ;

}

Este método calcula el porcentaje de ocupación de la sala (es un valor double)

/ / Método get I ngr esospubl i c doubl e get I ngr esos( ) {

doubl e i ngr e;i ngr e = Ocupadas * Ent r ada;r et ur n i ngr e;

}

Los ingresos se calculan multiplicando el número de entradas por lo que vale una entrada.

HAUTIRO

Page 180: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 180/719

 La clase SalaCine una vez introducidos los métodos get quedaría de la siguiente forma:

publ i c cl ass Sal aCi ne {

i nt Af or o;

i nt Ocupadas;St r i ng Pel í cul a;doubl e Ent r ada;

/ / Const r uct orpubl i c Sal aCi ne( ) {

Af or o = 100;Ocupadas = 0;Pel i cul a = “”;Ent r ada = 5. 0;

}

/ / Métodos set

/ / Mét odo set Af or opubl i c voi d set Af or o( i nt af o) {

Af oro = af o;}

/ / Método setOcupadas publ i c voi d set Ocupadas( i nt ocu) {

Ocupadas = ocu;}

/ / Método setPelicula publ i c voi d set Pel i cul a( St r i ng pel i ) {

Pel i cul a = pel i ;}

/ / Método set Ent r adapubl i c voi d set Ent r ada( doubl e ent r a) {

Ent r ada = ent r a;}

/ / Mét odo set Li br espubl i c voi d set Li bres( i nt l i b) {

i nt ocu;

ocu = Af or o – l i b;Ocupadas = ocu;

}

/ / Métodos get

/ / Método getAf or opubl i c i nt get Af or o( ) {

r et ur n Af or o;}

/ / Mét odo get Ocupadaspubl i c i nt get Ocupadas( ) {

r eturn Ocupadas;

}

Métodos Get

HAUTIRO

Page 181: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 181/719

 

/ / Mét odo get Pel i cul apubl i c St r i ng get Pel i cul a( ) {

r et ur n Pel í cul a;}

/ / Método getEnt r adapubl i c doubl e get Ent r ada( ) {

r et ur n Ent r ada;}

/ / Mét odo get Li br espubl i c i nt get Li br es() {

i nt l i b;l i b = Af oro – Ocupadas;r et urn l i b;

}

/ / Método getPor cent aj epubl i c doubl e get Por cent aj e( ) {

doubl e por;por = ( doubl e) Ocupadas / ( doubl e) Af oro * 100. 0;r et ur n por ;

}

/ / Método get I ngr esospubl i c doubl e get I ngr esos( ) {

doubl e i ngr e;i ngr e = Ocupadas * Ent r ada;r et ur n i ngr e;

}

}

Métodos de orden

Para finalizar la programación de la clase SalaCine, se programarán los dos métodos de orden quehemos indicado en el planteamiento de la clase. Estos métodos suelen realizar alguna tarea queinvolucra a las propiedades de la clase, modificándola internamente. No suelen devolver ningún valor,aunque pueden recibir parámetros.

Veamos la programación del método Vaciar , cuyo objetivo es vaciar la sala y quitar la película enproyección:

/ / Método Vaci arpubl i c voi d Vaci ar ( ) {

Ocupadas = 0;Pel í cul a = “”;

}

Como se puede observar, es un método muy sencillo, ya que simplemente cambia algunaspropiedades de la clase.

Métodos Get

HAUTIRO

Page 182: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 182/719

El método entraUno es también muy sencillo de programar. Este método le indica al objeto que haentrado un nuevo espectador. Sabiendo esto, el objeto debe aumentar en uno el número delocalidades ocupadas:

/ / Método ent r aUnopubl i c voi d ent r aUno( ) {

Ocupadas++;}

Añadiendo estos dos últimos métodos, la programación de la clase SalaCine quedaría finalmentecomo sigue:publ i c cl ass Sal aCi ne {

i nt Af or o;i nt Ocupadas;St r i ng Pel í cul a;doubl e Ent r ada;

/ / Const r uct or

publ i c Sal aCi ne( ) {Af or o = 100;Ocupadas = 0;Pel i cul a = “”;Ent r ada = 5. 0;

}

/ / Métodos set

/ / Mét odo set Af or opubl i c voi d set Af or o( i nt af o) {

Af oro = af o;}

/ / Método setOcupadas publ i c voi d set Ocupadas( i nt ocu) {

Ocupadas = ocu;}

/ / Método setPelicula publ i c voi d set Pel i cul a( St r i ng pel i ) {

Pel i cul a = pel i ;}

/ / Método set Ent r adapubl i c voi d set Ent r ada( doubl e ent r a) {

Ent r ada = ent r a;}

/ / Mét odo set Li br espubl i c voi d set Li br es( i nt l i b) {

i nt ocu;

ocu = Af oro – l i b;Ocupadas = ocu;

}

Propiedades (variables globales)

Constructor

Métodos Set

HAUTIRO

Page 183: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 183/719

 / / Métodos get

/ / Método getAf oropubl i c i nt get Af or o( ) {

r et ur n Af or o;

}

/ / Mét odo get Ocupadaspubl i c i nt get Ocupadas( ) {

r eturn Ocupadas;}

/ / Mét odo get Pel i cul apubl i c St r i ng get Pel i cul a( ) {

r et ur n Pel í cul a;}

/ / Método getEnt r adapubl i c doubl e get Ent r ada( ) {

r et ur n Ent r ada;}

/ / Mét odo get Li br espubl i c i nt get Li br es() {

i nt l i b;l i b = Af oro – Ocupadas;r et urn l i b;

}

/ / Método getPor cent aj epubl i c doubl e get Por cent aj e( ) {

doubl e por ;por = ( doubl e) Ocupadas / ( doubl e) Af oro * 100. 0;r et ur n por ;

}

/ / Método get I ngr esospubl i c doubl e get I ngr esos( ) {

doubl e i ngr e;i ngr e = Ocupadas * Ent r ada;r et ur n i ngr e;

}

/ / Métodos de orden

/ / Método Vaci arpubl i c voi d Vaci ar ( ) {

Ocupadas = 0;Pel í cul a = “”;

}

/ / Método ent r aUnopubl i c voi d ent r aUno( ) {

Ocupadas++;}

}

Métodos Get

Métodos de orden y otrosmétodos.

HAUTIRO

Page 184: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 184/719

EJERCICIOS RECOMENDADOS

Supongamos que tenemos una clase llamada Rectangulo que nos permitirá generar objetos de tiporectá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 – 100Altura – 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 BasegetAltura – devuelve el valor de la propiedad AlturagetArea – devuelve el área del rectángulogetPerí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.

HAUTIRO

Page 185: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 185/719

 

CONCLUSIÓN

La programación de una clase se realiza en un f ichero que tiene el mismo nombre quela 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 getMétodos de orden y otros métodos

}

El Constructor es un procedimiento que no devuelve nada pero que no es void . Elconst ructor debe llamarse igual que la clase y se usa para asignar los valores inicialesa las propiedades.

Los métodos set son vo id 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 laclase, aunque también pueden realizar cálculos y devolver sus resultados.

Los métodos de orden realizan alguna tarea específica y a veces modi fican laspropiedades de la clase de alguna forma.

HAUTIRO

Page 186: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 186/719

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 deforma 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 salascon 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 80localidades. 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 podremossaber 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 llamadopaqueteprincipal y este a su vez contendrá un J Frame llamadoventanaprincipal. El aspectode la estructura del proyecto al crearlo será la siguiente:

2. Diseñar la ventana principal de forma que quede parecida a la siguiente. Usa la ventana dediseño para hacer el diseño del formulario. Los nombres de los componentes se indica acontinuación.

HAUTIRO

Page 187: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 187/719

 

Etiqueta:

etiCentralPelicula

Etiqueta:

etiOriginalPelicula

Botones:

btnOriginalNuevabtnOriginalOcupacionbtnOriginalVaciarbtnOriginalIngresosbtnOriginalCambiar

Botón

btnIngresosTotales

Botones:

btnCentralNuevabtnCentralOcupacionbtnCentralVaciarbtnCentralIngresosbtnCentralCambiar

Panel:

panelCentral

Panel:

panelVOriginal

HAUTIRO

Page 188: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 188/719

 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 ennuestro programa.

4. Para añadir un fichero de clase propio en un proyecto J ava 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 J ava…

6. Entonces tendremos que darle un nombre a nuestro fichero de clase. Recuerda que elnombre debe ser el mismo que el de la clase que queremos programar. En nuestro caso,SalaCine. Luego se pulsa el botón Terminar .

HAUTIRO

Page 189: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 189/719

 

7. Si vuelves a observar el esquema del proyecto, verás que dentro del paquete principal haaparecido un nuevo elemento, llamado SalaCine. Este es el fichero donde programaremosnuestra claseSalaCine.

8. Si haces doble clic sobre el fichero SalaCine.java, podrás ver en el centro de la ventana deNetBeans el código de dicha clase. NetBeans añade cierto código a la clase para ahorrarnostrabajo, por eso ya tendremos programado la instrucción inicial de la clase junto con elcomienzo del constructor y algunos comentarios que se añaden automáticamente:

El fichero de la clase SalaCine

HAUTIRO

Page 190: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 190/719

 

9. Ahora ya solo tendremos que completar la programación de la clase, añadiendo laspropiedades, completando el constructor, y añadiendo los distintos métodos queprogramamos 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 

HAUTIRO

Page 191: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 191/719

/ ** Sal aCi ne. j ava** Cr eated on 2 de agost o de 2007, 12: 14** To change t hi s t empl ate, choose Tool s | Templ at e Manager

* and open the t empl at e i n the edi t or.*/

package paquetepr i nci pal ;

/ **** @aut hor di dact*/

publ i c cl ass Sal aCi ne {

/ / pr opi edadesi nt Af or o;i nt Ocupadas;St r i ng Pel i cul a;doubl e Ent r ada;

/ ** Cr eates a new i nst ance of Sal aCi ne *// / Const r uct orpubl i c Sal aCi ne( ) {

Af or o = 100;Ocupadas = 0;Pel i cul a = "" ;Ent r ada = 5. 0;

}

/ / Métodos set

/ / Mét odo set Af or opubl i c voi d set Af or o( i nt af o) {

Af oro = af o;}

/ / Mét odo set Ocupadaspubl i c voi d set Ocupadas( i nt ocu) {

Ocupadas = ocu;}

/ / Mét odo set Pel i cul a

publ i c voi d set Pel i cul a( St r i ng pel i ) {Pel i cul a = pel i ;

}

/ / Mét odo set Ent r adapubl i c voi d set Ent r ada( doubl e ent r a) {

Ent r ada = ent r a;}

/ / Mét odo set Li br espubl i c voi d set Li br es( i nt l i b) {

i nt ocu;ocu = Af or o - l i b;

Ocupadas = ocu;}

HAUTIRO

Page 192: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 192/719

 

/ / Métodos get

/ / Mét odo get Af or opubl i c i nt get Af or o( ) {

r et ur n Af or o;}

/ / Mét odo get Ocupadaspubl i c i nt get Ocupadas( ) {

r et urn Ocupadas;}

/ / Mét odo get Pel i cul apubl i c St r i ng get Pel i cul a( ) {

r et ur n Pel i cul a;}

/ / Método getEntr adapubl i c doubl e get Ent r ada( ) {

r et ur n Ent r ada;}

/ / Mét odo get Li br espubl i c i nt get Li br es() {

i nt l i b;l i b = Af oro – Ocupadas;r et ur n l i b;

}

/ / Mét odo get Por cent aj epubl i c doubl e get Por cent aj e( ) {

doubl e por ;por = ( doubl e) Ocupadas / ( doubl e) Af oro * 100. 0;r et ur n por ;

}

/ / Mét odo get I ngr esospubl i c doubl e get I ngr esos( ) {

doubl e i ngr e;i ngr e = Ocupadas * Ent r ada;r et ur n i ngr e;

}

/ / Mét odos de orden

/ / Método Vaci arpubl i c voi d Vaci ar ( ) {

Ocupadas = 0;Pel i cul a = "" ;

}

/ / Mét odo ent r aUnopubl i c voi d ent r aUno( ) {

Ocupadas++;}

}

HAUTIRO

Page 193: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 193/719

 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.

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 ventanaprincipal:

12. Nuestro programa principal, gestiona el funcionamiento de dos salas de cine: la sala central yla sala de versiones originales. Para facilitar nuestro trabajo, sería interesante crear dosobjetos globales del tipo SalaCine. Uno de ellos representará la sala central, y el otro la salade 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 tipoSalaCine:

15. Es en el constructor de nuestra ventana principal donde construiremos nuestros objetos detipo sala. (Recuerda que el constructor de tu ventana principal se suele usar para construir losobjetos que vas a usar en tu programa y asignarle las características que tendrán dichosobjetos al inicio)

Creamos dos objetos“sala de cine”

HAUTIRO

Page 194: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 194/719

 

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

Será necesario modificar las características de ambas salas ya que no tienen ahora mismolos 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 lasiguientes:

Aforo: 80. Precio entrada: 6.0 euros.

Por tanto será necesario modificar el objeto vo para asignar estos valores:

Construimos losobjetos.

Modificamos lascaracterísticas del objetocentral (sala central)

HAUTIRO

Page 195: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 195/719

 

18. Ya hemos incluido dos objetos del tipo SalaCine en nuestro proyecto. Los hemos declaradoen la ventana principal como globales y los hemos construido dándoles las característicasapropiadas. A partir de ahora, usaremos esos objetos en la programación de cada botón de laventana.

19. Empezaremos programando el botón btnCentralCambiar . El objetivo de este botón es asignara la sala central un título de película. Ese título se debe mostrar también en la etiquetaetiCentralPelicula:

20. Entra en el actionPerformed del botón btnCentralCambiar y programa lo siguiente:

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 J OptionPane.showInputDialog. El título introducido se recoge en una variable de cadenallamada titulo.

- Luego se asigna dicho título a la sala central del multicines. Esta línea es interesante, ya quese 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.

Modificamos lascaracterísticas del objetovo (sala versión original)

Cambia el títulode la película dela sala central.

HAUTIRO

Page 196: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 196/719

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 programadeberá pulsar este botón. Internamente, el programa debe decirle al objeto central que haentrado 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 entradouna nueva persona usando el método entraUno.

23. Programaremos ahora el botón btnCentralOcupacion. Este botón nos mostrará informaciónsobre 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) quenos de información de la sala. Esto lo conseguiremos usando los distintos métodos get delobjeto.

Estudia atentamente la programación del botón btnCentralOcupacion:

HAUTIRO

Page 197: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 197/719

 

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 \npermiten añadir saltos de línea.

- Observa como se va pidiendo información al objeto a través de métodos get y se vaconcatenando esta información a la variable info.

- Finalmente se presenta el texto de la variable info en un J OptionPane.

24. Ejecuta el programa para observar el funcionamiento de los tres botones que se hanprogramado. Asigna una película a la sala central, luego pulsa varias veces el botón NuevaVenta y pulsa el botón %Ocupación para ver información sobre la sala:

Cambia el títulode la películaasignada a la salacentral

Pulsa este botón variasveces, para simular laventa de variasentradas.

Pulsa aquí para verinformación actualizadasobre la ocupación de la

HAUTIRO

Page 198: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 198/719

 

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ículaasignada 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 darinformación sobre los ingresos producidos por la sala en el momento en que se pulsa. Estainformación la mostraremos en un J OptionPane. Programa el actionPerformed de este botóncomo sigue:

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 tenemosque 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 luegocomprueba los ingresos. Vacía la sala central, y vuelve a comprobar el porcentaje deocupación y los ingresos actuales.

HAUTIRO

Page 199: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 199/719

 

EJERCICIO

El segundo de los paneles hace referencia a la sala de versiones originales. Su funcionamiento es elmismo que el de la sala central. Se pide que programe todos los botones correspondientes a la salade versiones originales.

La programación es prácticamente igual, solo hay que actuar sobre el objeto vo en vez del objetocentral.

EJERCICIO

El botón IngresosTotales de la ventana, debería mostrar en un JOptionPane la suma de los ingresosactuales 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.

Asigna una película yvende variasentradas…

…luego comprueba el% de ocupación y losingresos…

…prueba a vaciar la sala yluego vuelve a comprobarla ocupación y losin resos…

HAUTIRO

Page 200: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 200/719

 

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 usarlospara hacer el programa.

En general, un proyecto java está constituido por un grupo de clases, algunas de lascuales serán de creación propia. En el programa usaremos objetos derivados dedichas clases.

HAUTIRO

Page 201: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 201/719

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 Claseque posee las mismas propiedades y métodos que la Clase inicial, además de unas nuevaspropiedades y métodos que la Clase inicial no poseía. La nueva Clase creada puede incluso redefinirmétodos de la Clase inicial.

La Clase inicial se denomina Clase Base, la Clase creada a partir de la clase base se denomina ClaseDerivada. La Clase Derivada contiene propiedades y métodos de la Clase Base más unaspropiedades y métodos añadidos.

La Herencia es una técnica muy útil que nos permite reutilizar código, es decir, que nos permite usarde 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 deprogramación J ava.

En esta explicación guiada, veremos un ejemplo de uso de la Herencia con clases propias dellenguaje J ava.

CLASE BASE

CLASEDERIVADA

Herencia

HAUTIRO

Page 202: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 202/719

EJERCICIO GUIADO

Planteamiento Inicial

“ Botones Contadores”

Supongamos que en los proyectos cotidianos se plantea la necesidad de usar botones que guarden elnúmero de veces que son pulsados. Estos botones funcionarían exactamente igual que los botonesnormales (J Button) y tendrían su mismo aspecto, pero sería interesante que además tuvieran lossiguientes métodos:

Método setPulsaciones.Permitirá asignar un número de pulsaciones al botón.

bt nCont ar . set Pul saci ones( 3) ;/ / Se asi gnan 3 pul saci ones al bot ón bt nCont ar

Método getPulsaciones. Permitirá saber cuantas pulsaciones tiene un botón.

i nt p = bt nCont ar . get Pul saci ones( 3) ;/ / Se r ecoge el número de pul saci ones del botón btnCont ar/ / en l a var i abl e p

Método incrementa.Permite incrementar en uno las pulsaciones que tiene un botón.

bt nCont ar . i ncr ement a( ) ;/ / I ncr ement a en uno l as pul saci ones del bot ón bt nCont ar

Método decrementa. Permite decrementar en uno las pulsaciones que tiene un botón

btnCont ar . decrement a( ) ;/ / Decrement a en uno l as pul saci ones del bot ón bt nCont ar

Método reiniciar. Permite colocar las pulsaciones de un botón a cero.

bt nCont ar. rei ni ci ar( ) ;/ / Si t úa a cer o l as pul saci ones del bot ón bt nCont ar

Método aumentar. Permite aumentar en una determinada cantidad las pulsaciones del botón.

btnCont ar . aument ar( 4) ;/ / Aument a en cuat r o l as pul saci ones del bot ón bt nCont ar

Método disminuir. Permite disminuir en una determinada cantidad las pulsaciones del botón.

bt nCont ar . di smi nui r ( 6) ;/ / Di smi nuye en 6 l as pul saci ones del botón bt nCont ar

Los botones de este tipo tendrían una propiedad llamada pulsaciones de tipo entera que seinicializaría a cero en el momento de construir el botón.

HAUTIRO

Page 203: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 203/719

 Desgraciadamente no existe un botón de este tipo en Java, así que no podemos acudir a laventana 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 J Button, la cual define botones normales y corrientes, de forma que estos botones admitan tambiénlos métodos indicados antes.

La idea es crear una nueva clase a partir de la clase J Button. A esta nueva clase la llamaremosBotonContador y haremos que herede de la clase J Button. Por tanto, la clase BotonContador tendrátodas las características de los J Button y además le añadiremos los métodos mencionados antes.

Gracias a la herencia, nuestra clase BotonContador poseerá todos los métodos de los J Button(setText, getText, setForeground, setToolTipText, etc.) sin que tengamos que programar estosmé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 J Button.

Programación de la Clase BotonContador 

Creación de la clase derivada

La programación de la clase derivada BotonContador se hará en un fichero aparte, al igual que laprogramació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:

publ i c cl ass Bot onCont ador ext ends J But t on {

}

Observa el código añadido: ext ends J But t on antes de la llave de apertura. Este es el código quele permite indicar a J ava que nuestra clase BotonContador derivará de la clase J Button.

JButton

BotonContador 

Herencia

HAUTIRO

Page 204: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 204/719

Creación de las propiedades de la clase derivada

La clase BotonContador es una clase derivada de la clase J Button, y tendrá las mismas propiedadesque la clase J Button, pero a nosostros nos interesa añadir nuestras propias propiedades. En nuestrocaso, necesitaremos una variable que contenga el número de pulsaciones del botón en todomomento.

publ i c cl ass Bot onCont ador ext ends J But t on {

i nt pul saci ones;

}

Inicialización de las propiedades de la clase derivada

Nuestra propiedad pulsaciones debe ser inicializada en el constructor de la clase. Para ello crea elconstructor de la clase:

publ i c cl ass Bot onCont ador ext ends J But t on {

i nt pul saci ones;

publ i c Bot onCont ador ( ) {pul saci ones=0;

}

}

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 lossiguientes:

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óndecrementa - resta uno a las pulsaciones del botónreiniciar  - pone a cero las pulsaciones del botónaumentar  - 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 clasequedará de la siguiente forma (observa la programación de los distintos métodos para entenderlos):

HAUTIRO

Page 205: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 205/719

publ i c cl ass Bot onCont ador ext ends J But t on {

/ / pr opi edadesi nt pul saci ones;

/ / const r uctor

publ i c Bot onCont ador ( ) {pul saci ones=0;}

/ / mét odos

/ / asi gna una cant i dad de pul saci onespubl i c voi d set Pul saci ones( i nt p) {

pul saci ones=p;}

/ / devuel ve l as pul saci ones del bot ónpubl i c i nt get Pul saci ones( ) {

r et ur n pul saci ones;}

/ / i ncr ement a en uno l as pul saci onespubl i c voi d i ncr ement a( ) {

pul saci ones++;}

/ / decrement a en uno l as pul saci onespubl i c voi d decr ement a( ) {

pul saci ones- - ;}

/ / pone l as pul saci ones a cer opubl i c voi d re i ni ci ar ( ) {

pul saci ones=0;}

/ / aument a l as pul saci ones en una cant i dad cpubl i c voi d aument a( i nt c) {

pul saci ones=pul saci ones+c;}

/ / di smi nuye l as pul saci ones en una cant i dad cpubl i c voi d di smi nuye( i nt c) {

pul saci ones=pul saci ones- c;}

}

Como has podido observar, la creación de una clase heredada es exactamente igual que la creaciónde una clase propia. La única diferencia es que hacemos que dicha clase herede de otra clase yaexistente, dándole más posibilidades sin necesidad de programar nada:

publ i c cl ass BotonCont ador ext ends J But t on {

HAUTIRO

Page 206: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 206/719

Uso de la clase BotonContador 

Usaremos la clase BotonContador en un simple proyecto de prueba para que puedas observar susposibilidades.

Para ello, sigue los pasos que se indican a continuación:

1. Crea un proyecto llamado Contadores, que tenga un paquete principal llamadopaqueteprincipal y un J Frame llamado ventanaprincipal:

2. Añadiremos la Clase BotonContador . Para ello debes hacer clic con el botón derecho sobre elpaqueteprincipal y activar la opción Nuevo  Clase Java. El nombre de la clase esBotonContador :

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 claseBotonContador que hemos diseñado anteriormente usando herencia.

El fichero BotonContador.java debería quedar así:

HAUTIRO

Page 207: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 207/719

/ ** Bot onCont ador. j ava** Created on 6 de agost o de 2007, 10: 59** To change t hi s t empl at e, choose Tool s | Templ at e Manager

* and open t he t empl ate i n t he edi t or .*/

package paquetepr i nci pal ;i mpor t j avax. swi ng. J But t on;

/ **** @aut hor di dact*/

publ i c cl ass Bot onCont ador ext ends J But t on {

/ / pr opi edadesi nt pul saci ones;

/ / const r uctorpubl i c Bot onCont ador ( ) {

pul saci ones=0;}

/ / asi gna una cant i dad de pul saci onespubl i c voi d set Pul saci ones( i nt p) {

pul saci ones=p;}

/ / devuel ve l as pul saci ones del bot ónpubl i c i nt get Pul saci ones( ) {

r et ur n pul saci ones;}

/ / i ncr ement a en uno l as pul saci onespubl i c voi d i ncr ement a( ) {

pul saci ones++;}

/ / decrement a en uno l as pul saci onespubl i c voi d decr ement a( ) {

pul saci ones- - ;}

/ / pone l as pul saci ones a cer opubl i c voi d re i ni ci ar ( ) {

pul saci ones=0;}

/ / aument a l as pul saci ones en una cant i dad cpubl i c voi d aument a( i nt c) {

pul saci ones=pul saci ones+c;}

/ / di smi nuye l as pul saci ones en una cant i dad cpubl i c voi d di smi nuye( i nt c) {

pul saci ones=pul saci ones- c;

}}

HAUTIRO

Page 208: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 208/719

4. Ahora programaremos el diseño de la ventana. Lo haremos desde código. Entra en el móduloventanaprincipal.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 elconstructor, donde se programará el diseño de la ventana:

6. Nuestro programa tendrá dos botones del tipo BotonContador. Declara estos botones comovariables globales de la clase:

7. En el método CreacionVentana definiremos características de la ventana y construiremosestos botones y los situaremos en la ventana:

HAUTIRO

Page 209: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 209/719

 

8. Como puedes ver, los botones contadores se construyen igual que los J Button, y, de hecho,tienen los mismos métodos que los J Button, ya que derivan de ellos. Así pues, un botóncontador tiene un método setText, setBounds, etc…

9. Ejecuta el programa y observa el resultado. Verás que en la ventana aparecen los dosbotones contadores, sin embargo, observarás que tienen el mismo aspecto que los J Button.Se vuelve a insistir que esto es debido a que la clase BotonContador deriva de la clase J Button.

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 deeventos actionPerformed a los botones:

HAUTIRO

Page 210: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 210/719

 

11. Se tendrán que programar los procedimientos de respuesta a los eventos, que aquí se hanllamado PulsacionBotonA y PulsacionBotonB. Prográmalos (fuera de CreacionVentana, claroestá) de la siguiente forma:

12. Cada vez que se pulse el botón A, debería aumentar su contador interno de pulsaciones enuno. Lo mismo debería pasar con el botón B. Esto se hace fácilmente usando el métodoincrementa, 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 seincremente 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 ylos crearemos desde la ventana de diseño, para facilitar la tarea. Estos botones se llamaránbtnVerPulsaciones y btnReiniciar .

HAUTIRO

Page 211: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 211/719

 

15. Cuando se pulse el botón Ver Pulsaciones debería aparecer un JOptionPane indicandocuantas veces se ha pulsado el botón A y cuantas el B. Esto se hará simplemente pidiendo acada botón su número de pulsaciones almacenadas.

Accede al actionPerformed del botón Ver Pulsaciones y programa lo siguiente:

En este botón le pedimos al Botón A que nos diga cuantas pulsaciones tiene anotadas (através del método getPulsaciones) y lo mismo hacemos con el Botón B. Esto es posible yaque 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 cadauno 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 vecesque pulsaste cada botón.

HAUTIRO

Page 212: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 212/719

 

17. Ahora programaremos el botón Reiniciar de forma que los contadores internos de ambosbotones 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 variasveces los botones A y B. Luego mira las pulsaciones almacenadas en ambos botones. Pulsael botón Reiniciar y comprueba las pulsaciones de nuevo. Deberían ser cero en ambosbotones.

Pulsa los botones variasveces…

…y luego pulsa el botónVer Pulsaciones.

Aparecerá un JOptionPaneinformando sobre laspulsaciones realizadas.

HAUTIRO

Page 213: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 213/719

 

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 pulsarseaumente su número de pulsaciones interno en 2 (usa el método aumentar propio de la claseBotonContador).

- Cuando se pulse el botónVer Pulsaciones también debería verse el número de pulsacionesdel botón C.

- Cuando se pulse Reiniciar, el número de pulsaciones del Botón C debería situarse a cerotambién.

- Añade desde diseño un cuadro de texto y un botón normal (JButton) llamado Iniciar . En elcuadro 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:

Después de pulsar losbotones A y B…

… si se pulsa el botónReiniciar…

… al ver las pulsaciones,estas deben ser cero…

Se introduce un número…

 Y al pulsar iniciar, loscontadores internos de losbotones se inicializan alvalor introducido

HAUTIRO

Page 214: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 214/719

 

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 clasebase se llama clase Derivada:

Se puede hacer que una clase de creación propia derive o herede de otra ya existenteañadiendo:

extends NombreClaseBase

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.

CLASE BASE

CLASEDERIVADA

Herencia

HAUTIRO

Page 215: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 215/719

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 tenemosque crear la nueva Clase desde el principio, y solo tenemos que añadir algunos cambios a la Claseoriginal, sin que esta se vea afectada.

De esta manera, podemos tomar Clases de las librerías de J ava y crear a partir de ellas nuevasClases para nuestras necesidades específicas. Estas clases luego pueden ser incluidas fácilmente enfuturos proyectos.

Cuadro de Diálogo Propio

Como ejemplo de todo esto, crearemos un cuadro de diálogo propio que puede ser usado muy amenudo 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 J Dialog, por lo que estecuadro de diálogo propio tendrá que derivar (heredar) de la clase J Dialog.

La clase J Dialog se comporta como una ventana (un J Frame) así que su programación esrelativamente sencilla.

Veremos el caso concreto de programar un Cuadro de Diálogo Propio a través del ejercicio guiadoque viene a continuación.

HAUTIRO

Page 216: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 216/719

EJERCICIO GUIADO

1. Crea un proyecto llamado Fecha, que tenga un paquete principal llamado paqueteprincipal yun JFrame llamado ventanaprincipal:

2. Para crear un cuadro de diálogo propio, debes hacer clic con el botón derecho del ratón sobreel paquete principal y activar la opción Nuevo – Archivo/Carpeta. A través de esta opciónaccedemos a un menú desde donde podemos añadir a nuestro proyecto distintos tipos declases.

3. En la ventana que aparece, escogeremos en la parte izquierda la opción Formularios GUIJava, y en la parte derecha escogeremos la opción Formulario JDialog. Luego activa el botónSiguiente.

HAUTIRO

Page 217: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 217/719

 

4. A continuación tendremos que indicar el nombre que tendrá la clase correspondiente anuestro cuadro de diálogo propio. En nuestro caso llamaremos a esta clase dialogoFecha.

HAUTIRO

Page 218: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 218/719

5. Y pulsa el botón Terminar . Observarás que se ha creado una nueva Clase dentro del proyectollamada dialogoFecha.

6. Es interesante que veas el código de esta clase. Haz doble clic sobre ella:

Si observas el código verás que es muy similar al de las Clases J Frame, es decir, a la de laclase de la ventana principal.

Debes observar que la clase dialogoFecha que vas a crear es heredada de J Dialog, y también

verás que hay un constructor similar al de los J Frame, aunque con parámetros:

7. Además, tenemos la ventaja de poder usar la ventana de diseño para crear nuestro cuadro dediálogo dialogoFecha:

8. Usaremos la ventana de diseño para darle forma a nuestro cuadro de diálogo. Recuerda quela finalidad de este cuadro de diálogo será la de permitirle al usuario introducir una fecha.Diséñalo para que quede así:

Hereda de J Dialog

Constructor

HAUTIRO

Page 219: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 219/719

 

9. Asigna nombre a cada elemento:

- El cuadro de texto para el día se llamará: txtDia- El cuadro de texto para el mes se llamará: txtMes- El cuadro de texto para el año se llamará: txtAnio- El botón Aceptar se llamará btnAceptar- El botón Cancelar se llamará btnCancelar

10. Como ves, hasta ahora la creación de un cuadro de diálogo propio es algo muy sencillo, yaque 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.

11. Ahora hay que dotar a nuestro cuadro de diálogo de las propiedades y los métodosnecesarios para que sea fácil de usar. Antes de programar todo esto, aquí tienes unadescripción de lo que queremos añadir al cuadro de diálogo:

Propiedades:

Dia - enteroMes - enteroAnio - enteroBotonPulsado - 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 propiedadpodrá tener un 0 o un 1. Tendrá un 0 si se pulsa el botón Aceptar, y un 1 si sepulsa el botón Cancelar.

12. Bien, empecemos. Programar las propiedades es algo sencillo, ya que son simplementevariables globales a la clase dialogoFecha:

HAUTIRO

Page 220: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 220/719

 

13. Cuando el usuario pulse el botón Cancelar, el cuadro de diálogo de fecha debe introducir elvalor 1 dentro de su propiedad BotonPulsado, y el cuadro de diálogo se cerrará. Paraprogramar esto, acude a la ventana de diseño y entra en el actionPerformed del botónbtnCancelar .

Como puedes observar en el código, asigno el 1 a la propiedad BotonPulsado y luego uso elmétodo dispose para cerrar el cuadro de diálogo.

14. Cuando el usuario pulse el botón Aceptar, el cuadro de diálogo de fecha debe introducir elvalor de los J TextField txtDia, txtMes y txtAnio en sus respectivas propiedades: Dia, Mes yAnio. Luego, se debe introducir un 0 en la propiedad BotonPulsado, y finalmente se cerrará elcuadro de diálogo.

Accede al actionPerformed del botón btnAceptar y programa lo siguiente…

15. 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 clasedialogoFecha. El mejor sitio puede ser debajo del constructor.

Propiedades de la clasedialogoFecha

HAUTIRO

Page 221: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 221/719

 

Observa el código. Se unen las propiedades dia, mes y año en una cadena, separadas por elsímbolo “/”. Luego se devuelve la cadena.

16. Ahora programaremos el método getFechaCompleta. Este método devuelve la fecha conformato largo, usando el mes en letras. El método getFechaCompleta tendrá el siguienteaspecto. 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 dela propiedad Mes, se concatena un mes en letras. Finalmente se concatena la propiedad Anioy se devuelve la cadena.

17. Y ya para terminar con la programación de nuestro dialogoFecha, programaremos el métodogetBotonPulsado, que básicamente devuelve la propiedad BotonPulsado, la cual contiene un

HAUTIRO

Page 222: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 222/719

0 si se pulsó Aceptar y un 1 si se pulsó Cancelar. La programación de este método es muysencilla:

La clase dialogoFecha está terminada. Gracias a ella podremos crear cuadros de diálogo en nuestrosproyectos para introducir fechas. Para probar esta clase, usaremos nuestra ventana principal.

18. Acude a la ventana principal, haciendo doble clic sobre ella en la ventana de proyectos:

19. Diseña esta ventana para que tenga la siguiente forma:

El botón se llamará btnFechaNacimiento y la etiqueta con borde se llamaráetiFechaNacimiento.

20. El programa funcionará de la siguiente forma:

- Al pulsar el botón Introducir Fecha Nacimiento aparecerá un cuadro de diálogo deltipo dialogoFecha, donde el usuario introducirá la fecha de nacimiento.

- Al pulsar Aceptar, dicha fecha aparecerá en la etiqueta etiFechaNacimiento.

- Al pulsar Cancelar, la etiqueta etiFechaNacimiento se borrará.

HAUTIRO

Page 223: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 223/719

21. Nuestro programa necesitará un cuadro de diálogo del tipo dialogoFecha. Este cuadro lodeclararemos en la zona de variables globales de la ventana principal y lo llamaremosnacimiento…

22. El objeto nacimiento es del tipo dialogoFecha. Recuerda que los objetos que declaras deforma global, luego debes construirlos en el constructor. Así pues construiremos el objetonacimiento.

Para construir un objeto que sea un cuadro de diálogo hay que añadir dos parámetros: null, yluego indicar true o false, según quieras que el cuadro de dialogo sea modal o no. En nuestrocaso, queremos que el cuadro de diálogo nacimiento sea modal, por lo que indicaremos true:

23. Programa el actionPerformed del botón btnFechaNacimiento. Este botón mostrará al cuadrode diálogo nacimiento, donde el usuario introducirá una fecha. Luego, comprobaremos si elusuario 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 hacepreguntando al objeto nacimiento a través de los métodos programados. Observa el código:

24. Ejecuta el programa y observa el funcionamiento del botónbtnFechaNacimiento y del cuadrode diálogo nacimiento 

Se construye elcuadro de diálogonacimiento. Serámodal (true)

HAUTIRO

Page 224: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 224/719

 

EJERCICIO

Añade otra etiqueta a la ventana principal. Modifica el código del botón btnFechaNacimiento de formaque también aparezca en esta etiqueta la fecha elegida por el usuario en formato largo. Esto debesuceder 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 nosinteresen.

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 enotros proyectos.

1) Al pulsar el botónaparece el cuadro dediálogo diseñado pornosotros…

2) Al pulsar Aceptar o Cancelar,

el cuadro de diálogo modifica suspropiedades internas (dia, mes,año y botón pulsado) y se cierra

3) El programa le pide

información al cuadro de diálogopara saber que debe colocar enla etiqueta.

HAUTIRO

Page 225: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 225/719

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 Clasesque son capaces de generar objetos que pueden ser usados en los nuevos proyectos que elprogramador realice. Cuantas más clases coleccione, más herramientas dispondrá para crear losnuevos proyectos.

En esta hoja guiada veremos algunos ejemplos de como podemos aprovechar una Clase ya creadaen un nuevo proyecto.

EJERCICIO GUIADO 1

1. Crea un nuevo proyecto. El nombre del proyecto será Reutilizacion. Contendrá un paquetellamado paqueteprincipal y dentro de él introducirás un J Frame al que llamaremosventanaprincipal:

2. Supongamos que en este proyecto queremos utilizar cuadros de diálogo para introducirfechas. Podemos aprovechar la clase dialogoFecha creada en la hoja guiada anterior. Paraello, abre el proyecto llamado Fecha que hicimos en la hoja anterior.

Si despliegas el proyecto Fecha, tu ventana de proyectos tendrá un aspecto similar alsiguiente:

HAUTIRO

Page 226: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 226/719

 

Observarás que el proyecto Fecha incluye la clase dialogoFecha dentro de su paqueteprincipal.

3. Para poder aprovechar la clase dialogoFecha en el proyecto Reutilización, solo hay quecopiar el fichero de la clase desde un proyecto a otro. Así pues Copia dialogoFecha…

4. Y luego Pega en el paquete principal del proyecto Reutilizacion.

Proyecto Fecha

Proyecto Reutilizacion

HAUTIRO

Page 227: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 227/719

 

4. Observarás como se añade una copia de dialogoFecha al paquete principal del proyectoReutilizacion.

A partir de ahora, podrás crear objetos de tipo dialogoFecha dentro del proyecto Reutilizacion yaprovechar sus características, sin tener que programar ningún código adicional.

HAUTIRO

Page 228: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 228/719

5. Cierra el paquete Fecha para despejar un poco la ventana de Proyectos (Botón derechocerrar proyecto)

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 dichahoja…

7. Y luego copiar la clase BotonContador desde Contadores a Reutilizacion. Hágalo y luegocierre la clase Contadores. Su ventana de proyectos debería quedar así:

HAUTIRO

Page 229: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 229/719

 

8. A partir de este momento, puede crear botones contadores y cuadros de diálogo deintroducción de fechas en el proyecto Reutilizacion sin tener que haber programado ni unalínea de código.

9. Cuando tenemos proyectos de gran envergadura, es normal tener gran cantidad de ficherosde 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ónderecho sobre Paquetes de origen y luego Nuevo  Paquete Java)

11. El nombre del paquete será elementosventana. Su proyecto quedará así:

HAUTIRO

Page 230: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 230/719

 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 dela ventana principal, en el paqueteprincipal, y por otro lado, los elementos de las ventanas decreación propia en el paquete elementosventana.

Para introducir las clases en el paquete elementosventana puede hacerlo cortando ypegando.

Cuando intente pegar una clase en otro paquete aparecerá un cuadro de opciones como elsiguiente:

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

Ahora tiene mejor clasificadas sus clases en su proyecto.

14. Guarde el proyecto, pero no lo cierre, ya que se usará a continuación.

HAUTIRO

Page 231: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 231/719

EJERCICIO GUIADO 2

En el ejercicio guiado 1 hemos visto como podemos añadir a nuestro proyecto clases que se hayanprogramado 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 laclase 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 tenerque estar luego buscándolas por distintos proyectos.

Una Biblioteca en J ava es un proyecto que contiene una serie de paquetes que a su vez contienendistintas clases que son normalmente usadas en nuestros proyectos. Al estar reunidas estas clasesen 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 deopciones que aparece elige General y Biblioteca de clases java.

2. Pulsa el botón Siguiente y asigna a la biblioteca el nombre MisClases. Pulsa Terminar .

HAUTIRO

Page 232: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 232/719

 

Observarás que ha aparecido un nuevo proyecto, llamado MisClases.

3. A este nuevo proyecto le agregaremos el paquete elementosventana que tenemos en elproyecto Reutilizacion. Solo hay que copiar…:

4. Y luego Pegar…

HAUTIRO

Page 233: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 233/719

 

5. Y el resultado es que hemos añadido un paquete a la biblioteca MisClases:

6. Se podría agregar más paquetes de clases a la biblioteca. A medida que vayamosprogramando 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 acontinuación.

HAUTIRO

Page 234: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 234/719

EJERCICIO GUIADO 3

1. Para facilitar la inclusión de una biblioteca en un proyecto, se suele compactar la biblioteca enun fichero de tipo J AR. Para conseguir esto, configura el proyecto MisClases como proyecto

principal.

2. A continuación pulsa el botón de la barra de herramientas Limpiar y Construir proyectoprincipal:

3. Al pulsar este botón, NetBeans compilará las distintas clases y buscará errores en ellas. Si noencuentra ninguno mostrará un mensaje en la parte inferior de la pantalla donde se indicaráque la generación ha sido correcta:

HAUTIRO

Page 235: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 235/719

 4. Si todo ha ido bien, se debe haber generado un fichero llamado MisClases.J AR que contiene

toda la librería. Este fichero se encuentra en una carpeta llamada DIST que a su vez seencuentra 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.J AR. Copia el ficheroMisClases.J AR al escritorio.

Un programador ordenado guardará todos sus ficheros JAR de biblioteca en una carpeta quetendrá 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 J Frame llamado ventanaprincipal. El aspecto de su ventanade proyecto será el siguiente:

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 yactiva la opción Agregar Archivo JAR / Carpeta. 

9. Busca en el escritorio el fichero MisClases.JAR y ábrelo.

HAUTIRO

Page 236: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 236/719

 

10. En este momento, la librería de clases llamada MisClases ha sido añadida a tu proyecto, yesto significa que podrás usar cualquier clase que contenga MisClases. Es decir, podrás usarla clase BotonContador y dialogoFecha para crear tus objetos, así como cualquier otra clase

que estuviera incluida en MisClases.

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 .J AR- Al incluir un fichero de biblioteca en un proyecto, puedes usar las clases que estén

contenidas en dicha biblioteca.

HAUTIRO

Page 237: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 237/719

 

CONCLUSIÓN

En NetBeans puedes abrir varios proyectos y copiar los f icheros de clases de uno aotro.

Si un proyecto t iene muchas clases, interesa clasificarlas en paquetes.

Es interesante reunir las clases que más uses en un solo proyecto de tipo bibl ioteca,para poder acceder a ellas fácilmente.

Una biblioteca se puede compactar en un solo fichero de tipo .JAR

 Al asociar un f ichero de bibl ioteca .JAR a un proyecto, hacemos que en dichoproyecto 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.

HAUTIRO

Page 238: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 238/719

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.

 Apli cac iones SDI (Single Document Interface)

SDI se puede traducir como interfaz de documento único. Esto quiere decir que las aplicaciones SDIsolo 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 quieresescribir 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 hansido de tipo SDI.

 Apli cac iones MDI (Mult ip le Documento Interface)

MDI se puede traducir como interfaz de múltiples documentos. Esto quiere decir que las aplicacionesMDI pueden mostrar varios documentos a la vez.

Un ejemplo práctico de aplicación MDI es el programa de retoque fotográfico Photoshop. En él, elusuario puede abrir varias fotos y trabajar con todas ellas.

Las aplicaciones MDI normalmente constan de una ventana principal, la cual, puede contener otrasventanas 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 J avacon NetBeans.

HAUTIRO

Page 239: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 239/719

 

EJERCICIO GUIADO 1

Se pretende crear un visor de imágenes MDI, es decir, que permita la visualización de variasimá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 internastendrá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

1. Crea un nuevo proyecto. El nombre del proyecto será VisorFotos. Añade un paquete llamadopaqueteprincipal. Dentro de dicho paquete añade un J Frame llamado ventanaprincipal.

2. Añade a la ventana principal una barra de menús, con una única opción Archivo, quecontenga a su vez las siguiente opciones:

Asigna los siguientes nombres a cada elemento del menú:

HAUTIRO

Page 240: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 240/719

3. Establece un layout de tipo BorderLayout al J Frame. Recuerda que este tipo de distribucióndivide la ventana en cinco zonas: norte, sur, este, oeste y centro.

4. En la zona central de la ventana principal colocaremos un panel, pero no será un J Panel,como siempre, sino otro tipo de panel. Debes colocar un panel del tipo J DesktopPane:

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 panelesnormales, por eso, cuando añadas el panel al J Frame este quedará así:

HAUTIRO

Page 241: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 241/719

5. Cámbiale el nombre al J DesktopPane y asígnale el nombre panelInterno:

6. 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 elprograma. También le asignaremos un tamaño inicial. Para ello, acude al constructor del J Frame y programa lo siguiente:

Como ves, en el constructor se llama a un método ConfiguracionVentana y en este método seasigna un tamaño por defecto a la ventana de 800x600 y se maximiza.

Llamada a un métodoConfiguracionVentana

Programación de dichométodo. 

HAUTIRO

Page 242: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 242/719

 Diseño de las ventanas internas

Se pretende que cuando se abra una imagen, el programa muestre una ventana interna que contengala 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:

7. Una ventana interna de una aplicación MDI es un objeto de la clase J InternalFrame. Seránecesario añadir esta clase al proyecto. Para ello, haz clic con el derecho sobre elpaqueteprincipal y elige Nuevo  Archivo/Carpeta.

8. Luego elige Formularios GUI Java y dentro de esta categoría Formulario JInternalFrame.

HAUTIRO

Page 243: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 243/719

9. El nombre que le pondremos a este tipo de formulario será el de ventanainterna.

10. 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 clicsobre ventanainterna.

11. Como se dijo anteriormente, las ventanas internas mostrarán simplemente la imagen que seabra. Para ello, solo hace falta introducir una etiqueta (J Label) que será la que contenga laimagen. Esta etiqueta debe ocupar toda la ventana, no tendrá ningún texto dentro, y sunombre será etiImagen.

La etiqueta se llamará etiImagen…

HAUTIRO

Page 244: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 244/719

  Y ocupará todo elJInternalFrame 

12. En las hojas guiadas anteriores, se ha hablado de la programación orientada a objetos, y seha comentado que los objetos poseen propiedades. Estas propiedades son básicamentevariables globales internas. Para poder acceder a estas propiedades, es necesario programarmétodos set.

Pues bien, la etiqueta etiImagen de la clase ventanainterna, no es mas que una propiedad dela 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.

13. Así pues, entra en la zona de código de laventanainterna y añade después del constructor elsiguiente método:

Método para acceder ala etiqueta etiImagen

HAUTIRO

Page 245: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 245/719

14. En la programación MDI, será habitual crear métodos para poder acceder a los distintoselementos 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 algomuy similar a la programación de diálogos propios que se vio en hojas anteriores.

15. 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 ventanaprincipal. Vuelve a ella haciendo doble clic sobre la ventanaprincipal en la zona de proyectos:

HAUTIRO

Page 246: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 246/719

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 amostrar 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:

16. Ya estamos preparados para programar las opciones del menú. Empezaremos por la opciónAbrir. 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 internadel programa. Lo primero que hace esta opción es mostrar el cuadro de diálogo Abrir, que seusa para indicar el fichero que se quiere abrir.

Se crea un objeto del tipo J FileChooser a través de la línea:

 J Fi l eChooser abr i r = new J Fi l eChooser ( ) ;

Luego se le da la orden de que muestre el cuadro de diálogo Abrir. La variable boton recogeel botón pulsado por el usuario (Aceptar / Cancelar)

i nt bot on = abr i r . showOpenDi al og( nul l ) ;

Luego, a través de un if, compruebo si se ha pulsado el botón Aceptar…

i f ( bot on==J Fi l eChooser . APPROVE_OPTI ON) {

}

Dentro de este if tendremos que programar la acción correspondiente a abrir la imagen ymostrarla en pantalla. Vamos a ello.

17. Programa dentro del if anterior lo siguiente. El código se comentará a continuación.

HAUTIRO

Page 247: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 247/719

 

Atento a este código, porque define la creación de ventanas internas, conteniendo la imagenelegida para mostrar. Es el corazón del programa…

La primera instrucción, crea una ventana interna llamada vi. Como puedes observar, es lacreación de un objeto vi de la clase ventanainterna.

vent anai nt erna vi = new ventanai nt erna( ) ;

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 ventana quepueda ser minimizada (setIconifiable) y finalmente que pueda ser cerrada (setClosable)

vi . set Resi zabl e( t r ue) ;vi . set Maxi mi zabl e( t r ue) ;vi . set I coni f i abl e( t r ue) ;vi . set Cl osabl e( t r ue) ;

Una vez definidas dichas características de la ventana interna, esta se añade al panel internode la ventana principal, al que le dimos el nombre panelInterno.

panel I nt er no. add( vi ) ;

Ahora hay que introducir la imagen elegida dentro de la etiqueta de la ventana. Primero hayque recoger el camino del fichero de imagen elegido en el cuadro de diálogo abrir .

St r i ng cami no = abr i r . get Sel ectedFi l e( ) . t oSt r i ng( ) ;

Ahora aprovechamos el método setImagen que programamos oportunamente dentro de laclase ventanainterna para situar dicha imagen dentro de la etiqueta.

vi . set I magen( cami no) ;

HAUTIRO

Page 248: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 248/719

 Colocamos el camino de la imagen en la barra de título de la ventana interna:

vi . set Ti t l e( cami no) ;

Finalmente hacemos visible la ventana interna.

vi . set Vi s i bl e( t rue) ;

18. 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 conteniendola imagen)

Observa la posibilidad de moverlas, cambiarlas de tamaño, maximizarlas, minimizarlas ycerrarlas.

Observa como todas las ventanas internas están encerradas dentro de los límites del panelinterno de la ventana principal:

19. Este proyecto se usará en las próximas hojas. Guárdalo.

HAUTIRO

Page 249: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 249/719

 

CONCLUSIÓN

La programación MDI consiste en crear aplicaciones capaces de abrir varios f icherosy 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 ynos servirá de plantilla para crear las ventanas internas de nuestro proyecto. Estaclase podrá tener métodos internos para acceder a los elementos de las ventanasinternas.

Desde la ventana principal, se crearán objetos de la clase ventana interna, y sedefinirá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 internapara poder manejarla con facilidad.

HAUTIRO

Page 250: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 250/719

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

 J DesktopPane, dentro del cual se depositan objetos del tipo J InternalFrame. Los objetos J InternalFrame son ventanas internas.

El programador debe añadir a su proyecto una clase heredada de J InternalFrame. Esta clase será laventana interna. El programador diseña el aspecto de esta ventana y añade los métodos queconsidere 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. Esteprograma 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 hansido abiertas en el J DesktopPane, 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”. Estaopció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 subarra de título de color azul, mientras que las demás aparecen en gris. La forma de seleccionar unaventana interna es simplemente hacer clic sobre ella.

Ventana interna activa

HAUTIRO

Page 251: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 251/719

 

1. Abre el proyecto VisorFotos que realizó en la hoja anterior.

2. Accede a la ventana principal del proyecto, haciendo doble clic sobre la claseventanaprincipal.

3. Accede al evento actionPerformed de la opción del menú Cerrar y programa lo siguiente:

4. Ejecuta el programa y comprueba el funcionamiento de la opción Cerrar . Se recomienda queabra 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 panelesespeciales preparados para contener ventanas internas (JInternalFrame) y poseen algunosmé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 laventana 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, ydentro de él metemos la ventana interna seleccionada en este momento, ejecutando elmétodo getSelectedFrame:

vent anai nt erna vact i va = ( vent anai nt erna) panel I nt erno. getSel ect edFr ame() ;

Ahora ya podemos trabajar con vactiva sabiendo que se refiere a la ventana activa. Lo que sehace a continuación es cerrar la ventana activa vactiva usando el método dispose típico de losobjetos de ventana.

Esto se hace, claro está suponiendo que haya alguna ventana activa, por eso se compruebaque getSelectedFrame no haya devuelto null, porque en ese caso es que no hay ventanainterna activada y por tanto no se puede cerrar.

6. Este código es muy común a la hora de trabajar en aplicaciones MDI. Primero se compruebacual es la ventana activa y luego se actúa sobre ella. Veamos ahora otro ejemplo. Añade almenú la opción Info:

HAUTIRO

Page 252: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 252/719

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 estemomento. Observa que el proceso es el mismo.

Primero se extrae la ventana activa, usando el método getSelectedFrame, almacenándola enuna variable llamada vactiva.

vent anai nt erna vact i va = ( vent anai nt erna) panel I nt erno. getSel ect edFr ame() ;

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 barrade título de la ventana y lo mostramos en un JOptionPane. (Recuerda que hemos programadola apertura de las ventanas internas de forma que en la barra de título aparezca el camino dela 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 J DesktopPane se puedeacceder a la ventana activa. Pero, ¿cómo puedo acceder a otra ventana interna aunque noesté activa?

Para hacer esto, la clase J DesktopPane posee un método llamado getAllFrames la cualdevuelve un vector conteniendo todas las ventanas internas que hay actualmente en el J DesktopPane.

11. Para practicar con el método indicado en el punto anterior, añade al menú Archivo una nueva

opción llamada Cerrar Todo:

HAUTIRO

Page 253: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 253/719

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 unvector conteniendo todas las ventanas internas actuales. En nuestro código, almacenamos

estas ventanas en un vector llamado v.

 J I nt er nal Fr ame v[ ] = panel I nt erno. getAl l Fr ames( ) ;

A continuación, recorremos todo el vector y vamos cerrando cada ventana almacenada en elvector.

Como puedes observar, este código hace que se cierren todas las ventanas de imagenabiertas.

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. Acontinuació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 enel evento actionPerformed de la opción y programa lo siguiente:

HAUTIRO

Page 254: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 254/719

 

17. Analicemos el código.

Observa de nuevo el uso de getAllFrames para almacenar todas las ventanas internasabiertas en un vector v:

 J I nt er nal Fr ame v[ ] = panel I nter no. getAl l Fr ames( ) ;

A continuación se recorre el vector y se asigna a cada ventana interna (cada elemento delvector) un tamaño con el método setSize y una posición con el método setLocation. Lasposiciones 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 queprimero abra varias ventanas y luego pulse esta opción.

HAUTIRO

Page 255: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 255/719

 

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 ventanasactualmente 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 lasventanas internas abiertas en el panel interno.

Gracias a estos dos métodos podemos acceder a las ventanas internas y actuar sobreellas.

HAUTIRO

Page 256: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 256/719

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 realizauna 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 darlelas órdenes al programa para que realice los cálculos. Estos elementos son las ventanas contodos 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 elementosde la ventana para que el usuario pueda verlos de forma cómoda. Estos elementos dondeaparecen 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 usuariocomunicarse con el programa. Estos elementos le permiten al usuario introducir datos, darórdenes al programa y visualizar los resultados obtenidos. Para entendernos, el GUI esbá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 seaintuitivo, fácil de usar. Un programa incómodo, por muy bueno que sea, será rechazado porel usuario.

Aparte del GUI, internamente el programa debe realizar una serie de cálculos para obtenerlos resultados pedidos por el usuario. No hace falta decir que la programación de estoscálculos debe ser precisa y correcta, ya que en caso contrario el programa no serviría paranada, 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…

Dat os, r enes Datos, r denes

Resu t a osResul t ados

Usuar i o GUII nt er f az de usuar i oVent anas, bot ones,menús, et c…

Pr ogr amaci óni nt er na:Procedi mi ent os,f unci ones, cl ases,et c…

HAUTIRO

Page 257: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 257/719

BASES DE DATOS

Ahora se va a dar una vuelta de tuerca más a lo indicado anteriormente añadiendo a todoeste entorno el concepto de Base de Datos.

Hay que tener en cuenta que la mayoría de las aplicaciones que solicitan las empresas sonprogramas 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 capacesde:

- 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 unacondición. Por ejemplo: visualizar las facturas del mes de enero, o mostrar losproductos que estén en stock, mostrar los trabajadores que hayan trabajado más de100 horas, etc…

- Realizar cálculos con los datos. Por ejemplo, calcular el total de ingresos entre dosfechas, calcular lo que hay que declarar de iva, etc…

Así pues, la mayor parte de las aplicaciones que encarga una empresa son aplicaciones quedeben 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 BASEDE DATOS.

Una Base de Datos no es solamente un conjunto de datos almacenados en un mismo sitio.Hay que tener en cuenta que para que estos datos sean fáciles de manipular, es necesarioque tengan una organización determinada. Una Base de Datos mal organizada se conviertesimplemente 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 labase 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 alos datos de una base de datos y realizar determinadas acciones sobre la base de datos.

HAUTIRO

Page 258: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 258/719

  Acceso a la BASE DE DATOS desde la apl icació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:

Analicemos el gráfico anterior:

1. El usuario le pide algo al programa. Por ejemplo el usuario quiere obtener un listadode 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. Dichode otra manera, el usuario da una orden.

3. Es posible que el usuario tenga que introducir algún dato. Por ejemplo, si quieresaber los ingresos del mes de enero, tendrá que introducir “enero” para que elprograma 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 deingresos 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óduloes el corazón del programa, el que se encarga de ejecutar las órdenes. Esta parte del

C l cul os,procesos,acci ones,

Acceso a l abase de dat os

Datos, órdenes,consul t as a l abase de dat os

Resul t adosResul t ados

Usuar o GUII nt er f az de usuar i oVent anas, bot ones,menús, et c…

Pr ogr amaci ni nt er na:Procedi mi ent os,f unci ones, cl ases,

et c…

Datos, órdenes,consul t as a l abase de datos

SQL Consul t ar l a basede dat os.

Añadi r , modi f i car ,el i mi nar dat os.

Resul t adosde l aconsul t aa l a basede datos

BASE

DE

DATOS

HAUTIRO

Page 259: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 259/719

programa analizará la orden y acto seguido buscará los datos necesarios en la basede datos.

6. Para acceder a la base de datos, el módulo de Proceso de Datos usará un lenguajeideado para el acceso a bases de datos llamado SQL.

7. Gracias al lenguaje SQL, el módulo de Proceso de Datos obtendrá los datosnecesarios que pedía el usuario (por ejemplo el listado de clientes) o bien los datosnecesarios 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á alGUI 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 bienrealizando acciones en ella.

GESTOR DE BASE DE DATOS

Un gestor de base de datos es un programa que nos permite crear bases de datos,mantenerlas, realizar consultas en ellas, etc…

A través de un gestor de base de datos podemos crear la base de datos que usará nuestroprograma.

Existen diversos programas gestores de base de datos, pero el que se usará será elprograma 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 otrogestor de base de datos que vaya a usar) es necesario pensar en el diseño que tendrá dichabase 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 unarepresentació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 eldiseño de bases de datos mientras que los Diagramas de Flujo nos facilitan el diseño dealgoritmos.

HAUTIRO

Page 260: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 260/719

EJERCICIO GUIADO Nº 1

Veremos en este ejercicio guiado como diseñar una base de datos a partir de la informaciónaportada 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 tipode reparaciones y limpieza en los locales de sus clientes.

A esta empresa le interesa almacenar los datos de sus clientes. Concretamente le interesaalmacenar el CIF de la empresa del cliente, el nombre de dicha empresa, la dirección y dosteléfonos de contacto.

Por otro lado, MANEMPSA quiere guardar los datos de los trabajadores que están enplantilla. Le interesa saber el nombre y apellidos de dichos trabajadores, el DNI, el sueldo yla 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 sehizo (fontanería, limpieza, electricidad, etc…) La cantidad cobrada por el servicio y uncomentario donde se indique qué acciones se realizaron.

Hay que indicar que cada servicio lo realiza un solo trabajador, y que cada servicio se realizaa una sola empresa.

Cada trabajador tiene asignado un coche de la empresa. Hay un coche por cada trabajador ycada trabajador siempre usa el mismo coche. A MANEMPSA le interesa almacenarinformación de cada coche. Le interesa almacenar la matrícula, la marca, el modelo y el añode compra.

MANEMPSA le encarga un programa para gestionar toda esta información. Se pide quediseñe la base de datos correspondiente que se usará en el programa. Represente dichabase 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 decaracterísticas.

Las entidades son aquellos elementos que juegan un papel importante en la base dedatos. 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.

HAUTIRO

Page 261: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 261/719

3. Atributos de una Entidad.

A la empresa le interesa almacenar información sobre las entidades. Es decir, leinteresa almacenar información sobre los clientes, los trabajadores, los servicios y loscoches.

La información que se quiere almacenar de cada entidad se denomina atributos deuna Entidad.

Por ejemplo, de los clientes, se quiere almacenar las siguientes propiedades: el CIFde la empresa, el nombre, etc...

A continuación se indican los atributos que se almacenarán de cada entidad, teniendoen 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.

4. Atributos clave.

Un Atributo Clave es aquel atributo cuyo valor no se repite y no puede estar vacíopara 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 nopuede 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 casospodemos elegir uno de los atributos de la entidad como atributo clave, en otros casosninguno de los atributos de la entidad podrá ser atributo clave y entonces tendremosque 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.

HAUTIRO

Page 262: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 262/719

 Entidad Servicios.

En el caso de la entidad Servicios, tenemos que ninguno de los atributos que poseepuede ser atributo clave. Observa:

- Dos servicios distintos pueden ser realizados en la misma fecha, por lo que dosservicios pueden tener fechas repetidas: la fecha no puede ser atributo clave.

- Dos servicios distintos pueden ser del mismo tipo, por los que dos servicios puedentener el mismo tipo: el atributo tipo no puede ser atributo clave.

- Dos servicios distintos podrían tener el mismo comentario, o no tener comentario enabsoluto: el atributo comentario no puede ser atributo clave.

- Dos servicios distintos podrían haber costado lo mismo, por lo que el atributocantidad no puede ser atributo clave.

No existe para la entidad Servicios un atributo que identifique cada servicio. En estoscasos 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 serviciorealizado. 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.

 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 cualesson 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 serelacionan.

Un Coche lo usa un Trabajador. Por lo tanto las entidades Coche y Trabajadores serelacionan.

Estas son las relaciones:

Coches --- Trabajador --- Servicios --- Clientes

HAUTIRO

Page 263: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 263/719

6. Cuando se establecen las relaciones, hay relaciones que están implícitas. Porejemplo, no se ha establecido una relación entre Trabajadores y Clientes:

“Un Trabajador hace trabajos a Clientes.”

No está establecida una relación directa entre ambas entidades, pero sí se relacionana través de la entidad Servicios:

 Trabajador --- Servicios --- Clientes

Así pues, en realidad, trabajadores y clientes se relacionan, a través de la entidadservicios.

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 unelemento de la segunda entidad, y viceversa.

En nuestro ejemplo, la relación entre Coches y Trabajadores es del tipo 1 a 1, ya queun coche pertenece a un solo trabajador, y ese trabajador solo usa ese coche.

Relaciones 1 a Muchos

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 solode 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 unservicio 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: uncliente solicita a lo largo de su existencia muchos servicios a la empresa, pero cadaservicio 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 larelación.

Por ejemplo, se ha visto que la relación Trabajadores – Servicios es del tipo 1 aMuchos. 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 muchoselementos de la segunda entidad, y viceversa.

En nuestro supuesto no tenemos ninguna relación de este tipo, pero supongamos lasiguiente relación entre Profesores y Cursos:

HAUTIRO

Page 264: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 264/719

 “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 delsupuesto, 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 losatributos claves entre las entidades relacionadas siguiendo ciertas reglas.

Las reglas son las siguientes:

- Primera Regla. Si dos entidades se relacionan de forma 1 – 1, entonces debe

pasarse el atributo clave de una de ellas a la otra, y viceversa.

En nuestro ejemplo, las entidades Coches y Trabajadores se relacionan de forma 1 a1. Esto implica que es necesario añadir el atributo clave de Coches a Trabajadores, yviceversa.

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, sedebe pasar el atributo clave de la entidad de la parte de la relación 1, a la entidad dela parte de la relación Muchas.

HAUTIRO

Page 265: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 265/719

En nuestro ejemplo, las entidades Trabajadores --- Servicios se relacionan de forma 1a 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 laentidad 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.

10. Claves Foráneas.

La razón de traspasar el atributo clave de una entidad a otra es que exista unelemento de unión, en ambas entidades relacionadas.

Cuando una entidad posee un atributo clave de otra entidad, se dice que ese atributoes una clave foránea.

Después de realizar estos traspasos, nuestras entidades quedan con los siguientesatributos.

Nota: se subraya con línea continua el atributo clave en cada entidad, y se subrayacon 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.

HAUTIRO

Page 266: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 266/719

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 derelaciones, y claves foráneas, todo esto se puede representar de forma gráfica comosigue:

El gráfico anterior es lo que se llama un Modelo Entidad Relación y es unarepresentació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

 Tr a a a or es Ser vi ci os

C ent es

CI F

nombr e

di recci ón

 Tf no1

 Tf no2mat r cu a

mar ca

model o

año

DNI

DNI

nomre

apel l i dos

suel do

ec a

mat r cu a

númer o

f echa

t i pocant i a

coment ar i o

DNI

CI F

1

1

1

1

MM

HAUTIRO

Page 267: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 267/719

 

CONCLUSIÓN

Las Bases de Datos son elementos vitales en la creación de aplicaciones paraempresas.

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.

HAUTIRO

Page 268: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 268/719

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 dedatos bien organizados.

La forma de organizar estos datos es a través de tablas. Estas tablas contendrán lainformación que se desea almacenar.

Estas tablas se relacionan entre sí, de forma que podamos extraer más información uniendolas tablas.

A las bases de datos que se organizan a través de tablas que se relacionan entre sí se lasdenomina 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 paratomarlo 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 comoreferencia el Modelo E-R .

Una vez que tenemos la base de datos representada en forma de tablas, solo tendremosque introducirlas en un programa Gestor de Bases de Datos como por ejemplo Access.

HAUTIRO

Page 269: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 269/719

EJERCICIO GUIADO Nº 1

Dado el Modelo E-R creado en la hoja anterior y que se muestra a continuación, crearemoslas tablas necesarias que formarán parte de la base de datos:

1. Tablas de la base de datos.

Primero hay que tener en cuenta que existirán tantas tablas en la base de datoscomo 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 queguardamos de cada elemento. A esta información que se guarda de cada elementose la denomina Campo.

Los Campos se corresponden con las distintas columnas de la tabla. En un ModeloE-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 campoclave para cada tabla.

Coches

 Tr a a a or es Ser vi ci os

Cl i ent es

CI F

nom re

di recci ón

 Tf no1

 Tf no2mat r cu a

mar ca

model o

año

DNI

DNI

nomre

apel l i dos

suel do

f echa

mat r cu a

númer o

f echa

t i pocant i dad

coment ar i o

DNI

CI F

1

1

1

1

M

M

HAUTIRO

Page 270: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 270/719

 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

Tabla Trabajadores

DNI Nombre Apell idos Sueldo Fecha Matrícula

Tabla Servicios

Número Fecha Tipo Cantidad Comentario DNI CIF

Tabla Clientes

CIF Nombre Dirección Tfno 1 Tfno 2

4. Estas tablas ya se pueden relacionar gracias a que contienen las distintas clavesforáneas, las cuales añadimos en el momento de analizar las relaciones en el ModeloE-R.

Sin embargo, de momento, no es necesario hacer nada más.

HAUTIRO

Page 271: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 271/719

 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 DNI3322-ASR SEAT Ibiza 2000 21.123.123-A4433-ABB CITROEN Saxo 2001 12.321.567-B

Tabla Trabajadores

DNI Nombre Apell idos Sueldo Fecha Matrícula21.123.123-A Ana Ruiz 1200 02-03-2002 3322-ASR12.321.567-B J uan Pérez 1120 04-05-2002 4433-ABB

Tabla Servicios

Número Fecha Tipo Cantidad Comentario DNI CIF1 12-04-2004 Limpieza 300 21.123.123-A B112232122 22-05-2005 Fontanería 238 Arreglo

tuberías12.321.567-B B22334466

3 21-12-2005 Electricidad 130 Revisióncableado

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 2B11223212 Seguros Segasa C/Ancha 2 956344334 629234323B22334466 Academia La Plata C/La Plata 10 956302323B33221111 Papelería Cuatro C/Larga 8 956305060

Si observas las tablas y sus claves foráneas, puedes llegar a conclusiones queafectan a varias tablas. Por ejemplo:

Observando las tablas Coches y Trabajadores, puedes llegar a la conclusión de queAna conduce el SEAT y J uan el Citroen.

Observando las tablas Servicios, Clientes y Trabajadores, puedes llegar a laconclusión de que el servicio de Fontanería realizado el 22 de mayo de 2005 lorealizó el trabajador Juan a la empresa Academia La Plata.

Etc.

Estas conclusiones se producen al relacionar las tablas gracias a la existencia decampos de unión entre ellas (claves foráneas)

HAUTIRO

Page 272: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 272/719

 

CONCLUSIÓN

Las Bases de Datos que se usarán son del t ipo Relacional.

Una Base de Datos Relacional está formada por tablas, que son los elementos quecontienen la información.

Una vez realizado el Modelo E-R, resulta muy sencillo hacer el traspaso a tablas. Solose 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.

HAUTIRO

Page 273: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 273/719

EJERCICIO GUIADO. BASES DE DATOS. Relaciones Muchas a Muchas

El prob lema de las relaciones Muchas a Muchas

En las hojas anteriores se ha visto que entre las entidades se pueden establecer relacionesde 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 laaparició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 eintroducirla en un programa gestor de bases de datos.

Así pues las relaciones Muchas a Muchas se consideran relaciones “prohibidas” que debenser evitadas a toda costa.

Básicamente, las relaciones Muchas a Muchas pueden ser anuladas convirtiéndolas enrelaciones 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 algunarelación Muchas a Muchas.

En esta hoja guiada se verá qué hacer cuando aparezca una relación Muchas a Muchas

HAUTIRO

Page 274: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 274/719

EJERCICIO GUIADO Nº 1

SUPUESTO “ACADEMIA”

Interesa almacenar cierta información sobre una academia. Concretamente se quierealmacenar la siguiente información:

Interesa almacenar información sobre los alumnos de la academia. Interesa almacenar elnombre del alumno, los apellidos, el DNI y la fecha de nacimiento.

Interesa almacenar información sobre los cursos que se da en la academia. Interesaalmacenar el código del curso, el nombre del curso, el número de horas y el nombre delprofesor que lo imparte.

En la academia hay una pequeña biblioteca. Interesa almacenar información sobre los librosde 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 lespuede hacer préstamos.

PASO A MODELO ENTIDAD – RELACIÓN

1. Entidades participantes:

Estudiando el supuesto anterior, se ve claro que existen tres entidades claras:alumnos, cursos y libros.

2. Atributos de cada entidad y Atributo clave:

No es complicado deducir los atributos de cada entidad. Son los siguientes(subrayado el atributo clave):

AlumnosNombreApellidosDNIFecha de nacimiento

CursosCódigo del cursoNombre del cursoNúmero de horasNombre del profesor

LibrosCódigo del libro

 TítuloAutor

 Tema

HAUTIRO

Page 275: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 275/719

3. Relaciones:

Veamos las relaciones:

Los “alumnos hacen cursos” por lo que la entidad Alumnos está relacionada conCursos.

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 apuntanmuchos alumnos. Es una relación Muchas a Muchas:

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 otrolado, un mismo libro puede ser prestado a varios alumnos (No a la vez, claro está. Ellibro 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 aMuchas 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 reconvertidasa relaciones Muchas a 1 (o 1 a Muchas) para hacerlas desaparecer.

Al umnos Li brosM M

Al umnos CursosM M

HAUTIRO

Page 276: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 276/719

 6. Existencia de entidad intermedia.

La aparición de una relación Muchas a Muchas suele ser debido a un “mal diseño dela base de datos”. Este mal diseño viene dado por la falta de informaciónproporcionada por el enunciado del supuesto.

Esto será habitual, ya que el cliente que nos encarga el programa no siempre seexplica con la claridad que desearíamos.

La aparición de relaciones Muchas a Muchas es debido a la existencia de unaentidad intermedia que no hemos tenido en cuenta, ya sea por la falta deinformación del enunciado, o bien porque se ha dado por sabida.

Esta entidad intermedia está entre las dos entidades que se relacionan de formaMuchas a Muchas. Al no tener en cuenta esta entidad intermedia, el resultadoproducido es la aparición de la relación Muchas a Muchas:

Así pues, cuando aparezca una relación Muchas a Muchas, tendremos que averiguarcual es la entidad intermedia que sin querer hemos ignorado, y añadirla al modelo. Alhacer 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 labase 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 quehabíamos pasado por alto, y que nos resuelve el problema de la relación Muchas aMuchas.

Veamos que sucede si ponemos la entidad matrículas entre las entidades alumnos ycursos.

Aparecen dos nuevas relaciones: “los alumnos se matriculan”, y “una matrícula espara un curso”.

Al umnos CursosMatr cul as

Ent i dad 1 Ent i dad 2M M

Ent i dad I nt ermedi a( i gnorada)

HAUTIRO

Page 277: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 277/719

8. Estudio de las nuevas relaciones.

Cuando añadimos la entidad intermedia a la relación Muchas a Muchas, aparecendos 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”.

Cada vez que se rellena una matrícula es para un solo curso. (Si pudieras leer elformulario que rellena el alumno, verías que en el papel se indica el curso al que seapunta, 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, estarelació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 dosmatrículas con el mismo número.

En la entidad matrículas se puede almacenar otras informaciones, como por ejemplolo que paga el alumno por hacer el curso.

A umnos CursosMat r cu asM1 M 1

A umnos CursosMat r cu asM1

HAUTIRO

Page 278: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 278/719

  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 laparte Muchas.

Si observas la relación…

…tendremos que pasar el campo DNI desde la entidad alumnos a matrículas, y elcampo código curso desde la entidad cursos a matrículas, debido a la reglacorrespondiente a las relaciones 1 a Muchas.

Por lo tanto, la entidad Matrículas del ejemplo quedará con los siguientes atributos:

MatrículasNúmero (atributo clave)PagoNota finalDNI (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 daremoscuenta que existe una entidad intermedia que hace referencia a cada préstamo dellibro.

Es decir, la entidad intermedia que hemos pasado por alto es Préstamos, la cualguardará información sobre los préstamos de los libros.

Con esta entidad, la relación queda así:

Al umnos Li brosPr st amos

Al umnos Li brosM M

Al umnos CursosMatr cul asM1 M 1

HAUTIRO

Page 279: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 279/719

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 cadapré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 enmomentos diferentes), pero cada préstamo en concreto hace referencia a un librosolamente. Relación 1 a Muchas.

Para entender estas relaciones, imagine que cada vez que se solicita un préstamo setiene que rellenar una ficha. En esta ficha se escribe el nombre del alumno y elnombre del libro prestado.

Un alumno tendrá muchas fichas (si ha pedido prestado muchos libros), pero unaficha concreta solo tiene el nombre de un alumno.

Por otro lado, un libro aparecerá en muchas fichas (ya que el libro es prestadomuchas 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íahablar 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 dela 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 entresí.

Claves foráneas.

Hay que añadir a la entidad préstamos los atributos DNI y código de libro, debido alas reglas de claves foráneas de las relaciones 1 a Muchas (recuerde que hay quepasar el atributo clave desde la parte 1 a la parte Muchas en estas relaciones)

Otros atributos interesantes.

Se puede añadir a esta entidad atributos como fecha de préstamo, fecha dedevolución para controlar aún mejor la información de cada préstamo en concreto.

Al umnos Li brosPr st amosM M 11

HAUTIRO

Page 280: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 280/719

 Por lo tanto, la entidad Préstamos del ejemplo quedará con los siguientes atributos:

PréstamosNúmero (atributo clave)Fecha préstamoFecha devoluciónDNI (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, elModelo Entidad Relación resultante será el siguiente (subrayados con línea continualos atributos clave, subrayados con rayas los atributos claves foráneas):

Se puede observar que ya no hay relaciones Muchas a Muchas, y que han aparecidodos nuevas entidades que no estaban contempladas en un principio en el enunciado.

Al umnos Li brosPr st amosM M 11

Cursos

M

M

Matr cul as

1

DNI

nombr e

apel l i dos

f echa

DNI

DNI

códi gocurso

nom r e

pr ofesor

hor as

códi gocur so

n mer o

pago

nota

n mer o

f echaprést amo

f echadevol uci ón

códi gol i br o códi go

l i br o

t í t ul o

aut or t ema

HAUTIRO

Page 281: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 281/719

 

CONCLUSIÓN

 Al real izar el diseño de una Base de Datos pueden aparecer relaciones Muchas aMuchas.

Las Relaciones Muchas a Muchas están prohibidas ya que pueden causar muchosproblemas.

Una relación Muchas a Muchas aparece debido a que hay una entidad intermedia queno ha sido identifi cada.

 Al añadir la entidad intermedia, desaparece la relación Muchas a Muchas y aparecendos relaciones 1 a Muchas, soluc ionándose el prob lema.

Será necesario añadir a la nueva entidad su atributo clave y las claves foráneasdebidas a las relaciones 1 a Muchas.

También puede ser interesante añadir a la nueva entidad atributos que aporten másinformación a la base de datos.

HAUTIRO

Page 282: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 282/719

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 ModeloEntidad Relación en la que representamos cada uno de los elementos que participan en labase de datos (entidades), sus características principales (atributos) y las relaciones queexisten entre ellos.

Una vez finalizado el esquema Entidad Relación de la base de datos, se realiza unarepresentació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 proporcionadapor 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 basede 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, modificardatos, realizar consultas, etc)

Es necesario tener claro el diseño (organización en tablas) de la base de datos antes depoder 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 lasbases de datos de sus aplicaciones.

En los ejercicios guiados que vendrán a continuación se usará el gestor Microsoft Access, elcual permitirá la creación de forma sencilla de bases de datos adecuadas para lasaplicaciones 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 labase de datos usando el lenguaje SQL, vital para el manejo de la base de datos desde laaplicación.

Por otro lado facilita mucho el manejo de la base de datos, la instalación de ésta en elordenador del cliente y las modificaciones posteriores, además de ser un gestor de base dedatos muy extendido y conocido.

En los ejemplos que vendrán a continuación, se usará la versión 2003 de Microsoft Access.

HAUTIRO

Page 283: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 283/719

EJERCICIO GUIADO Nº 1

En hojas anteriores se creó la base de datos de la empresa MANEMPSA, una empresaencargada de proporcionar servicios de mantenimiento a otras empresas.

Después de realizar el Modelo Entidad – Relación y de hacer el traspaso a tablas, elresultado fue el siguiente:

Tabla Coches

Matrícula Marca Modelo Año DNI

Tabla Trabajadores

DNI Nombre Apell idos Sueldo Fecha Matrícula

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.

HAUTIRO

Page 284: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 284/719

2. Para crear una base de datos nueva, active la opción del menú Archivo – Nuevo. Yen 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 datosy el nombre que le dará al fichero. Para nuestro ejemplo, elija la carpeta MisDocumentos para guardar la base de datos y el nombre que le asignaremos seráMANEMPSA.

HAUTIRO

Page 285: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 285/719

 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 laventana 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 acontinuación).

Tabla Coches

Matrícula Marca Modelo Año DNI

Para ello, haga lo siguiente:

HAUTIRO

Page 286: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 286/719

 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 puedeser representada con guiones, espacios, etc.

HAUTIRO

Page 287: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 287/719

 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 exageradamentegrande para una matrícula que no suele tener más de 10 caracteres, según larepresentemos.

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 quecontiene letras y como tamaño dejaremos 50.

HAUTIRO

Page 288: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 288/719

 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 delcoche, 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 devista matemático.

En la parte inferior estará definido el tipo Entero largo, que indica que los númerosque se introduzcan en este campo serán de tipo entero y no tendrán decimales.

HAUTIRO

Page 289: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 289/719

 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 encuenta que un DNI contiene una letra, y puede contener espacios o guiones según laforma en que lo represente. Esto hace que un DNI no sea un número válido desde unpunto 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 admitenpuntos.

El tamaño del DNI será de 15:

HAUTIRO

Page 290: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 290/719

 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 lahora de crear el modelo e-r. Así pues, haz clic sobre matrícula y pulsa el botón conforma de llave amarilla, llamado Clave Principal. Aparecerá una llave pequeña al ladodel 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 yguardarla. 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”.

HAUTIRO

Page 291: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 291/719

 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.

HAUTIRO

Page 292: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 292/719

 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ñose muestra a continuación:

Tabla TrabajadoresDNI Nombre Apell idos 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 yel tamaño de cada uno lo dejaremos en 50.

HAUTIRO

Page 293: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 293/719

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 aDoble. 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áncantidades monetarias. Este tipo de datos se denomina Moneda, pero no será usado enlos ejemplos. En sustitución, se usará el tipo Número que cumple perfectamente con elmismo cometido.

23. Añade ahora el campo “Fecha”, el cual hace referencia a la fecha de entrada en laempresa 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 lafecha de entrada en la empresa y no a la fecha de nacimiento del trabajador, porejemplo:

HAUTIRO

Page 294: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 294/719

 24. Añade ahora el campo “Matrícula”.

Se recuerda que este campo es una clave foránea y hace referencia a la matrículadel coche que conduce el trabajador. Este campo también se encuentra en la tablaCoches (es el campo clave de la tabla Coches), así pues se definirá aquí de la mismaforma que está definido en la tabla Coches: tipo texto y 10 de tamaño:

25. Haz que el campo DNI sea el campo clave:

26. Cierra la ventana de diseño y guarda la tabla con el nombre Trabajadores:

HAUTIRO

Page 295: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 295/719

 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

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) yasignaremos un tamaño de 15.

HAUTIRO

Page 296: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 296/719

 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 lomismo con el campo “Tfno2”:

Nota: Los campos “Teléfonos” suelen causar mucha confusión, ya que se pueden definir conel tipo de datos Número o Texto.

 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.

HAUTIRO

Page 297: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 297/719

 33. Defina como campo clave el CIF:

34. Cierre y guarde la tabla con el nombre “Clientes”. Ya tiene tres de las cuatro tablas dela base de datos.

35. Queda por añadir la tabla “Servicios” a la base de datos. Se muestra esta tabla acontinuación:

Tabla Servicios

Número Fecha Tipo Cantidad Comentario DNI CIF

36. Activa la opción Crear Tabla en Vista Diseño.

HAUTIRO

Page 298: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 298/719

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 tengaun número correlativo.

Este tipo de datos nos ahorra el tener que estar asignando un número cada vez quese 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 elnú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 dedatos Texto. Su tamaño será de 50.

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.

HAUTIRO

Page 299: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 299/719

 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 255caracteres a un campo de tipo Texto. Por lo tanto, si está previsto que se escribamucho 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 contenergrandes cantidades de texto. Este tipo de datos se denomina Memo, y será así comodefinamos el campo Comentario:

42. Ahora hay que añadir los dos últimos campos, los cuales son claves foráneas quepermitirán relacionar la tabla Servicios con las tablas Clientes y Trabajadores. Estoscampos 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:

45. Los campos están ya definidos. Ahora activa la opción campo clave para el campoNumero.

HAUTIRO

Page 300: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 300/719

 

46. Finalmente cierre y guarde la tabla con el nombre Servicios. Y ya tendrá creadas lascuatro tablas de la base de datos.

HAUTIRO

Page 301: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 301/719

47. Como prueba, se pueden introducir algunos datos en las tablas de esta base dedatos directamente desde aquí. Introduciremos dos trabajadores. Haz doble clicsobre 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:

Luego cierra la ventana de introducción de coches.

HAUTIRO

Page 302: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 302/719

 49. Haz ahora doble clic sobre la tabla Clientes. Introduciremos los datos de varios de los

clientes de la empresa:

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 ellola tabla Servicios e introduzca los siguientes datos (observa como los númerosaparecen de forma automática en el campo Número, esto es debido al tipo de datos Autonumérico)

51. Los datos que se introducen en una tabla se denominan registros, así pues, si latabla 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 quecontiene e incluso hemos introducidos algunos registros en las tablas para nodejarlas 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 lacarpeta Mis Documentos y busque allí el fichero MANEMPSA. Si hace doble clicsobre el fichero volverá a abrir la base de datos.

HAUTIRO

Page 303: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 303/719

 NOTA: Al abrir un fichero de base de datos de Access de la versión 2003 el programale hará varias preguntas, las cuales tendrá que contestar de la siguiente forma:

 Advertencia de seguridad, las expresiones no seguras no están bloqueadas ¿Deseabloquearlas?  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 nuestroprograma 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 seusará en posteriores hojas guiadas.

NOTA. El programa Microsoft Access es muy amplio y contiene múltiples opciones demanejo de bases de datos, aunque solo lo usaremos para la creación de tablas y deconsultas.

Se recomienda al alumno buscar información adicional sobre este programa. En Internetpodrá encontrar múltiples tutoriales de aprendizaje de Access.

HAUTIRO

Page 304: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 304/719

 

CONCLUSIÓN

La información caótica proporcionada por el cliente que encarga el programa seorganiza en tablas. Estas tablas conforman la base de datos.

La base de datos hay que introducir la en un programa gestor de bases de datos, comopor ejemplo Access.

En Access se crea el fichero que contendrá la base de datos, y dentro de él se diseñanlas 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 t ipo 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.

Las tablas contendrán filas de información llamadas registros. Es posib le introducir 

registros di rectamente en las tablas creadas desde Access.

El fichero de base de datos creado desde Access será usado por la aplicación java debase de datos.

HAUTIRO

Page 305: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 305/719

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 cumpledeterminados requisitos.

Por ejemplo, podría interesar el visualizar las ventas realizadas entre una fecha inicial y otrafinal, o ver las ventas hechas a un cliente en concreto, o ver el listado de trabajadores quetienen turno de mañana, etc…

Hay que tener en cuenta que las tablas de una base de datos contendrán muchainformación, pero no siempre necesitaremos acceder a toda ella. Por eso, la realización deconsultas es una acción habitual en una base de datos.

Por otro lado, la creación de consultas nos permite averiguar determinada información queno 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 unacantidad 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 almacenadasen 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 datosde Access.

HAUTIRO

Page 306: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 306/719

EJERCICIO GUIADO Nº 1

1. Abra el fichero de base de datos MANEMPSA que hizo en la hoja anterior, contenidoen 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 haycreadas hasta ahora (ninguna, claro está)

No hay consultasaún

HAUTIRO

Page 307: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 307/719

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 tablasque se quieren consultar:

HAUTIRO

Page 308: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 308/719

 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 partesuperior izquierda con los campos de la tabla Servicios:

7. Como no queremos consultar más tablas podemos pulsar el botón Cerrar.

8. Supongamos que queremos ver aquellos servicios que hayan tenido un coste mayorde 200 euros. Interesa ver la fecha del servicio, el tipo y la cantidad.

Aparece un recuadro con loscampos de la tabla Servicios

HAUTIRO

Page 309: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 309/719

 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 casillasde la fila Campo hasta conseguir que aparezcan los tres campos:

HAUTIRO

Page 310: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 310/719

 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ónen la consulta.

Accede a la casilla de Criterios que se encuentra debajo del campo Cantidad yescribe allí la siguiente condición:

> 200

Observa:

Estamos indicando que solo se quiere visualizar aquellos servicios cuya cantidadcobrada sea mayor de 200.

HAUTIRO

Page 311: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 311/719

 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 quecumplir:

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:

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:

 Tabla a consultar…

Campos a visualizar…

Condiciones

HAUTIRO

Page 312: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 312/719

 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:

16. Vamos a mejorar un poco más la consulta. Interesaría que apareciera el nombre deltrabajador que ha realizado el servicio, así pues hay que añadir una nueva tabla a laconsulta: 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:

HAUTIRO

Page 313: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 313/719

 18. Aparecerá de nuevo el listado de tablas inicial:

19. Elige la tabla Trabajadores y pulse el botón Agregar . Observarás como aparece unnuevo recuadro en la parte superior izquierda con los campos de la tablaTrabajadores.

20. La línea que aparece entre ambas tablas es la relación establecida a través delcampo de unión DNI. Debido a que la tabla servicios tiene incluida la clave foráneaDNI, ambas tablas pueden ser relacionadas.

HAUTIRO

Page 314: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 314/719

 

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.

HAUTIRO

Page 315: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 315/719

 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 elnombre 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 harealizado el servicio. Para ello, tendremos que añadir la tabla Clientes que es la quecontiene este campo.

Activa de nuevo el botón Mostrar Tabla y agrega la tabla Clientes.

HAUTIRO

Page 316: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 316/719

 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.

26. Es posible reorganizar las tablas para que las relaciones se vean mejor. Haz clicsobre 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.

HAUTIRO

Page 317: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 317/719

 

28. Vuelve a la vista de diseño.

29. Una vez que una consulta está finalizada, la podremos guardar para usosposteriores. Para ello, cierra la consulta pulsando en el botón cerrar de la ventana dediseño.

HAUTIRO

Page 318: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 318/719

 

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. Puedesvisualizar el contenido de esta consulta siempre que quieras haciendo doble clic

sobre ella.

HAUTIRO

Page 319: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 319/719

32. Vuelve a la ventana principal cerrando la ventana de visualización de la consulta.

33. En Access puedes diseñar y guardar todas aquellas consultas que puedan resultarmás interesantes para el trabajo diario.

Las consultas, aunque no son tablas, se comportan como tal. Básicamente, se puededecir que una consulta es una subtabla, que muestra una parte de la información dela base de datos.

HAUTIRO

Page 320: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 320/719

CRITERIOS EN CONSULTAS

En el ejercicio guiado anterior, se realizó una consulta que mostraba los servicios de más de200 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

Campos Coste

Criterios >200

Campos Coste

Criterios >=200

Campos Coste

Criterios <200

Campos Coste

Criterios <=200

Buscar aquellos registros cuyo Coste sea igual a 200

Buscar aquellos registros cuyo Coste sea mayor a 200

Buscar aquellos registros cuyo Coste sea mayor o igual a 200

Buscar aquellos registros cuyo Coste sea menor a 200

Buscar aquellos registros cuyo Coste sea menor o igual a 200

HAUTIRO

Page 321: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 321/719

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

< 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ásextensas. Observa los siguientes ejemplos:

Campos Nombre

Criterios J osé Manuel

Campos Nombre

Criterios J osé*

Buscar aquellos registros cuyo Coste sea distinto de 200

Buscar aquellos registros cuyo Coste esté entre 200 y 300

Buscar aquellos registros cuyo Nombre sea exactamente JoséManuel:

- Encontraría a los que tengan de nombre J osé Manuel.- No encontraría a los que se llamaran J osé a secas, o

Manuel a secas.

Buscar aquellos registros cuyo Nombre empiece por J osé:

- Encontraría a los J osé Manuel, J osé María, J osé Luis, etc.- No encontraría a los Manuel J osé, Antonio J osé, etc.

HAUTIRO

Page 322: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 322/719

 Campos Nombre

Criterios *José

Campos Nombre

Criterios *José*

Criterios complejos

Si se quiere buscar a aquellos registros que cumplan varios criterios a la vez, tendrán queescribirse dichos criterios en la misma fila. Por ejemplo:

Campos Nombre Sueldo

Criterios *J osé >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 *J osé >1000300

Antonio

NOTA. La creación de consultas en Microsoft Access es un campo amplio. Se recomienda alalumno buscar información adicional sobre el tema. En Internet podrá encontrar múltiplestutoriales de aprendizaje de Access.

Buscar aquellos registros cuyo Nombre termine en J osé:

- Encontraría a los Manuel J osé, Antonio J osé, María J osé,etc.

- No encontraría a los osé Manuel, osé Antonio, etc.

Buscar aquellos registros cuyo Nombre contenga la palabra J osé en cualquier parte:

- Encontraría a los J osé Manuel, Antonio J osé, Maríaosé, Antonio osé de los Santos, etc.

Busca aquellas personas que tengan un nombre quetermine en J osé y cobren más de 1000 euros.

Muestra aquellas personas que tengan un nombre quetermine en J osé y cobren más de 1000 euros.

Muestra también aquellas personas que cobran 300 euros

 Y muestra también aquellas personas que se llamenAntonio.

HAUTIRO

Page 323: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 323/719

 

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 uncriterio determinado.

En Access se pueden diseñar consultas y almacenarlas permanentemente.

 Access t iene una zona de consultas donde encontrará el l is tado de las consultas yacreadas y donde podrá crear nuevas consultas.

Para crear una consul ta 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 laaplicación programada en Java, como si fueran tablas normales y corrientes.

HAUTIRO

Page 324: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 324/719

EJERCICIO GUIADO. BASES DE DATOS. SQL

Lenguaje de Consul ta 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 otrascosas):

- 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, perono devuelven nada al programa java.

Por otro lado, cuando se da una orden de realizar una consulta, la base de datos nosdevuelve 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, oeliminándolos. También puede extraer información de ella accediendo a las consultas de labase de datos o realizando nuevas consultas.

A continuación se comentarán las reglas básicas de este lenguaje.

Programa J ava

Base deDatos

Consulta SQL

Resultado de la consulta

Programa J ava

Base deDatos

ÓRDENES SQLañadir, modificar, eliminar

HAUTIRO

Page 325: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 325/719

Creación de consultas en SQL

Se empezará estudiando como realizar consultas sobre una base de datos usando ellenguaje SQL (más adelante se verá como realizar consultas de acción: añadir, modificar

eliminar)

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 vi sual i zarFROM t abl as donde se encuent r an di chos camposWHERE condi ci ones que deben cumpl i r l os r egi st r osORDER BY f orma de ordenar l a consul t a;

Como puede ver, una consulta en SQL tiene cuatro partes (SELECT, FROM, WHERE yORDER BY) de las cuales solo las dos primeras son obligatorias.

Se debe mantener el orden indicado. Es decir, primero SELECT, luego FROM, luegoWHERE 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” 

SELECT *FROM cl i ent es;

Observa, el * significa ver todos los campos. En el FROM se indica la tabla que se quierever. 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 cl i ent es. CI F, cl i ent es. nombr e, cl i ent es. di r ecci onFROM cl i ent es;

Observa como se indican los campos a visualizar en la cláusula SELECT. Se indica la tablay luego el nombre del campo, separados por un punto.

HAUTIRO

Page 326: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 326/719

 Visualizar solo aquellos registros de la tabla que cumplan una condición

Ejemplo: “Visualizar todos los campos de aquellos trabajadores que cobren un sueldosuperior a los 1000 euros”

SELECT *FROM t r abaj ador esWHERE t r abaj adores. suel do > 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 unsueldo entre 800 y 2000 euros” 

SELECT t r abaj ador es. nombr e, t r abaj ador es. apel l i dos, t r abaj ador es. suel doFROM t r abaj ador es

WHERE t r abaj ador es. suel do 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 posibilidadesque tenemos a la hora de indicar criterios en la cláusula WHERE

Visualizar el contenido de una tabla ordenado

Ejemplo: “Visualizar la tabla de trabajadores ordenada por sueldo de menor a mayor” SELECT *FROM t r abaj ador esORDER BY t r abaj adores. suel do ASC;

Observa el uso de la cláusula ORDER BY para indicar que se ordene por sueldo. La palabraASC indica “ascendente” (de menor a mayor)

Ejemplo: “Visualizar nombre, apellidos y sueldo de los trabajadores ordenados por sueldos

de mayor a menor”

SELECT t r abaj ador es. nombr e, t r abaj ador es. apel l i dos, t r abaj ador es. suel doFROM t r abaj ador esORDER BY t r abaj adores. suel do DESC;

Observa el uso de DESC para indicar una ordenación descendente.

HAUTIRO

Page 327: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 327/719

 Ejemplo: “Visualizar nombre, apellidos y sueldo de los trabajadores que cobren más de 1000euros, ordenados por apellidos y nombre”

SELECT t r abaj ador es. nombr e, t r abaj ador es. apel l i dos, t r abaj ador es. suel doFROM t r abaj ador es

WHERE t r abaj adores. suel do > 1000ORDER BY t r abaj adores. apel l i dos ASC, t r abaj adores. nombre ASC;

Observa aquí como ordenar por dos campos, primero por apellidos y luego por nombre. Estosignifica que aquellos trabajadores que tengan el mismo apellido serán ordenados pornombre.

Visualizar datos de varias tablas

Ejemplo: “Visualizar todos los servicios. Interesa que aparezca el nombre del trabajador quehizo el servicio, la fecha del servicio realizado y el tipo de servicio”

SELECT t r abaj ador es. nombr e, ser vi ci os. f echa, ser vi ci os. t i poFROM t r abaj ador es, ser vi ci osWHERE t r abaj adores. DNI =servi ci os. DNI ;

Observa aquí como se indica en la cláusula FROM las dos tablas de las que extraemosdatos. Es importante que te fijes también en como se unen ambas tablas igualando en laclá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 quehizo el servicio, el tipo de servicio y el nombre del cliente al que se le hizo el servicio”

SELECT t r abaj ador es. nombr e, ser vi ci os. t i po, cl i ent es. nombr eFROM t r abaj ador es, ser vi ci os, cl i ent esWHERE t r abaj ador es. DNI =servi ci os. DNI AND cl i ent es. CI F=servi ci os. CI F;

Observa aquí una consulta sobre tres tablas, las cuales aparecen en el FROM. Es necesarioindicar en la cláusula WHERE los campos de unión. La tabla Trabajadores se relaciona conla tabla Servicios a través del campo DNI, y la tabla Trabajadores se relaciona con Clientes atravé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 fechadel servicio, el nombre del cliente y el coste ordenado por cantidad”

SELECT ser vi ci os. f echa, cl i ent es. nombr e, ser vi ci os. cant i dadFROM ser vi ci os, cl i ent esWHERE servi ci os. CI F=cl i ent es. CI F AND servi ci os. cant i dad>200ORDER BY ser vi ci os. cant i dad;

Observa como la cláusula WHERE contiene por un lado la condición de unión de ambastablas y por otro lado la condición que se busca (cantidad >200)

HAUTIRO

Page 328: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 328/719

 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 crearcondiciones 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(para fechas)

WHERE cantidad >200

WHERE fecha >#8-5-2006#

 

>= 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 ytextos)

WHERE cantidad <>200

WHERE fecha <>#8-5-2006# WHERE tipo <>‘Limpieza’

Between...and Entre valor1 y valor2(aplicable a números yfechas)

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 ‘*J ose’

HAUTIRO

Page 329: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 329/719

 Like ‘*cadena*’ Que contenga cadena 

(aplicable a textos)WHERE nombre LIKE ‘*J ose*’

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 lasdos condiciones que une.WHERE cantidad >200 AND tipo =‘Limpieza’

(Debe cumplirse que la cantidad sea mayor de 200 y queel tipo de servicio sea Limpieza)

OR Basta con que se cumplauna sola de las doscondiciones que une.

WHERE cantidad >200 OR tipo =‘Limpieza’

(Basta con que la cantidad sea mayor de 200, o que el tipode servicio sea Limpieza para que se cumpla la condición)

NOT Si no se cumple la

condición, la condiciónglobal se cumple.

WHERE NOT cantidad >200

(Se cumple la condición si la cantidad NO es mayor de200)

Forma de indicar los valores

Como puedes observar en los ejemplos anteriores, tendrás que tener en cuenta lassiguientes reglas para indicar valores:

Valores numéricos

Indica los valores numéricos tal cual, teniendo en cuenta que debes usar el punto decimalcuando quieras representar decimales.

Ejemplo:

WHERE cant i dad > 200. 12

Valores de texto

Los valores de texto se indican rodeándolos entre comillas simples: ‘

Ejemplos:

WHERE nombr e = ‘ J ose’

HAUTIRO

Page 330: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 330/719

 WHERE di r ecci ón LI KE ‘ *aveni da*’

Valores de fecha

Las fechas se indican rodeándolas entre almohadillas #. Se debe tener en cuenta que lasfechas deben indicarse separadas por guiones – o barras / y que su formato debe ser elsiguiente:

Mes – Dia – Año

Ejemplos:

WHERE f echa > #02- 01- 2005#

(Significa que la fecha debe ser posterior al 1 de febrero de 2005)WHERE f echa <> #10- 12- 2006#

(Significa que la fecha debe ser distinta del 12 de Octubre de 2006)

Forma de indicar los campos

Normalmente los campos que se usan en el WHERE (y en otras cláusulas) se indican de lasiguiente forma:

 Tabl a. Campo

Por ejemplo,

WHERE t r abaj adores. suel do > 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 suel do > 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 rodearel campo con corchetes.

Por ejemplo,

WHERE [ suel do del t r abaj ador ] > 1000

(El campo se llama sueldo del trabajador )

HAUTIRO

Page 331: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 331/719

 EJERCICIO GUIADO Nº 1

ACCESS permite la creación de consultas usando SQL. Esto nos permitirá practicar con ellenguaje SQL antes de que se aplique posteriormente en nuestras aplicaciones J ava.

En este ejercicio guiado se explicará como crear una consulta usando el lenguaje SQL enAccess.

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

3. Vamos a crear una nueva consulta, por lo que tendrá que activar la opción Crear unaconsulta en vista Diseño:

HAUTIRO

Page 332: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 332/719

 4. En el cuadro de elección de tablas no agregaremos ninguna. Así pues pulsaremos

directamente el botón Cerrar .

5. El resultado es que aparece la ventana de diseño de consultas. En la parte superiorizquierda de esa ventana podrás ver un botón con el texto SQL. Este botón nospermitirá 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, debeescribir la siguiente consulta SQL:

SELECT *FROM t r abaj ador es;

HAUTIRO

Page 333: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 333/719

8. Para ver el resultado de esta consulta debe pulsar el botón Vista que se encuentra enla parte superior izquierda de la ventana:

9. El resultado es que verá el contenido de la tabla Trabajadores:

10. Acaba de crear una consulta dentro de Access usando el lenguaje SQL. Paramodificar de nuevo la consulta SQL tendrá que desplegar el botón Vista y activar denuevo la opción SQL:

11. De esta manera entrará de nuevo en el editor de consultas SQL de Access, dondeaú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 tr abaj ador es. nombr e, t r abaj ador es. apel l i dos, t r abaj ador es. suel do, t r abaj ador es. f echaFROM t r abaj adores;

HAUTIRO

Page 334: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 334/719

 13. Usa el botón Vista para ver el resultado de la consulta. Observa como ahora solo

vemos los campos indicados:

14. Vuelve a la zona de edición de consultas SQL y cambia la consulta para que quedeasí:

SELECT tr abaj ador es. nombr e, t r abaj ador es. apel l i dos, t r abaj ador es. suel do, t r abaj ador es. f echaFROM t r abaj adoresWHERE t r abaj ador es. apel l i dos LI KE ' *ez' ;

Como ves, hemos añadido una cláusula where, para buscar solo aquellostrabajadores cuyo apellido termine en ez.

15. Comprueba el resultado:

HAUTIRO

Page 335: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 335/719

 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 estostrabajadores. 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 cadaservicio. Por otro lado, de cada trabajador solo queremos ver el nombre y losapellidos.

Hay que tener en cuenta que es necesario añadir en el WHERE una condición queiguale el campo de unión entre la tabla trabajadores y la tabla servicios. Este campode unión es el DNI.

La consulta debe quedar así:

SELECT tr abaj ador es. nombr e, t r abaj ador es. apel l i dos, ser vi ci os. t i po, ser vi ci os. cant i dadFROM t r abaj ador es, ser vi ci os

WHERE t r abaj adores. apel l i dos LI KE ' *ez' AND t r abaj adores. DNI =servi ci os. DNI ;

(Observa la inclusión en el FROM de la tabla servicios, y como se ha añadido unacondició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:

Como ves, aparecen todos los servicios y el nombre y apellidos del trabajador quehizo cada uno. Solo aparecen los servicios de los trabajadores cuyo apellido termineen ‘ez’.

18. Vuelve a la vista de edición SQL. Vamos a complicar aún más la consulta. Esta vezvamos 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 latabla servicios con la tabla clientes según el modelo E-R de esta base de datos. Elcampo de unión es el CIF.

HAUTIRO

Page 336: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 336/719

 Modifica la consulta para que quede de la siguiente forma:

SELECT tr abaj ador es. nombr e, t r abaj ador es. apel l i dos, ser vi ci os. t i po, ser vi ci os. cant i dad,cl i ent es. nombr eFROM t r abaj ador es, ser vi ci os, cl i ent es

WHERE t r abaj adores. apel l i dos LI KE ' *ez' AND t r abaj adores. DNI =servi ci os. DNI ANDser vi ci os. CI F=cl i ent es. CI F;

(Observa la inclusión de la tabla clientes en la cláusula FROM, y la adición de unanueva condición de unión, entre la tabla servicios y la tabla clientes en la cláusulaWHERE. 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 lostrabajadores cuyo apellido termine en ‘ez’. Aparece información incluida en tres tablasdistintas: trabajadores, servicios y clientes.

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 laconsulta según apellidos del trabajador. Para ello tendremos que añadir una cláusulaORDER BY:

SELECT tr abaj ador es. nombr e, t r abaj ador es. apel l i dos, ser vi ci os. t i po, ser vi ci os. cant i dad,cl i ent es. nombr eFROM t r abaj ador es, ser vi ci os, cl i ent esWHERE t r abaj adores. apel l i dos LI KE ' *ez' AND t r abaj adores. DNI =servi ci os. DNI ANDser vi ci os. CI F=cl i ent es. CI FORDER BY t r abaj adores. apel l i dos ASC;

HAUTIRO

Page 337: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 337/719

21. Ejecuta la consulta y observa el resultado. Ahora el listado de servicios apareceordenado 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 nombreServicios realizados por trabajadores ez.

23. Este ha sido un ejemplo de consulta realizada en Access usando el lenguaje deconsulta SQL. Este lenguaje será vital para hacer que nuestra aplicación javamanipule la base de datos correspondiente.

NOTA.

En Internet se pueden encontrar múltiples manuales sobre SQL. Se recomienda buscarinformació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.

HAUTIRO

Page 338: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 338/719

 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 tablasORDER BY campos por los que se ordena

El programa ACCESS permite crear consultas usando el lenguaje SQL, por lo quepuede ser una buena herramienta para practicar este lenguaje.

Nuestro programa de bases de datos java, usará este lenguaje para manipular la basede datos correspondiente.

HAUTIRO

Page 339: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 339/719

EJERCICIO GUIADO. BASES DE DATOS. SQL

 Acciones en SQL

En la hoja guiada anterior se ha visto como se pueden crear instrucciones usando ellenguaje SQL para consultar una base de datos, y, de esta forma, extraer información deella.

Pero el lenguaje SQL no se queda simplemente ahí, sino que proporciona instrucciones quepueden 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 J ava

Base deDatos

ÓRDENES SQLañadir, modificar, eliminar

HAUTIRO

Page 340: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 340/719

  Alta de regis tros en SQL

Se empezará estudiando como añadir nuevos registros en una base de datos usado ellenguaje SQL.

Código base en SQL para añadir nuevos registros

Para añadir un registro en una tabla se usa la siguiente sintaxis:

I NSERT I NTO t abl aVALUES ( val or 1, val or 2, val or 3, . . . , val or n) ;

En la cláusula INSERT INTO se indica la tabla que en la que se quiere introducir una nuevafila (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 camposen la tabla correspondiente.

Por ejemplo:

I NSERT I NTO t r abaj adoresVALUES ( ’ 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-ANombre: MaríaApellidos: López

Sueldo: 1250,45Fecha de entrada: 02/01/2006Matrí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:

I NSERT I NTO t abl a( campo a, campo b, campo c)

VALUES ( val or del campo a, val or del campo b, val or del campo c) ;

En este caso solo se introducen los valores correspondientes a tres campos, el resto de loscampos del registro se quedarán vacíos.

Por ejemplo:

I NSERT I NTO t r abaj adores( DNI , Apel l i dos, Suel do)VALUES ( ’ 30. 234. 234- A’ , ‘ López’ , 1250. 45) ;

En este caso introducimos a un trabajador de apellido López, con DNI 30.234.234-A quecobra 1250,45 euros. Tanto la matrícula de su coche como su nombre y la fecha quedan enblanco.

HAUTIRO

Page 341: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 341/719

 

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 yfinalmente 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 indicarel valor NULL.

Ejemplo:

I NSERT I NTO t r abaj adores( DNI , Apel l i dos, Suel do)VALUES ( ’ 30. 234. 234- A’ , NULL, 1250. 45) ;

Los apellidos del trabajador están vacíos en este ejemplo.

HAUTIRO

Page 342: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 342/719

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 pulsael botón Cerrar.

4. Pulsa el botón SQL que se encuentra en la parte superior izquierda de la ventanapara crear una consulta SQL.

HAUTIRO

Page 343: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 343/719

5. Aparecerá entonces el editor de consultas SQL. En él, escribe la siguiente instrucciónSQL:

I NSERT I NTO t r abaj adoresVALUES ( ' 33. 444. 333- B' , ' Ant oni o' , ' Romero' , 1300. 5, #01/ 02/ 2006#, NULL) ;

Verás que lo que se pretende es introducir un nuevo trabajador. Este trabajadortendrá los siguientes datos:

DNI: 33.444.333-BNombre: Antonio

Apellidos: RomeroSueldo 1300,5Fecha 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 unregistro nuevo en la tabla trabajadores) Para ejecutar esta consulta de acción activael botón Ejecutar :

7. Access avisará de que vas a añadir un nuevo registro, y te pide confirmación. Aceptala acción:

8. Se acaba de ejecutar la consulta. Para comprobar el resultado tendremos que ver elcontenido de la tabla Trabajadores y observaremos que hay un nuevo trabajadorañadido. Primero cierra la consulta, pero no la guardes.

HAUTIRO

Page 344: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 344/719

 

9. Accede a la zona de tablas de la base de datos.

10. Abre la tabla trabajadores. Observa el nuevo trabajador que se ha añadido:

11. Cierra la base de datos.

HAUTIRO

Page 345: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 345/719

 Modificación de registros en SQL

Es posible usar el lenguaje SQL para modificar los datos de una tabla. Se puede inclusomodificar los datos de aquellos registros que cumplan una condición en concreto.

Código base en SQL para modificar regist ros

Para modificar los datos de los registros de una tabla se usará el siguiente código general:

UPDATE t abl a a modi f i carSET campo1 = nuevoval or 1, campo2 = nuevoval or 2, …, campon = nuevoval or nWHERE condi ci ó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 losvalores de aquellos registros que cumplan la condición. La cláusula WHERE es opcional, y sino se indicara se cambiarían todos los registros de la tabla.

Ejemplo:

UPDATE t r abaj adoresSET suel do = 1200, mat r i cul a=’ 3355- AAA’WHERE f echa < #01/ 01/ 2004#;

En este ejemplo se les asigna un sueldo de 1200 euros y el coche con matrícula 3355-AAA atodos aquellos trabajadores que hayan entrado en la empresa antes del 1-1-2004.

Ejemplo:

UPDATE t r abaj adoresSET suel do = 1300;

En este ejemplo, se les asigna a todos los trabajadores un sueldo de 1300 euros ya que nose ha indicado cláusula WHERE.

Si se quisiera hacer un cambio puntual a un registro en concreto, tendremos que hacer usode su campo clave para indicar la condición. Recuerda que el campo clave es el queidentifica de forma única a un registro de la tabla.

Por ejemplo:

UPDATE t r abaj adoresSET suel do = 1300WHERE DNI =’ 33. 444. 333- A’ ;

En este ejemplo se estoy asignando un sueldo de 1300 al trabajador con DNI 33.444.333-A,

y a ningún otro (ya que se supone que no habrá otro con dicho DNI)

HAUTIRO

Page 346: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 346/719

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ónCerrar .

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 t r abaj adoresSET suel do = 800, mat r i cul a=’ 1111- AAA’WHERE DNI =’ 33. 444. 333- B’ ;

Como puedes observar, en esta instrucción SQL vamos a asignarle un sueldo de 800euros 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.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 losdatos del trabajador con DNI 33.444.333-B. Para comprobarlo accederemos a latabla 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.

HAUTIRO

Page 347: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 347/719

 Eliminación de registros en SQL

Al igual que podemos añadir nuevos registros (filas) a las tablas usando SQL, tambiénpodemos 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 t abl a de l a que se qui ere el i mi narWHERE condi ci ón de l os r egi st r os que se el i mi nará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 queeliminaremos.

Por ejemplo:

DELETE FROM t r abaj ador esWHERE suel do>1000;

En este ejemplo se están eliminando de la tabla trabajadores aquellos trabajadores cuyosueldo sea superior a 1000.

Si se quiere eliminar un solo registro de la tabla, será necesario hacer referencia a su campoclave. 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 lacondición:

DELETE FROM t r abaj ador esWHERE DNI =’ 33. 444. 555- A’ ;

Esta instrucción SQL borra al trabajador con DNI 33.444.555-A (solamente a él, ya que sesupone 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 sevio en la hoja anterior para las instrucciones SELECT.

Si se quiere eliminar todo el contenido de una tabla, se puede usar una instrucción DELETEsin indicar ninguna condición. Por ejemplo:

DELETE FROM t r abaj ador es;  

Esta instrucción eliminaría todos los registros de la tabla trabajadores.

HAUTIRO

Page 348: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 348/719

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 t r abaj adoresWHERE 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ónEjecutar :

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 comprobarque el trabajador con DNI 33.444.333-B ya no está. Para ello cierre la consulta (nohace 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.

HAUTIRO

Page 349: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 349/719

 CONCLUSIÓN

El lenguaje de consul ta SQL no solo permite extraer información de una base dedatos, 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 llamadaINSERT 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

HAUTIRO

Page 350: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 350/719

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, esfinalmente aprender a crear un fichero que contenga toda la información que la empresanecesita 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, oextraer 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 unfichero 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 J ava para que pueda acceder a una Base de Datos, esnecesario realizar tres pasos:

1. Cargar el cont rolador de la base de datos.

El controlador define el tipo de base de datos que se va a usar (base de datos de Access, ode MySQL, o de cualquier otro gestor de base de datos)

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 yla 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 sentenciapermiten 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 datosde la base de datos y la manipulación de dicha base de datos.

HAUTIRO

Page 351: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 351/719

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

1. Entre en NetBeans. Crea un nuevo proyecto llamado AccesoBD. Dentro de esteproyecto crea un paquete principal llamado paqueteprincipal y dentro de él un

 J Frame llamado ventanaprincipal:

2. En la parte superior de la ventana añade un botón con el texto Ver DatosTrabajadores que se llame btnVerDatos.

3. Se pretende simplemente que al pulsar el botón btnVerDatos aparezcan en un J OptionPane datos sobre los trabajadores almacenados en la base de datos.

HAUTIRO

Page 352: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 352/719

SITUACIÓN DEL FICHERO DE BASE DE DATOS

4. Antes de empezar con la programación de nuestra aplicación, introduciremos elfichero de base de datos en la carpeta del proyecto java que estamos haciendo. Paraello, accede a la carpeta del proyecto AccesoBD. Esta carpeta se encontrará alládonde estés guardando tus proyectos:

5. Entra dentro de esta carpeta y observarás una serie de carpetas creadas por elpropio NetBeans. (Entre ellas, la más interesante es la llamada src, la cual es la quecontiene los ficheros con el código java)

6. Para tener todo bien organizado, crearemos una carpeta llamada Base dentro de lacarpeta de proyecto, de manera que su contenido quede así:

7. Ahora lo único que tiene que hacer es copiar el fichero de base de datosMANEMPSA.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)

HAUTIRO

Page 353: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 353/719

8. De esta manera, tenemos el fichero de base de datos que hemos creado con Accessguardado dentro de la misma carpeta de proyecto java que usará dicha base dedatos. Se recomienda que esto lo haga cada vez que programe una aplicación debases de datos J ava.

9. Ahora ya podemos volver al NetBeans y continuar con nuestro trabajo.

HAUTIRO

Page 354: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 354/719

PREPARACIÓN DE LA APLICACIÓN JAVA PARA EL ACCESO A LA BASE DEDATOS

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 laconexión con la base de datos.

- Un objeto del tipo Statement, al que llamaremos sentencia. Este objeto permitemanipular la base de datos.

11. Así pues, lo primero que haremos será definir estos objetos como globales en laclase de la ventana principal, para así poderlos usar desde cualquier lado:

Aparecerán subrayados ya que será necesario indicar el import para las clasesConnection y Statement. Estos import son respectivamente:

 j ava. sql . Connect i on

y

 j ava. sql . St at ement

Agrega los import correspondientes para eliminar los errores.

12. Una vez definidos los objetos conexión y sentencia, necesarios para el acceso a labase de datos, prepararemos nuestro programa para que pueda acceder a la base dedatos MANEMPSA.MDB. Esto se hará en el constructor.

13. En primer lugar, añade al constructor una llamada a una función PrepararBaseDatos:

HAUTIRO

Page 355: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 355/719

 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 unabase de datos: La Carga del Controlador .

Recuerda que el controlador le indica a J ava 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 vienedefinido a través de la siguiente cadena de texto:

sun. j dbc. odbc. J dbcOdbcDr i ver

 Y la forma de activar dicho controlador es a través de la instrucción:

Cl ass. f or Name( cont r ol ador ) . newI nst ance( ) ;

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 J ava parapoder usar Access.

En el caso de que se quisiera usar una base de datos realizada en otro programa queno fuera Access, habría que cambiar la cadena de texto correspondiente a sucontrolador.

Por ejemplo, para usar una base de datos creada con el gestor de base de datosMySQL se usa la cadena: com. mysql . j dbc. Dr i ver .

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.

HAUTIRO

Page 356: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 356/719

15. Ahora añade el siguiente código a continuación del anterior:

El código que acabas de añadir se corresponde con el segundo paso para acceder a una base dedatos: Crear el ob jeto 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 elobjeto que permite abrir la puerta del fichero de base de datos para entrar en él. Para construir esteobjeto 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 necesitamosindicar ningún nombre de usuario, por eso verás la instrucción:

St r i ng user = “”;

• El password del usuario que manipulará la base de datos. En el caso de Access tampoconecesitaremos ningún password, por eso verás la instrucción:

St r i ng 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. Laparte inicial de la cadena de la DSN siempre será igual para las bases de datos de Access:

" j dbc: odbc: Dr i ver ={Mi cr osof t Access Dr i ver ( *. mdb) }; DBQ="  

Sin embargo, lo que nos interesa realmente de esta cadena es su parte final, donde hay que indicar elcamino del fichero de base de datos al que accederemos. En nuestro caso, indicaremos el camino deMANEMPSA.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, yMANEMPSA.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:

St r i ng DSN = " j dbc: odbc: Dr i ver ={Mi cr osof t Access Dr i ver ( *. mdb) }; DBQ="+"Base\ \ MANEMPSA. MDB";

Finalmente se usa la instrucción

conexi on=Dr i ver Manager. getConnect i on( 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 t r y…catch para capturar cualquier error inesperado que se pueda producir en este paso.

HAUTIRO

Page 357: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 357/719

16. Ahora añade el siguiente código a continuación del anterior:

Este código que acabas de añadir se corresponde con el tercer paso necesario para poderacceder 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. Esdecir, el objeto que nos permite actuar y manipular la base de datos. Este objeto es vital, yes el objetivo de toda esta preparación.

El objeto sentencia se crea a partir del objeto conexión creado en el paso anterior, usando lasiguiente instrucción:

sent enci a=conexi on. cr eat eSt atement (Resul t Set . TYPE_SCROLL_ I NSENSI TI VE,Resul t Set . CONCUR_READ_ONLY) ;

 Y como sucedió en los dos pasos anteriores, es necesario rodear esta instrucción con untry…catch para capturar cualquier tipo de error inesperado que se pudiera producir.

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 quehemos introducido este código en el constructor.

Es cierto que este código puede resultar bastante abstracto y complejo, pero tiene lagran ventaja de que siempre es igual.

Para nuestros ejercicios, solo tendremos que cambiar el nombre de la base de datosque se esté usando en ese momento. El resto del código queda igual.

Observa:

HAUTIRO

Page 358: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 358/719

 

18. El objetivo de todo este código de preparación para el acceso al fichero de la base dedatos es obtener un objeto llamado sentencia que nos posibilitará la manipulación delos datos de la base de datos, usando órdenes SQL.

En este ejercicio guiado usaremos el objeto sentencia para averiguar informaciónacerca de los trabajadores.

El método PrepararBaseDatos siempre será igual, solo cambiará elnombre de la base de datos a usar.

El método PrepararBaseDatos siempre será igual, solo cambiará elnombre de la base de datos a usar.

HAUTIRO

Page 359: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 359/719

REALIZAR CONSULTAS SQL USANDO EL OBJETO SENTENCIA

19. Cuando se pulse el botón Ver Datos de Trabajadores tendremos que extraer losdatos de la tabla trabajadores para poder mostrarlos. Para ello, escribe el siguientecódigo dentro del evento actionPerformed del botón btnVerDatos:

Observa el código:

Resul t Set r = sent enci a. execut eQuer y( “sel ect * f r omt r abaj adores order by nombr e”) ;

El objeto sentencia se usa para dar órdenes a la base de datos. Esas órdenes se danusando el lenguaje de consulta SQL.

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 laconsulta 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 hallamado simplemente “r”. Los objetos ResultSet almacenan el resultado de unaconsulta 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 conun try…catch para capturar errores inesperados al realizar la consulta.

HAUTIRO

Page 360: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 360/719

LOS OBJETOS RESULTSET

20. Debes imaginarte el objeto ResultSet r como una tabla que contiene el resultado dela consulta SQL que se ha ejecutado. En nuestro caso, la consulta SQL que hemosejecutado ha extraído toda la tabla trabajadores. Por tanto nuestro ResultSet contienetoda la tabla trabajadores.

El objeto r por tanto podría representarse así:

Trabajadores DNI  Nombre  Apell idos  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  J uan  Pérez  1120 04/05/2002 4433-ABB 

EOF

21. La fila BOF significa “comienzo de fichero” y representa una fila anterior al primerregistro del ResultSet.

La fila EOF significa “final de fichero” y representa una fila posterior al último registrodel ResultSet.

La flecha indica la posición actual donde estamos situados dentro de la tabla delResultSet.

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 unaposición)

Trabajadores DNI  Nombre  Apell idos  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  J uan  Pérez  1120 04/05/2002 4433-ABB 

EOF

HAUTIRO

Page 361: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 361/719

 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 alactionPerformed del botón:

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:

i nf o="El t r abaj ador se l l ama "+r . get St r i ng( "nombr e") +" "+r . get St r i ng( "apel l i dos") +" y cobr a "+r . get St r i ng( "suel do") ;

Lo interesante de esto es el método getString del objeto ResultSet r. El métodogetString permite extraer una cadena con el valor del campo indicado comoparámetro.

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 J OptionPane.

HAUTIRO

Page 362: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 362/719

 24. Ya puedes ejecutar el programa.

25. Sigamos haciendo cambios en el código del botón para entender mejor elfuncionamiento de los ResultSet. Añade la siguiente línea:

Pulsa el botón…

 Y apareceráinformación sobre elprimer trabajador de labase de datos

HAUTIRO

Page 363: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 363/719

 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  Apell idos  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  J uan  Pérez  1120 04/05/2002 4433-ABB 

EOF

27. Esto quiere decir que si se ejecuta el programa se mostrará información sobreFrancisco López. Compruébalo:

28. Los objetos ResultSet poseen diversos métodos para cambiar la posición actual en latabla del ResultSet. Dicho de otro modo: “para mover la flecha”. Veamos algunos deestos métodos (se supone que el objeto ResultSet se llama r ):

r.next();  Mueve la flecha a la siguiente filar.previous(); Mueve la flecha a la fila anteriorr.first();  Mueve la flecha a la primera filar.last();  Mueve la flecha a la última filar.beforeFirst()  Mueve la flecha a la fila BOFr.afterLast() Mueve la flecha a la fila EOFr.absolute(n) Mueve la flecha a la fila n del ResultSet.

Las filas se empiezan a numerar por 1.

HAUTIRO

Page 364: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 364/719

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 últimotrabajador. Compruebalo.

Trabajadores 

DNI  Nombre  Apell idos  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  J uan  Pérez  1120 04/05/2002 4433-ABB 

EOF

HAUTIRO

Page 365: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 365/719

 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 semuestran los datos del primer trabajador. Compruébalo.

Trabajadores DNI  Nombre  Apell idos  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  uan  Pérez  1120 04/05/2002 4433-ABB 

EOF

HAUTIRO

Page 366: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 366/719

31. Como ves, podemos movernos dentro del contenido del ResultSet gracias a todosestos 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í extraerla información de todos sus registros.

32. Vamos a modificar nuestro código para que se muestren todos los trabajadores delResultSet. Para ello, realiza el siguiente cambio:

En este código se ha inicializado la variable info a la cadena vacía “” y luego se haañadido un bucle bastante interesante:

r . bef oreFi rs t ( ) ;whi l e ( r . next ( ) ) {

i nf o=i nf o+r . get St r i ng( "nombr e") +" "+r . get St r i ng( "apel l i dos") +""+r . get St r i ng( "suel do") +"\ n";

}

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 . bef oreFi rs t ( ) ;

- Luego tenemos un bucle mientras que comienza así:

whi l e ( r . next ( ) ) {

El método next intenta colocar la flecha en la siguiente fila, y si lo hace bien, devuelveel 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 losiguiente”. O dicho de otro modo, este bucle se repetirá para cada fila de la tabla delResultSet.

HAUTIRO

Page 367: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 367/719

- Si analizamos el contenido del bucle, básicamente veremos una concatenación decadenas dentro de la variable info. En cada vuelta del bucle se concatenará elnombre, apellidos y sueldo de cada trabajador.

i nf o=i nf o+r . get St r i ng( "nombr e") +" "+r . get St r i ng( "apel l i dos") +""+r . get St r i ng( "suel do") +"\ n";

- Finalmente se visualiza la variable info en un JOptionPane.

33. Ejecuta el programa y comprueba su funcionamiento.

34. El bucle que acabas de programar es un código “clásico” para manipular unResultSet. Siempre que quieras recorrer todas las filas del ResultSet harás algocomo esto:

r . bef oreFi rs t ( ) ;

whi l e ( r . next ( ) ) {mani pul aci ón de l a f i l a

}

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 . get St r i ng( “suel do”) ;

Obtiene el sueldo del trabajador señalado actualmente con la flecha. Este sueldo seobtiene convertido en cadena.

Al pulsar el botón…

Aparecen los datos de todoslos trabajadores de la basede datos.

HAUTIRO

Page 368: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 368/719

36. Los ResultSet poseen otros métodos para obtener los datos convertidos en númeroscomo son:

get I nt ( “campo”)

y

get Doubl e( “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:

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 degetDouble para obtener el campo sueldo de forma numérica, en vez de usargetString:

t ot al su=t ot al su+r.getDouble("sueldo"); 

 Y finalmente usamos otro J OptionPane para ver la suma de los sueldos calculada.

Ejecuta el programa y comprueba su funcionamiento.

HAUTIRO

Page 369: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 369/719

38. Una vez finalizado el programa, es una buena costumbre cerrar la base de datos queestamos 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 eventowindowClosing de la ventana principal:

Como ves, también hay que encerrar este código entre try…catch para evitar posibleserrores.

HAUTIRO

Page 370: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 370/719

 

CONCLUSIÓN

Para crear un programa Java que pueda usar una base de datos será necesariorealizar 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 tipoResultSet 

- Un objeto ResultSet tiene forma de tabla conteniendo el resultado de la consulta SQL

* Los objetos ResultSet tienen métodos para seleccionar el regist ro de la tabla* Los objetos ResultSet tienen métodos que permiten extraer el dato de un

campo en concreto.

HAUTIRO

Page 371: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 371/719

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 consultaSQL en la base de datos. Al hacer esto se consigue un objeto ResultSet que contiene elresultado de la consulta.

El contenido del ResultSet tiene forma de tabla, y podemos extraer la informacióncolocándonos en la fila correspondiente del ResultSet y luego usando los métodos:

get St r i ngget Doubl eget I nt

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 unResultSet

HAUTIRO

Page 372: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 372/719

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 seindican a continuación:

1. Entre en NetBeans. Crea un nuevo proyecto llamado ServiciosBD. Dentro de esteproyecto crea un paquete principal llamado paqueteprincipal y dentro de él un

 J Frame llamado ventanaprincipal:

2. En la parte superior de la ventana añade un botón con el texto Ver Datos Servicios que se llame btnServicios.

3. Se pretende simplemente que al pulsar el botón btnServicios aparezcan en un J OptionPane datos sobre los servicios almacenados en la base de datos.

SITUACIÓN DEL FICHERO DE BASE DE DATOS

4. Como se vio en la hoja anterior, interesa colocar el fichero de la base de datos que seva a usar en una subcarpeta de la carpeta de proyecto que se está haciendo.

Así pues, entre en la carpeta de proyecto ServiciosBD 

5. 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 MisDocumentos.

HAUTIRO

Page 373: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 373/719

 

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

7. Preparar nuestro proyecto para que permita el acceso a la base de datosMANEMPSA.MDB es un proceso complejo, aunque afortunadamente siempre sehace igual.

Solo tiene que añadir el siguiente código a su ventana principal:

Copia aquí dentroel fichero de basede datosMANEMPSA.MDB

Declara los objetosglobales conexión ysentencia 

Haz la llamada al métodoPrepararBaseDatos 

HAUTIRO

Page 374: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 374/719

 

REALIZAR CONSULTAS SQL USANDO EL OBJETO SENTENCIA

8. Ahora que hemos preparado nuestro proyecto para poder usar la base de datosMANEMPSA.MDB, ya podemos programar el botón para visualizar los servicios.Entra dentro del actionPerformed de este botón y programa lo siguiente:

Recuerda que el método PrepararBaseDatos siempre será igual, solo tienes que indicar aquí elnombre de la base de datos a usar.

HAUTIRO

Page 375: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 375/719

Si observas el código, lo que hace es ejecutar la consulta SQL

sel ect * f r om ser vi ci os or der by cant i dad

la cual extrae todos los servicios almacenados en la tabla servicios ordenados porcantidad de menor a mayor.

El resultado de esta consulta se almacena en un ResultSet y se usa un bucle típicoque recorre el ResultSet y muestra el tipo de cada servicio y la cantidad:

whi l e ( r . next ( ) ) {i nf o=i nf o+r . get St r i ng( "t i po") +" "+r . get St r i ng( "cant i dad") +"\ n";

}

Puedes ejecutar el programa para ver como funciona.

9. 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:

HAUTIRO

Page 376: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 376/719

 EXTRAER FECHAS DEL RESULTSET

10. Se va a mejorar el programa de forma que se muestre de cada servicio el tipo, lacantidad y la fecha en que se hizo. Por tanto, haz el siguiente cambio en el código delactionPerformed del botón btnServicios:

Simplemente estamos cambiando la concatenación de la cadena info de forma queaparezca la fecha de cada servicio, el tipo y la cantidad.

11. Ejecuta el programa y observa el resultado.

HAUTIRO

Page 377: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 377/719

 

12. Como se ha podido observar, las fechas extraídas del ResultSet tienen un formatodistinto al que usamos normalmente.

Para mejorar la presentación de las fechas extraídas del ResultSet haz los siguientescambios en el código:

Como se puede ver, lasfechas aparecen en orden

cambiado (año-mes-dia)

 Y además incluyen el formatode hora.

HAUTIRO

Page 378: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 378/719

 

El código se ha mejorado de forma que la fecha aparezca en un formato españolcorrecto. Ejecuta el programa para comprobar el resultado:

Observa como ahora lasfechas aparecencorrectamente…

HAUTIRO

Page 379: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 379/719

 13. Estudiemos el código que acabamos de añadir:

Lo primero que se ha hecho es crear varias variables de cadenas para contener eldía, mes y año de la fecha así como la fecha completa.

St r i ng cadf echa; / / cadena par a f echasSt r i ng caddi a; / / cadena par a el di aSt r i ng cadmes; / / cadena para el mesSt r i ng cadani o; / / cadena par a el año

Dentro del bucle extraemos la fecha del ResultSet y la almacenamos en la variablecadfecha:

cadf echa=r . get St r i ng( "f echa") ;

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 laposición 0 y la posición 3. Esto se hace usando el método substring de la siguienteforma:

cadani o=cadf echa. subst r i ng( 0, 4) ;

Para extraer el mes de la cadena, tendremos que extraer los caracterescomprendidos entre la posición 5 y la posición 6. Esto se hace usando el métodosubstring de la siguiente forma:

cadmes=cadf echa. subst r i ng( 5, 7) ;

Para extraer el dia de la cadena, tendremos que extraer los caracteres comprendidosentre la posición 8 y la posición 9 de la cadena. Esto se hace usando el métodosubstring de la siguiente forma:

caddi a=cadf echa. subst r i ng( 8, 10) ;

Una vez extraídos dia, mes y año, de la cadena, podemos concatenarlos formandouna fecha en formato dia/mes/año de la siguiente forma:

cadf echa=caddi a+"/ "+cadmes+"/ "+cadani o;

Así pues, finalmente tenemos una variable cadfecha que será la que se visualizará enel J OptionPane:

i nf o=i nf o+cadf echa+" "+r . get St r i ng( " t i po") +" "+r . get St r i ng( "cant i dad") +"\ n";

HAUTIRO

Page 380: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 380/719

PRESENTACIÓN DE COMAS DECIMALES

14. Ahora mejoraremos el programa para que los costes de los servicios aparezcan concoma decimal, en vez de punto decimal:

Modifica el código de la siguiente forma:

Haremos que aquí aparezcancomas, en vez de puntos…

HAUTIRO

Page 381: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 381/719

 

Se ha añadido una variable de cadena llamada cadcoste que almacenará el coste decada servicio.

En el código del bucle, recogemos la cantidad en dicha variable y luego usamos elmétodo de cadena replace para reemplazar los puntos por comas:

cadcost e=r . get St r i ng( "cant i dad") ;cadcost e=cadcost e. r epl ace( ". ", ", ") ;

Finalmente, mostramos la cadena de coste en la concatenación:

i nf o=i nf o+cadf echa+" "+r . getSt r i ng( "t i po") +" "+cadcoste+"\ n" ;

Ejecuta el programa y observa el resultado:

HAUTIRO

Page 382: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 382/719

 

VALORES NULOS

15. Es posible que algún campo de algún registro de la tabla esté vacío. Es decir, quesea nulo. Si esto ocurre, entonces al extraer dicho dato de la tabla usando getStringaparecerá el valor null en el JOptionPane.

16. Para comprobar esta circunstancia, agrega un nuevo botón a la ventana principal conel texto “Ver Datos de Clientes”. Llámalo por ejemplo btnClientes.

17. Al pulsar este botón aparecerá el listado de clientes de la empresa. Concretamentedebe aparecer el nombre del cliente, el teléfono 1 y el teléfono 2. Para ello añade elsiguiente código dentro del evento actionPerformed del botón.

Ahora ya tenemos las comasdecimales…

HAUTIRO

Page 383: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 383/719

 

Este código es prácticamente igual que el anterior. Simplemente ejecuta una consultaSQL usando el objeto sentencia que permite extraer el contenido de la tabla clientes,y luego recorre el ResultSet mostrando los campos nombre, teléfono 1 y teléfono 2 enun J OptionPane.

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

 J OptionPane:

HAUTIRO

Page 384: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 384/719

 19. 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 delResultSet es null, y en ese caso, se concatena la cadena no tiene. En caso contrariose concatena el valor del campo.

HAUTIRO

Page 385: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 385/719

 

CONCLUSIÓN

 A través del objeto sentencia podemos ejecutar una consulta SQL en una base dedatos.

El resultado de la consul ta se almacena en un objeto del tipo ResultSet.

 Al extraer el valor de un campo fecha desde el objeto ResultSet observaremos quetiene el siguiente formato:

 Año – Mes – Dia – Hora : Minutos : Segundos

 Así pues puede ser necesario real izar cambios en esta cadena.

 Al extraer el valor de un campo numérico real, obtendremos un número con puntodecimal. Quizás sea necesario cambiar este punto por una coma decimal.

Cuando un campo está vacío, al in tentar extraer su valor obtendremos el valor null.

HAUTIRO

Page 386: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 386/719

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 queejecutar una instrucción usando el objeto sentencia de la siguiente forma:

Resul t Set r = sent enci a. execut eQuer y(“consul t a_sql ”) ;

La consulta_sql es una cadena que tiene forma de consulta SQL bien escrita (sin fallos). Porejemplo:

St r i ng consul t a;consul t a=”sel ect * f r om t r abaj ador es”;Resul t Set r = sent enci a. execut eQuery( consul t a) ;

En este código que se acaba de mostrar, se crea una cadena llamada consulta. Se le asignaa esta cadena una instrucción SQL para extraer todos los trabajadores, y finalmente seejecuta dicha instrucción SQL usando el objeto sentencia.

La cadena consulta puede ser construida a través de concatenaciones de cadenas. Observaatentamente este ejemplo. Es parecido al anterior pero tiene una ligera diferencia:

/ / Supongamos que t xt Tabl a es un cuadr o de t exto

St r i ng consul t a;consul t a=”sel ect * f r om ” + t xt Tabl a. get Text ( ) ;Resul t Set r = sent enci a. execut eQuery( consul t a) ;

En este caso, la cadena consulta es la concatenación de…

“sel ect * f r om “

con

lo que contenga el cuadro de texto txtTabla - es decir, t xt Tabl a. get Text ( )  

La gran ventaja de esto, es que el usuario podrá escribir el nombre de una tabla cualquieradentro del cuadro de texto txtTabla y al ejecutarse este código se extraerá el contenido dedicha tabla.

Es decir, el usuario podrá decidir lo que quiere consultar. El usuario afecta a la construcciónde la consulta SQL, y por tanto, tiene cierto control sobre esta consulta.

La construcción de consultas SQL a partir de la concatenación de cadenas y datosproporcionados por el usuario es algo muy usado en los programas de base de datos. Enesta hoja guiada se insistirá en esta idea.

HAUTIRO

Page 387: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 387/719

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 dela base de datos. Es decir, el usuario tendrá cierto control sobre las consultas que serealicen.

1. Entre en NetBeans. Crea un nuevo proyecto llamado TrabajadoresBD. Dentro deeste proyecto crea un paquete principal llamado paqueteprincipal y dentro de él un

 J Frame llamado ventanaprincipal:

2. Añade a la ventana un J TextPane y un botón de momento:

El botón se llamará btnTodos y el J TextPane se llamará txtPanel.

HAUTIRO

Page 388: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 388/719

 

3. Para que este programa pueda trabajar con la base de datos MANEMPSA tendrá queprepararlo haciendo lo siguiente:

- Crear la subcarpeta Base y copiar en ella el fichero de base de datosMANEMPSA.MDB que tiene en la carpeta Mis Documentos.

- Añadir al programa los objetos conexión (Connection) y sentencia (Statement)como globales.

- Crear el procedimiento PrepararBaseDatos y llamarlo desde el constructor.

- Cerrar la conexión desde el evento windowClosing 

Realice estos cuatro pasos que se han indicado antes de continuar.

4. Ya se puede programar el botón btnTodos. Se pretende que al pulsar este botónaparezca en el panel txtPanel el contenido de la tabla trabajadores. Para ello,programe el siguiente código dentro del actionPerformed del botón btnTodos:

HAUTIRO

Page 389: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 389/719

 

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

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

5. Ejecuta el programa y prueba el funcionamiento de este botón:

HAUTIRO

Page 390: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 390/719

 

6. 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 parteinferior de la ventana quedará así:

7. Se pretende que estos botones funcionen de la siguiente forma:

- El usuario introducirá un sueldo en el cuadro de texto txtSueldo.- Luego, si pulsa el botón Igual, aparecerá en el panel todos los trabajadores

que tengan un sueldo igual al introducido.- En cambio, si pulsa el botón Mayor , aparecerá en el panel todos los

trabajadores que tengan un sueldo mayor que el introducido.- 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.

Al pulsar el botón, semuestran los datos detodos los trabajadores.

HAUTIRO

Page 391: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 391/719

 8. 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. Puedecopiar y pegar y luego hacer la modificación que se indica) 

Estudiemos detenidamente el código remarcado:

St r i ng consul t a;consul t a = “sel ect * f r omt r abaj adores wher e suel do = “+t xtSuel do. get Text( ) ;Resul t Set r = sent enci a. execut eQuery( consul t a) ;

Aquí se crea una variable de texto llamada consulta y luego se concatena en ella la cadena:

sel ect * f r omt r abaj adores wher e suel do =

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:

sel ect * f r omt r abaj adores where suel do = 1000

Es decir, se construye una consulta que busca los sueldos de 1000 euros.

HAUTIRO

Page 392: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 392/719

 9. 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 tengan1000 de sueldo.

10. Programa ahora el botón Mayor que de la siguiente forma (El código esprácticamente igual al anterior, así que puedes usar copiar y pegar . Se indica conuna flecha la pequeña diferencia)

Al pulsar el botónIgual se construyeuna consulta usandoel contenido delcuadro de texto

txtSueldo.

Al ejecutarse laconsulta se muestranlos trabajadores de1000 euros.

HAUTIRO

Page 393: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 393/719

 

Como se puede observar, el código es igual. Simplemente cambia el operador en lacadena que se concatena. Ahora se usa un mayor que.

Es decir, si el usuario introdujera un 1000 en el cuadro de texto del sueldo, elresultado de la concatenación en la variable consulta sería la siguiente cadena:

sel ect * f r omt r abaj adores wher e suel do > 1000

11. Prueba a ejecutar el programa introduciendo el valor 1000 en el sueldo y luegopulsando el botón Mayor que. El resultado será que aparece en el panel de texto lostrabajadores que cobran más de 1000 euros.

12. Como práctica, programe el botón Menor que de forma que muestre aquellostrabajadores que cobren menos de la cantidad introducida en el cuadro de textotxtSueldo.

HAUTIRO

Page 394: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 394/719

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

14. Estos botones funcionarán de la siguiente forma:

- El usuario introducirá un nombre en el cuadro de texto txtNombre.

- Si luego pulsa el botón Igual a, entonces aparecerán todos aquellostrabajadores que tengan exactamente dicho nombre.

- Si en cambio pulsa el botónContiene a, entonces aparecerán todos aquellostrabajadores cuyo nombre contenga la palabra que se haya escrito en elcuadro de texto.

15. Empezaremos programando el botón Igual a. Para ello, escriba el siguiente códigodentro del botón (este código es parecido a los anteriores, puede usar copiar y pegary luego realizar las modificaciones pertinentes)

HAUTIRO

Page 395: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 395/719

 

Observa la modificación del código. Puedes ver que la consulta SQL se consigueconcatenando tres cadenas (se han puesto en color para facilitar la comprensión):

Primera cadena:  sel ect * f r om t r abaj adores wher e nombr e = ‘  

Segunda cadena: lo que contenga el cuadro de texto: txtNombre.getText()  Tercera cadena: ‘  

Supongamos que el cuadro de texto contiene la palabra Ana, el resultado de laconcatenación sería:

sel ect * f r omt r abaj adores wher e nombr e = ’ Ana’  

Es decir, el resultado de la concatenación sería una consulta SQL que muestra aquellostrabajadores que tengan de nombre Ana.

NOTA:

Recuerda que cuando se especifica un valor de tipo texto en una consulta SQL, esnecesario que esté rodeado de comillas simples (‘)

Esa es la razón por la que se tienen que concatenar dos ‘

HAUTIRO

Page 396: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 396/719

 16. Ejecuta el programa y prueba a escribir en el cuadro de texto del nombre Ana. Luego

pulsa el botón Igual a…

17. Ahora programaremos el botón Contiene a de forma que el usuario escriba un textoen el cuadro del nombre, y al pulsar el botón Contiene a aparezcan todos aquellostrabajadores cuyo nombre contenga el texto escrito.

Por ejemplo, si el usuario introduce el texto “an” en el cuadro, al pulsar Contiene a aparecerán los trabajadores que se llamen: Juan, An tonio, An tonia, Manolo, Ana, etc (todos contienen el texto ‘an’)

18. Para ello programe lo siguiente en el actionPerformed del botón Contiene a (es uncódigo muy parecido al anterior, solo tiene que realizar una pequeña modificación)

Se escribe Ana en elcuadro de texto y alpulsar el botón Iguala se construye unaconsulta SQL quemuestra a los

trabajadores con elnombre Ana.

HAUTIRO

Page 397: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 397/719

 

En este caso, para crear la consulta se concatenan tres cadenas (se indican en color parafacilitar la comprensión)

Primera cadena:  sel ect * f r om t r abaj ador es wher e nombr e l i ke ‘ % 

Segunda cadena: lo que contenga el cuadro de texto: txtNombre.getText()  Tercera cadena: %‘  

Supongamos que escribimos en el cuadro de texto del nombre la palabra an, el resultado dela concatenación sería el siguiente:

sel ect * f r om t r abaj ador es wher e nombr e l i ke ‘ %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 deasteriscos. 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 estamosmanipulando 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.

HAUTIRO

Page 398: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 398/719

 19. 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 todosaquellos trabajadores cuyo nombre contenga el texto fra. Por ejemplo, Francisco.

20. Sigamos mejorando el programa. Añade estos cuadros de texto y estos botones:

Se escribe fra, sepulsa el botónContiene a, yentonces el

programa construyeuna consulta quemuestra lostrabajadores cuyonombre contengafra.

txtDia txtMes txtAnio btnAnterior btnDespues

HAUTIRO

Page 399: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 399/719

21. El objetivo de estos elementos añadidos es el siguiente:

- El usuario introducirá una fecha (día, mes y año) en los cuadros de textotxtDia, txtMes, txtAnio.

- Luego, si pulsa el botón Anterior , aparecerán los trabajadores que hayanentrado en la empresa antes de la fecha indicada.

- Si pulsa el botón Después, en cambio, aparecerán los trabajadores que hayanentrado en la empresa después de la fecha indicada.

22. Empezaremos programando el botón Anterior . Accede a su actionPerformed eincluye el siguiente código (es un código similar al anterior, solo tienes que realizar unpequeño cambio):

Presta mucha atención al código remarcado. En él, se construye una consulta que permitemostrar aquellos trabajadores cuya fecha de entrada en la empresa sea anterior a laindicada en los cuadros de texto.

Esto se consigue concatenando varias cadenas (se indican a continuación en distintos

colores para facilitar la comprensión)

HAUTIRO

Page 400: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 400/719

 Primera cadena: sel ect * f r omt r abaj ador es wher e f echa < # 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á:

sel ect * f r om t r abaj adores wher e f echa < #12/ 20/ 2006# 

Es decir, la cadena resultante es una consulta SQL que busca los trabajadores cuya fechade entrada en la empresa sea anterior al 20 del 12 del 2006

NOTA:

Recuerda que para que Access entienda las fechas al hacer una consulta SQL, es necesarioindicarlas en el formato mes/ di a/ año.

Por otro lado, recuerda que las fechas deben estar rodeadas por almohadillas # 

23. 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 queentraron antes de la fecha indicada.

HAUTIRO

Page 401: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 401/719

 

24. Como ejercicio se propone que programe el botón Después. Al pulsar este botón, semostrarán los trabajadores que hayan entrado antes de la fecha indicada en loscuadros 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 loscuadroscorrespondientes.

Al pulsar el botón Anterior , elprogramamostrará lostrabajadores quehayan entradoantes de esafecha.

HAUTIRO

Page 402: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 402/719

 

CONCLUSIÓN

 A través del objeto sentencia podemos ejecutar una consulta SQL en una base dedatos.

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 int roducidos por el usuario en cuadros de textos uotros controles.

 Al hacer que el usuario pueda part ic ipar en la construcc ión de la consulta aportandosus propios datos, le damos la posibilidad de que él decida la información que sequiere extraer de la base de datos . De esta manera se consigue que el programa seamás potente.

 A tener en cuenta lo siguiente acerca de las consul tas SQL ejecutadas desde unaaplicació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

HAUTIRO

Page 403: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 403/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ónsobre 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 consul tas de selección y de consultas de acción.

Hasta ahora se han realizado programas java que ejecutaban consultas de selección sobrela base de datos.

Recuerda que para ejecutar estas consultas se usa el método executeQuery del objetosentencia y el resultado de la consulta se almacena en un objeto ResultSet:

Resul t Set r = sent enci a. execut eQuer y( “sel ect . . . ”) ;

En esta hoja guiada veremos la ejecución de consultas de acción sobre la base de datosdesde la aplicación java. Este tipo de consultas se ejecutan usando el métodoexecuteUpdate del objeto sentencia, y no devuelven un resultado concreto, ya quesimplemente 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á:

sent enci a. execut eUpdat e( “i nser t . . . ”) ;

Para realizar una modificación en la base de datos se usará:

sent enci a. execut eUpdat e( “updat e . . . “) ;

Para realizar una eliminación en la base de datos se usará:

sent enci a. execut eUpdat e( “del et e . . . “) ;

HAUTIRO

Page 404: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 404/719

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 detrabajadores y además permitirá introducir nuevos trabajadores.

1. Entre en NetBeans. Crea un nuevo proyecto llamado GestionTrabajadores. Dentro deeste proyecto crea un paquete principal llamado paqueteprincipal y dentro de él un

 J Frame llamado ventanaprincipal:

2. Añade a la ventana un J TextPane y un botón de momento:

El botón se llamará btnTrabajadores y el J TextPane se llamará panelTexto.

HAUTIRO

Page 405: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 405/719

 

3. Para que este programa pueda trabajar con la base de datos MANEMPSA tendrá queprepararlo haciendo lo siguiente:

- Crear la subcarpeta Base y copiar en ella el fichero de base de datosMANEMPSA.MDB que tiene en la carpeta Mis Documentos.

- Añadir al programa los objetos conexión (Connection) y sentencia (Statement)como globales.

- Crear el procedimiento PrepararBaseDatos y llamarlo desde el constructor.

- Cerrar la conexión desde el evento windowClosing 

Realice estos cuatro pasos que se han indicado antes de continuar.

4. Ya se puede programar el botón btnTrabajadores. Se pretende que al pulsar estebotón aparezca en el panel panelTexto el contenido de la tabla trabajadores.

Para ello, en el actionPerformed del botón btnTrabajadores programe lo siguiente:

5. 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 elpanelTexto.

Programe el método MostrarTodos de la siguiente forma:

HAUTIRO

Page 406: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 406/719

 

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 latabla trabajadores y luego muestra dichos datos en el panel de la ventana.

Se muestra el listado procurando que las fechas aparezcan con el formato dia-mes-año, quelos sueldos aparezcan con la coma decimal y que si el campo matrícula fuera nulo o lacadena 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 llamadoMostrarTodos en vez de hacerlo directamente en el actionPerformed del botón se entenderámás adelante, cuando avancemos en el ejercicio guiado.

6. Ejecute el programa y pruebe el botón btnTrabajadores. Compruebe que realiza sucometido.

HAUTIRO

Page 407: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 407/719

7. Ahora que ya tenemos un programa capaz de visualizar a los trabajadores, añada lossiguientes elementos a la ventana principal:

8. El objetivo de estos elementos es el siguiente:

El usuario introducirá los datos de un nuevo trabajador en las casillas indicadas.

Luego, al pulsar el botón de Alta, se introducirá en la tabla trabajadores los datos delnuevo trabajador y aparecerá en el panel la lista actualizada de trabajadoresincluyendo al nuevo que se ha añadido.

Para ello tendrás que programar en el botón Alta lo siguiente:

Panel: panelAlta 

Cuadros de Texto:

txtDNI

txtNombre

txtApellidos

txtSueldo

txtDiatxtMestxtAnio

txtMatricula 

Botón: btnAlta 

HAUTIRO

Page 408: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 408/719

 Analicemos este código detenidamente.

Lo primero que hay que tener en cuenta es que se realiza una concatenación de cadenasdentro de la variable consulta.

Observa el uso de += para concatenar. Ten en cuenta que es lo mismo poner esto:

consul t a += “’ ”+t xtDNI . get Text ( ) +”’ , ”;

que poner esto:

consul t a = consul t a + “’ ”+t xtDNI . get Text ( ) +”’ , ”;

Solo que el uso de +=acorta las instrucciones.

Si se analiza la concatenación de las cadenas, se observará que el resultado es unainstrucción SQL del tipo INSERT INTO. Es decir, una instrucción SQL que permite lainserción de un nuevo registro en la tabla trabajadores.

Por ejemplo, supongamos que introducimos los siguientes valores en los cuadros de texto:

t xt DNI 11. 111. 111- At xt Nombre Mar í at xt Apel l i dos Rui zt xtSuel do 1100t xt Di a 10t xt Mes 4t xt Ani o 2001t xt Mat r i cul a 4433RET

La concatenación en la variable consulta resultaría lo siguiente (en azul los valores de loscuadros de texto, en rosa las cadenas que se concatenan):

i nser t i nt o t r abaj ador es val ues ( ‘ 11. 111. 111- A’ , ’ Marí a’ , ’ Rui z’ , 1100, #4/ 10/ 2001#, ’ 4433RET’ )  

HAUTIRO

Page 409: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 409/719

 Es decir, se sigue la misma estrategia que en la hoja anterior. Se concatenan trozos decadenas y datos introducidos por el usuario hasta conseguir una cadena con forma deinstrucción SQL.

En este ejemplo, la instrucción SQL construida por concatenación es una instrucciónINSERT INTO que permite introducir en la tabla trabajadores los datos de un nuevotrabajador.

El objeto que se encarga de ejecutar dentro de la base de datos la instrucción SQL reciénconstruida es el objeto sentencia:

sent enci a. execut eUpdat e( consul t a) ;

Como se puede observar, para ejecutar instrucciones SQL de acción ya no se usa el métodoexecuteQuery, sino que se usa el método executeUpdate.

Una vez ejecutada la introducción del nuevo registro en la base de datos, se llama alprocedimiento MostrarTodos el cual se encarga de mostrar todo el contenido de la tablatrabajadores en el panel de texto. Gracias a este método, veremos como se rellena el panely observaremos al nuevo registro recién introducido.

La razón de que se programara aparte el método MostrarTodos para mostrar el listadocompleto de trabajadores ha sido debido a la intención de llamar a este método desde otroslugares 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 evitarcualquier error inesperado. Ten en cuenta que pueden producirse errores fácilmente siintroducimos valores incorrectos en los cuadros de texto.

9. Finalmente ejecute el programa y compruebe su funcionamiento añadiendo variostrabajadores a la tabla:

HAUTIRO

Page 410: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 410/719

 

Introduce datos ypulsa el botónAlta.

En la partesuperior apareceráel listado completoincluyendo alnuevo trabajadorintroducido.

HAUTIRO

Page 411: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 411/719

 

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 consul ta a través de laconcatenación de subcadenas y datos introducidos por el usuario en cuadros detexto.

Este tipo de instrucciones SQL no devuelven ningún ResultSet, ya que no extraendatos de las tablas, sino que modifican el contenido de éstas.

HAUTIRO

Page 412: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 412/719

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 tipoINSERT 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 conlas 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 queejecutarlas usando el método executeUpdate del objeto sentencia.

sent enci a. execut eUpdat e( “del et e . . . “) ;

Al ejecutar estas consultas se cambiará el contenido de las tablas de la base de datos y no

se devolverá ningúnResultSet.

HAUTIRO

Page 413: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 413/719

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.

1. Entre en NetBeans. Abre el proyecto llamadoGestionTrabajadoresque se programóen la hoja anterior.

2. Añade en la parte inferior de la ventana un nuevo panel:

3. La mejora que se pretende hacer es la siguiente:

- El usuario introducirá en el cuadro de texto txtDNIEliminar el DNI deltrabajador que quiere eliminar.

- Al pulsar el botónEliminar el trabajador con dicho DNI se eliminará de latabla.

- Antes de eliminar al trabajador, se le pedirá al usuario una confirmación, paraevitar un borrado accidental.

- Si el DNI introducido no se correspondiera con ningún trabajador de la tabla,

entonces se mostrará un mensaje indicándolo.

Panel: panelBajas 

Cuadro de texto: txtDNIEliminar 

Botón: btnEliminar  

HAUTIRO

Page 414: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 414/719

 4. Para hacer esto, entre en el actionPerformed del botónEliminar 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:

consul t a="sel ect * f r om t r abaj ador es wher e DNI =' "+t xtDNI El i mi nar . get Text( ) +"' ";Resul t Set r =sent enci a. execut eQuery( consul t a);

Esto se hace para extraer aquellos trabajadores que tengan el DNI introducido en el cuadrode 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:

i f ( ! r . f i r st ( ) ) {

Este if significa: “si no puedo col ocar me en el pr i mer el ement o del ResultSet r ”.

HAUTIRO

Page 415: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 415/719

Si no es posible colocarse en el primer elemento del resultado de la consulta será porque nohay un primer elemento, o dicho de otra forma, porque el ResultSet está vacío, o dicho deotra 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 J OptionPane indicando dicha circunstancia.

En caso contrario, existe ese trabajador y por tanto podemos borrarlo. Observa el contenidodel else:

r esp=J Opt i onPane. showConf i r mDi al og( nul l , "¿Conf i r ma el borr ado?","Borr ar" , J Opt i onPane. YES_NO_OPTI ON) ;

i f ( r esp==J Opt i onPane. YES_OPTI ON) {

Este trozo de código le pregunta al usuario si quiere borrar realmente al trabajador. Si larespuesta es sí (YES_OPTION) se efectuará el borrado tal como se indica a continuación:

consul t a="del et e f r om t r abaj ador es wher e DNI =' "+t xtDNI El i mi nar . get Text( ) +"' ";

sent enci a. execut eUpdat e( consul t a) ; / / se ej ecut a l a el i mi naci onMost r arTodos( ) ; / / y se muest r a l a tabl a de nuevo

Como puede observar, se construye a través de una concatenación, una consulta de acciónSQL 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 deltrabajador.

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.

5. Ejecute el programa y pruebe a eliminar trabajadores de la tabla. Se recomienda quepruebe a introducir DNIs inexistentes, para ver que ocurre. Pruebe también laconfirmación del borrado: responda a veces que sí y otras veces que no.

HAUTIRO

Page 416: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 416/719

 

Introduzca el DNI del trabajadorque quiere borrar y luego pulseEliminar .

Al hacerlo el listado se actualizaráy ya no mostrará el trabajador condicho DNI ya que habrá sidoborrado.

Si el DNI no existiera el borrado nose produciría y mostraría unmensaje de error.

HAUTIRO

Page 417: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 417/719

 

CONCLUSIÓN

Se pueden ejecutar instrucciones SQL del tipo DELETE (borrar registros) usando elobjeto 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 laconcatenación de subcadenas y datos introducidos por el usuario en cuadros detexto.

Este tipo de instrucciones SQL no devuelven ningún ResultSet, ya que no extraendatos 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 ycomprobando si el ResultSet resultante contiene algún registro, usando el métodofirst.

También se recomienda pedir confi rmación al usuario antes de realizar borrados enlas tablas.

HAUTIRO

Page 418: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 418/719

EJERCICIO GUIADO. JAVA. ACCESO A BASE DE DATOS

Consultas de Acción. Modifi caciones.

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únresultado. 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. Enesta hoja guiada veremos como ejecutar consultas de acción de modificación: UPDATE.

HAUTIRO

Page 419: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 419/719

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 quetambién permita realizar modificaciones en los datos de los trabajadores de dicha tabla.

1. Entre en NetBeans. Abre el proyecto llamado GestionTrabajadores que se programóen la hoja anterior.

2. Modifique la ventana principal añadiendo un nuevo panel con los siguientescomponentes:

Nuevo panel

El panel se llamarápanelModificar  

El botón es btnBuscar  

Los cuadros de texto sellaman respectivamente:

txtModDNItxtModNombretxtModApellidostxtModSueldotxtModDiatxtModMestxtModAniotxtModMatricula 

El botón es btnModificar  

HAUTIRO

Page 420: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 420/719

 

3. La mejora que se pretende hacer es la siguiente:

- El usuario introducirá en el cuadro de texto txtModDNI el DNI del trabajadorcuyos datos se quieren modificar.

- Al pulsar el botón Buscar , el resto de cuadros de texto se rellenarán con losdatos del trabajador al que pertenece dicho DNI. (Si dicho DNI no existiera, semostraría un mensaje de error)

- Cuando aparezcan los datos del trabajador en los cuadros de texto, el usuariopodrá realizar las modificaciones pertinentes.

- Al pulsarse el botón Efectuar Modificación se modificarán los datos en latabla.

4. Primero programaremos el botón de búsqueda. Entre en el actionPerformed de estebotón y programe lo siguiente:

Estudiemos atentamente el código anterior:

HAUTIRO

Page 421: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 421/719

Lo primero que hace el código es construir una consulta de selección que busque a todos lostrabajadores 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 através del siguiente if si no existe un trabajador con dicho DNI en el ResultSet:

i f ( ! r . f i r st ( ) ) {

En ese caso muestra un mensaje de error indicando que no se ha encontrado dichotrabajador.

En caso contrario muestra los datos del trabajador encontrado en los cuadros de texto. Paraello, se extrae del ResultSet cada campo y se coloca en el cuadro de texto correspondiente.Por ejemplo:

t xt ModNombr e. set Text ( r . getText ( “nombr e”) ) ;

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 lacadena el día, el mes y el año, situando cada dato en su cuadro de texto correspondiente.

cadef e = r . get St r i ng( "f echa") ;caddi a=cadef e. subst r i ng( 8, 10) ;cadmes=cadef e. subst r i ng(5, 7) ;cadani o=cadef e. subst r i ng( 0, 4) ;t xtModDi a. set Text( caddi a) ;t xt ModMes. set Text ( cadmes) ;t xtModAni o. set Text ( cadani o) ;  

Recuerda que cuando se extrae una fecha de un ResultSet, su formato es:

año- mes- di a- hor a: mi nut os

Por ejemplo: 2001- 12- 23- 00: 00 

Así pues, si el DNI introducido pertenece a uno de los trabajadores de la tabla, sus datosaparecerán en los cuadros de texto cuando se pulse el botón Buscar .

HAUTIRO

Page 422: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 422/719

 5. Ejecuta el programa y comprueba su funcionamiento. Escribe un DNI en el cuadro del

DNI de búsqueda y pulsa Buscar .

6. Se supone que cuando aparezcan los datos del trabajador en los cuadros de texto elusuario los modificará según le interese. Luego, al pulsar el botón Efectuar Modificación los nuevos datos serán actualizados en la tabla.

7. Para hacer esto, entre en el actionPerformed del botón Efectuar Modificación yprograme lo siguiente:

Se introduce un DNI yluego se pulsa Buscar .

Si existe un trabajador conese DNI, sus datosaparecerán en los cuadrosde texto.

HAUTIRO

Page 423: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 423/719

 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 deactualizació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 UPDATEen la que los datos que se actualizan son precisamente los datos introducidos en los cuadrosde texto del panel de modificación.

Por ejemplo, si estos fueran los valores de los cuadros de texto del panel de modificación:

txtModDNI 11.111.111-AtxtModNombre J uantxtModApellidos PereztxtModSueldo 1100txtModDia 4

txtModMes

12txtModAnio 2001txtModMatricula 1234-ABC

La instrucción ya construida por concatenación sería la siguiente:

update t r abaj adoresset nombre=’ J uan’ , apel l i dos=’ Per ez’ , suel do=1100, f echa=#12/ 4/ 2001#, mat r i cul a=’ 1234- ABC’wher e dni =’ 11. 111. 111- A’

Esta instrucción SQL de tipo UPDATE incluye una cláusula WHERE con una condición deforma que solo se modifica aquel trabajador que tenga el DNI introducido en el cuadro detexto txtModDNI.

Una vez construida la consulta UPDATE, esta se ejecuta usando el objeto sentencia y luegose muestra el contenido de la tabla trabajadores en el panel a través de una llamada almétodo MostrarTodos.

 Todo este código está rodeado de un try...catch para evitar errores inesperados.

8. Comprueba el funcionamiento del programa ejecutándolo. Debes introducir un DNI ypulsar el botón Buscar para que se rellenen los cuadros de texto con los datos deltrabajador.

Luego cambia algún dato de los que han aparecido en los cuadros de texto y pulsa elbotón Efectuar Modificación.

Si observas el panel de texto deberá aparecer la lista completa de trabajadores y enella podrás observar la modificación que se ha realizado en el trabajadorcorrespondiente.

HAUTIRO

Page 424: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 424/719

 

Se introduce un DNI y se leda a Buscar .

Los cuadros de texto serellenan con los datos deltrabajador.

Se realiza la modificación

que se quiera en loscuadros de texto.

Finalmente se pulsaEfectuar Modificación paraque se realice lamodificación.

En el panel aparecerá lalista actualizada de lostrabajadores.

HAUTIRO

Page 425: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 425/719

 

CONCLUSIÓN

Se pueden ejecutar instrucciones SQL del tipo UPDATE (modif icar regist ros) usandoel 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 laconcatenación de subcadenas y datos introducidos por el usuario en cuadros detexto.

Este tipo de instrucciones SQL no devuelven ningún ResultSet, ya que no extraendatos 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

modif icar y que sus datos aparezcan en varios cuadros de texto, de forma que elusuario tenga más facilidad a la hora de realizar los datos.

HAUTIRO

Page 426: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 426/719

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 basede datos a través de consultas SQL de tipo SELECT. Los datos extraídos se almacenan enobjetos de tipo ResultSet.

Luego, solo hay que analizar el contenido del objeto ResultSet para extraer los datos quecontiene y trabajar con ellos.

En las hojas anteriores hemos extraído los datos del ResultSet y los hemos presentado enun J OptionPane o en un J TextPane. Sin embargo, una mejor opción para presentar elcontenido de un ResultSet es usar objetos del tipo J Table, ya que estos objetos tienen formade tabla.

En esta hoja guiada se estudiarán los objetos J Table (sin tener en cuenta a las bases dedatos) Una vez que entendamos el funcionamiento de los objetos JTable, los usaremos enposteriores hojas guiadas para presentar dentro de ellos el contenido de consultas SQL.

HAUTIRO

Page 427: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 427/719

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 losobjetos JTable se añaden siempre dentro de un panel de desplazamiento JScrollPane:

2. El objeto tabla que se acaba de introducir tiene por defecto cuatro columnas con los

nombres “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 aintroducir algún dato en las celdas de la tabla...

HAUTIRO

Page 428: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 428/719

 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 queprogramaremos a continuación.

4. Programa ahora el método PrepararTabla de la siguiente forma:

Haz doble clic para

introducir datos enlas celdas...

HAUTIRO

Page 429: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 429/719

La primera línea del código define un array de String con los títulos de la tabla, es decir, conlas 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)

Hay que recordar que existen objetos en java que contienen un objeto modelo, encargado decontener los datos del objeto. Un ejemplo de ello son las listas y los combos (cuadrosdesplegables)

Para definir los datos contenidos en el objeto, primero había que definir el modelo y luegoasignar el modelo al objeto.

El caso de las tablas es igual. Para introducir datos en la tabla primero hay que configurar suobjeto 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:

Def aul t Tabl eModel m = new Def aul t Tabl eModel ( nul l , t i t ul os) ;

El valor null hace que la tabla aparezca vacía en un principio, mientras que el vector títulosdefine las columnas que tendrá la tabla.

Una vez construido de esta forma el objeto modelo m, este se asigna al objeto tabla:

t abl a. setModel ( m) ;

La razón por la que se ha declarado el objeto modelo m como global es que será usado enotros métodos del programa.

5. Ejecuta el programa y observa el resultado:

HAUTIRO

Page 430: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 430/719

 

Como puedes observar, se ha creado una tabla vacía con cinco columnas correspondientesal vector de títulos.

6. Vamos a añadir un botón a la ventana con el texto Nueva Fila, al cual llamaremosbtnNueva:

HAUTIRO

Page 431: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 431/719

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:

La primera línea recoge el modelo de la tabla a través del método getModel. El modelo esrecogido en la variable global m que creamos anteriormente. Observa como es necesariorealizar un cast (en rojo) a la hora de asignar el modelo a la variable m:

m = ( Def aul t Tabl eModel ) t abl a. get Model ( ) ;

El resultado de esta instrucción es que volvemos a tener disponible el modelo de la tabla enla variable m, y por tanto, podemos manipular los datos contenidos en la tabla a través deesta variable.

Por ejemplo, se usará el modelo m para añadir una fila en blanco en la tabla. Para ello, bastacon crear un vector de cadenas de 5 elementos (ya que hay cinco columnas):

St r i ng f i l avaci a[ ] =new St r i ng[ 5] ;

 Y luego, a través del método addRow (añadir fila), añadir una fila correspondiente a losvalores del vector:

m. addRow( f i l avaci a) ;

Debido a que el vector está vacío, la fila que se añade está vacía también. Si el vectorcontuviera algún dato, estos datos aparecerían en la fila que se añade (esto se verá acontinuación)

7. Ejecuta el programa y pulsa varias veces el botónNueva Fila. Observarás como sevan añadiendo filas vacías a la tabla.

HAUTIRO

Page 432: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 432/719

 

8. Para entender bien el funcionamiento de la inserción de filas en la tabla, añada otrobotón llamado btnNuevoElemento con el texto Nuevo Elemento:

9. En este botón programe lo siguiente:

Puedes observar que el código es parecido al anterior, solo que en este caso se añade unafila correspondiente a un vector relleno de datos. Esto quiere decir que cuando se añadaesta fila al modelo aparecerá con los datos del vector.

Pulsa el botón y seañadirán filas enblanco...

HAUTIRO

Page 433: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 433/719

10. Ejecuta el programa y comprueba su funcionamiento, observarás que al pulsar elnuevo botón aparecen filas rellenas.

11. Sigamos experimentando con la tabla. Ahora añadiremos un botón btnEliminar con eltexto “Eliminar Fila”:

12. Este botón eliminará la fila que esté seleccionada en ese momento. Para elloprograme en este botón el siguiente código:

Cuando se pulsa elbotón Nuevo Elemento aparecen filas yarellenas.

HAUTIRO

Page 434: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 434/719

Estudiemos este código. En primer lugar usamos un método que poseen los objetos J Tablellamado getSelectedRow que nos dice el número de la fila que está seleccionada en estemomento.

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 diciendoque 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 paraborrar 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 pulsarel botón Eliminar . Observa también lo que sucede cuando intentas eliminar una fila

cuando no hay ninguna seleccionada.

Al pulsar eliminar filase eliminará la filaque estéseleccionada de latabla.

Si no hubiera ninguna

fila seleccionadaaparecería unmensaje de error.

HAUTIRO

Page 435: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 435/719

 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 lacolumna, 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 3columna 4)

Así pues programe lo siguiente en el botón Ver Valor :

Estudiemos el código.

Primero, se recogen los valores introducidos en los cuadros de texto de la fila y columna y seconvierten a enteros:

f i l a = I nt eger. par seI nt ( t xt Fi l a. get Text ( ) ) ;col = I nt eger . par seI nt ( t xtCol umna. get Text ( ) ) ;

Luego, se extrae el modelo de la tabla y se usa un método llamado getValueAt. Este métodopermite extraer el valor de una casilla de la tabla, indicando la fila y columna de esa celda. Elresultado lo hemos almacenado en una variable valor de tipo cadena. Es necesario realizarun cast (en rojo):

txtFila txtColumna btnVerValor etiValor

HAUTIRO

Page 436: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 436/719

 val or = ( St r i ng) m. get Val ueAt ( f i l a, col ) ;

Finalmente, una vez extraído el valor de la celda de la posición fila, col este se coloca en laetiqueta etiValor .

Este código es susceptible de dar error, por ejemplo si el usuario introduce unos valores defila 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 :

17. Sigamos experimentando. Añade lo siguiente a la ventana:

Se introdujo laposición: 2, 1.

Por tanto se quiere verel valor de la casilla 2,1(tanto las filas como lascolumnas empiezan en0)

btnIntroducir txtNuevoValor

HAUTIRO

Page 437: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 437/719

 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 elcuadro 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 indicadapor 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 ycolumna son convertidas a enteros.

f i l a = I nt eger. par seI nt ( t xt Fi l a. get Text ( ) ) ;col = I nt eger . par seI nt ( t xtCol umna. get Text ( ) ) ;val or = t xtNuevoVal or . get Text ( ) ;  

Luego se extrae (como siempre) el modelo de la tabla y se usa un método suyo llamadosetValueAt que permite introducir un valor en una celda de la tabla. Concretamente, seintroduce el valor escrito por el usuario en la celda con fila y columna indicadas:

m=( Def aul t Tabl eModel ) t abl a. getModel ( ) ;m. set Val ueAt ( val or , f i l a, col ) ;

Este código es susceptible de tener errores de ejecución (por ejemplo que el usuariointroduzca 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 lafila y la columna y escribe un valor que quieras introducir. Al pulsar el botón Introducir  dicho valor aparecerá en la celda correspondiente:

HAUTIRO

Page 438: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 438/719

 

Introduce una fila ycolumna.

Luego introduce un dato.

 Y al pulsar el botónIntroducir el resultado esque el dato se introduceen la celda indicada por lafila y columna.

Recuerda que las filas ycolumnas empiezan anumerarse por 0 en un J Table.

HAUTIRO

Page 439: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 439/719

 

CONCLUSIÓN

Existe una clase llamada JTable que permite crear objetos con forma de tabla.

Estos ob jetos son ideales para mostrar el contenido de las tablas de una base dedatos, 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 const ruir su modelo yasigná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 t rabajar con él.

 A través del modelo de una tabla podemos añadir nuevas fi las a la tabla, eliminar fi las,extraer datos de las celdas de la tabla o añadir datos a las celdas de la tabla.

HAUTIRO

Page 440: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 440/719

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 J Table que nos permiteintroducir tablas en nuestras aplicaciones.

Estos objetos son ideales para mostrar el contenido de una tabla de la base de datos o delresultado de una consulta.

Recuerda que para extraer datos de la base de datos realizamos una consulta SQL de tipoSELECT cuyo resultado se almacena en un objeto ResultSet.

Un ResultSet básicamente es una tabla almacenada en memoria (y por tanto no visible) Sinembargo, en esta hoja guiada veremos como trasladar el contenido de un ResultSet a un

 J Table para que el usuario pueda visualizar los datos de forma cómoda.

El proceso será básicamente el siguiente:

Base deDatos

ResultSet J Table

HAUTIRO

Page 441: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 441/719

EJERCICIO GUIADO Nº 1

1. 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 datosMANEMPSA.MDB

b. Declarar los dos objetos globales: conexión y sentencia.

c. Programar el método PrepararBaseDatos de forma que el programa acceda ala base de datos y se construyan los objetos conexión y sentencia.

d. Programar el evento windowClosing de la ventana principal de forma que secierre la conexión.

2. Una vez hecho esto, añade a la ventana principal un objeto J Table y llámalosimplemente tabla.

3. Añade en la parte inferior un botón llamado btnTrabajadores. La ventana principalquedará así:

4. Agregaremos al proyecto un objeto “modelo de tabla” (DefaultTableModel) llamado mque 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:

HAUTIRO

Page 442: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 442/719

 

Si observas el código, verás que en el método PrepararTabla se crea un vector decadenas 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, comotítulos aparecen letras: A, B, C, etc)

5. Ejecuta el programa para ver su aspecto de momento.

HAUTIRO

Page 443: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 443/719

 

6. Bien, ahora programaremos el botón btnTrabajadores de forma que al pulsarlo semuestre el contenido de la tabla Trabajadores. Programe lo siguiente:

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 objetosentencia. El resultado de dicha consulta sealmacenará en un objeto ResultSet llamado r.

Resul t Set r = sent enci a. execut eQuer y( "sel ect * f r om t r abaj ador es" ) ;

Debido a que

hemos asignado unvector de títulos sincontenido, lascolumnas tienencomo título letras.

HAUTIRO

Page 444: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 444/719

 A continuación, se extraerá información del ResultSet y se introducirá en la tabla. Lo primeroque se hace es crear el modelo de la tabla definiendo la cabecera. Observa el código.

St r i ng t i t ul os[ ] = {"DNI ", "Nombr e", "Apel l i dos", "Suel do", "Fecha", "Mat r í cul a"};m=new Def aul t Tabl eModel ( nul l , t i t ul os) ;

t abl a. setModel ( m) ;

Como ves, lo que hacemos es definir un vector de cadenas con los títulos correspondientesa 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.

7. Ejecute el programa de momento. Observe como al pulsar el botón Trabajadores lacabecera de la tabla pasa a contener los campos indicados en el vector títulos.

8. Ahora ya solo nos queda recoger todo el contenido del ResultSet y mostrarlo en latabla. Para ello, modifique el código del actionPerformed del botón Trabajadores paraque quede como sigue:

HAUTIRO

Page 445: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 445/719

 

Si estudiamos el código, veremos que se extrae la tabla trabajadores entera introduciéndolaen 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 detítulos, que se corresponde a los campos de la tabla trabajadores.

Una vez hecho esto, creamos un vector de seis elementos, correspondiente a los seis datosque contiene cada fila, y empezamos a recorrer el ResultSet usando el típico:

whi l e ( r . next ( ) ) {

En cada vuelta del bucle tomamos los valores de la fila del ResultSet y los almacenamos enel 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 sonextraídos del ResultSet.

Cuando el bucle ha terminado, el modelo de la tabla contiene exactamente lo mismo que elResultSet. Es decir, contiene la tabla trabajadores, ya que este fue el resultado de laconsulta SQL ejecutada.

 Ya solo tenemos que asignar el modelo de la tabla al J Table correspondiente, es decir, a latabla, con lo que esta visualizará los datos del modelo.

 Todo este proceso se rodea con un try...catch para evitar errores inesperados.

HAUTIRO

Page 446: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 446/719

9. Para entender el código anterior aquí tienes un pequeño gráfico explicativo:

Base de Datos ResultSet Vector  Modelo de Tabla JTable

-De la base de datos extraemos datos a un ResultSet. (Esto se haceejecutando una consulta SQL de tipo SELECT a través del objetosentencia)

- Del ResultSet extraemos los datos a un modelo de tabla. (Esto sehace recorriendo el ResultSet y almacenando cada registro en unvector)

- Almacenamiento del vector en el modelo de tabla. (Cada vectorextraido del ResultSet se inserta como fila en el modelo de tabla)

-

Se asigna el modelo de tabla al objeto J Table. (Al hacer esto elobjeto JTable muestra el contenido del modelo)

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

11. Si observa la tabla verá que la fecha aparece en el formato estándar dealmacenamiento:

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:

HAUTIRO

Page 447: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 447/719

 

Como se puede observar, antes de almacenar los sueldos en el modelo de la tabla sereemplazan 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 concatenanen un formato más habitual: dia/mes/año.

12. Ejecuta ahora el programa y observa como se muestran las fechas y los sueldos:

HAUTIRO

Page 448: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 448/719

 

CONCLUSIÓN

El proceso a seguir para mostrar una tabla de una base de datos en un JTable es elsiguiente:

-  Realizar una consulta SELECT para extraer los datos de la tabla de la base dedatos. El resultado se almacenará en un ResultSet.

-  Recorrer el ResultSet almacenando cada una de sus f ilas en un vector y luegotraspasando este vector a un modelo de tabla.

-  Una vez que el modelo de tabla está relleno, asignar el modelo a un JTable.

HAUTIRO

Page 449: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 449/719

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 datosen un J Table de la aplicación java.

Se puede aprovechar esta idea de forma que todas las operaciones que realicemos sobreuna tabla se vean inmediatamente reflejadas en el J Table de la aplicación java.

Por ejemplo, si eliminamos un registro sería interesante que automáticamente viéramos latabla actualizada en el J Table.

En esta hoja guiada se mejorará la aplicación de la hoja guiada anterior, dotándola deopciones para la gestión de la tabla Trabajadores.

HAUTIRO

Page 450: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 450/719

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áticamenteel contenido de la tabla Trabajadores en el J Table. Para ello, realice los siguientescambios 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étodoMostrarTrabajadores, en elconstructor del programa.

HAUTIRO

Page 451: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 451/719

5. Lo que produce esta modificación del código es que al ejecutarse el programa seejecute el método MostrarTrabajadores con lo que se ejecutará el código que hicimosen la hoja anterior para mostrar los datos de la tabla trabajadores en el J Table.

Ejecuta el programa y comprueba el resultado.

6. Puesto que la tabla trabajadores se muestra al empezar el programa, la existenciadel botón Trabajadores no tiene sentido, así pues elimina el botón Trabajadores de laventana.

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 pulsarel botón Eliminar dicho trabajador se elimine de la base de datos. Esta eliminación

por supuesto se verá reflejada en el J Table.

Para ello, programe en el botón Eliminar lo siguiente:

HAUTIRO

Page 452: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 452/719

 

Estudiemos con detenimiento el código programado.

Lo primero que se hace es recoger la fila seleccionada de la tabla usando el métodogetSelectedRow. Si el valor devuelto es –1 entonces es que no hay ninguna filaseleccionada. El programa avisa de esta circunstancia.

Si se seleccionó a un trabajador, entonces podemos borrar. Pero antes, es interesante pedirconfirmación. Esto es lo que se hace con el J OptionPane.showConfirmDialog.

Si el usuario acepta la eliminación del trabajador, entonces la llevamos a cabo. Observa elproceso:

-Extraemos del modelo del J Table el dni del trabajador seleccionado (este dni seencuentra en la fila seleccionada –filsel- columna 0 –la primera columna-):

m = ( Def aul t Tabl eModel ) t abl a. get Model ( ) ;dni = ( St r i ng) m. get Val ueAt ( f i l sel , 0) ;

- Ahora se construirá una instrucción de acción SQL del tipo DELETE para que se elimineel trabajador con el dni extraído. Esto se hace concatenando y ejecutando la instrucciónSQL a través del objeto sentencia:

sent enci a. execut eUpdate( "del et e f r omt r abaj adores where dni =' "+dni +" ' " ) ;

HAUTIRO

Page 453: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 453/719

- Y finalmente se llama al procedimiento MostrarTabla para que se extraiga de la base dedatos 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 J Table seactualiza cuando se produce la eliminación.

10. Ahora añade otro botón llamado btnNuevo:

11. Cuando se pulse el botón Nuevo se pretende que aparezca un formulario donde sepuedan introducir los datos de un nuevo trabajador. Esto se conseguirá añadiendo uncuadro de diálogo a nuestro proyecto. Para ello, agrega un JDialog al proyecto. Estediálogo se llamará dialogoNuevo.

12. Haga doble clic en el Inspector sobre el dialogoNuevo para diseñarlo. Debe quedarcomo sigue, con los nombres que se indican a continuación:

HAUTIRO

Page 454: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 454/719

 

13. La idea es la siguiente. Cuando el usuario pulse el botón Nuevo, aparecerá estecuadro 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 J Table 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:

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 setermine de trabajar con este cuadro de diálogo no se podrá continuar usando elprograma principal.

Luego se muestra dicho cuadro de diálogo.

 Y finalmente se actualiza el J Table por si se hubiera introducido un nuevo trabajador.

txtNuevoDni

txtNuevoNombre

txtNuevoApellidos

txtNuevoSueldo

txtNuevoDia txtNuevoMes txtNuevoAnio

txtNuevoMatricula

btnNuevoAceptar

btnNuevoCancelar

HAUTIRO

Page 455: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 455/719

14. Ahora programemos los botones del cuadro de diálogo dialogoNuevo. Empecemospor el botón Cancelar :

Como ves, tan sencillo como descargar el cuadro de diálogo. El botón Cancelar debelimitarse 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 queeste botón es el que introduce en la base de datos a un nuevo trabajador. Programadentro de este botón lo siguiente:

Vamos a analizar detenidamente este código.

Lo primero que puedes observar es un conjunto de líneas que copian el contenido de loscuadros de texto en variables de cadena. Al hacer esto, cambiamos la coma decimal porpunto decimal en el caso del sueldo y configuramos la fecha en el formato que entiendeSQL: mes/dia/año.

Luego, con estas variables, se construye por concatenación una instrucción SQL de tipoINSERT 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.

HAUTIRO

Page 456: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 456/719

 16. Ejecuta el programa y prueba a introducir nuevos trabajadores.

17. Nuestro programa ya puede hacer altas y bajas. Solo queda que pueda realizarmodificaciones. Para ello añade un nuevo botón a la ventana, llamado btnModificar :

18. Se pretende que el usuario seleccione en la tabla el trabajador cuyos datos quieremodificar, 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 puedacambiar fácilmente los datos.

Ese cuadro de diálogo será muy parecido al que hemos hecho antes, así quebásicamente solo tendrás que hacer una copia de dicho cuadro de diálogo ymodificarlo 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 :

HAUTIRO

Page 457: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 457/719

 20. Luego activa Pegar sobre Otros Componentes:

21. Aparecerá un nuevo cuadro de diálogo que es una copia del anterior. Este cuadrotendrá como nombre dialogoNuevo1.

22. Sin embargo, le cambiaremos el nombre para que sea más acorde con su función. Lellamaremos dialogoModificar . Cámbiale el nombre:

23. Vamos a modificar un poco el diseño del dialogoModificar . Haz doble clic sobre él yrealiza las siguientes modificaciones en el diseño:

HAUTIRO

Page 458: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 458/719

 

24. Empezaremos programando el botón Modificar . Al pulsar este botón se debe mostrarel cuadro de diálogo anterior relleno con los datos del trabajador que se quieremodificar. Se supone que el usuario ha seleccionado a este trabajador en la tablaanteriormente.

Entra en el actionPerformed del botón Modificar y programa lo siguiente:

Cambia el título. Ahora es “Modificar Trabajador”

Los nombres para los cuadros de texto ybotones serán:

txtModDni (Desactiva su propiedad editable) 

txtModNombre

txtModApellidos

txtModSueldo

txtModDia txtModMes txtModAnio

txtModMatricula

btnModAceptar btnModCancelar

HAUTIRO

Page 459: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 459/719

 

Estudiemos el código.

Primero se comprueba el número de la fila seleccionada. Si no hubiera ninguna se muestraun mensaje de error, ya que es necesario modificar la fila del trabajador que se quieremodificar.

En el caso de que haya una fila seleccionada, se extraen los datos del modelo del J Table yse almacenan en varias variables de cadena.

Una vez hecho esto, esas mismas variables se almacenan en los cuadros de texto delcuadro 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 latabla llamando al método MostrarTrabajadores.

25. Puedes comprobar el funcionamiento del programa de momento. Prueba aseleccionar una fila de la tabla y al pulsar el botón Modificar. 

HAUTIRO

Page 460: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 460/719

 

Selecciona...

 Y luego pulsamodificar.

HAUTIRO

Page 461: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 461/719

 

26. Lo bueno que tiene el rellenar el cuadro de diálogo dialogoModificar con los datos deltrabajador que se quiere modificar es que no tenemos que escribir todos los datos, ysolo 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.

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íamosmodificando los datos de otro trabajador.

El resultado es queaparece el cuadro de

diálogodialogoModificar yarelleno con los datosdel trabajador que seseleccionó.

HAUTIRO

Page 462: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 462/719

 Esta es la razón por la que el cuadro de texto txtModDni se ha configurado como noeditable, para evitar que el usuario pueda cambiarlo accidentalente.

Programa el siguiente código en el botón Aceptar :

Estudiemos el código.

Lo primero que se hace es recoger en variables los datos introducidos en los cuadros detexto.

Luego, con estas variables, se construye una instrucción SQL del tipo UPDATE quepermite modificar los datos del trabajador con el dni indicado en el cuadro de diálogo.

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 detrabajadores. Prueba a realizar varias actualizaciones. Observa como el J Table seactualiza con las nuevas modificaciones realizadas.

HAUTIRO

Page 463: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 463/719

 

CONCLUSIÓN

La más simple de las aplicaciones de base de datos debe ser capaz de realizar lassiguientes operaciones sobre una tabla:

-   Altas-  Bajas-  Modificaciones

Es muy interesante que la aplicación muestre en pantalla continuamente un JTablecon 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 elregistro que queramos manipular.

Para la inserción de nuevos regist ros en la tabla se recomienda la creación de uncuadro de diálogo que muestre un formulario donde el usuario pueda introducir losdatos del nuevo registro cómodamente.

Para la modificación de un registro, se recomienda la creación de otro cuadro dediálogo que muestre los datos del registro que se quiere modificar.

HAUTIRO

Page 464: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 464/719

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íarealizar altas, bajas y modificaciones sobre la tabla trabajadores de la base de datosMANEMPSA.

En todo momento se mostraba en un J Table el listado de trabajadores de la empresa.

La eliminación y modificación de un trabajador se podía realizar simplemente haciendo clicsobre la fila del trabajador correspondiente en el J Table y luego activando el botón Eliminar oModificar .

Sin embargo, en el momento en que tengamos una gran cantidad de trabajadoresalmacenados 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 latabla entera.

Se hace necesario pues añadir al programa ciertas opciones de filtrado que nos permitanvisualizar en el J Table solo aquellos registros que más nos interesen.

En esta hoja guiada se mejorará el programa de la hoja anterior de forma que permita alusuario ciertas opciones de filtrado.

HAUTIRO

Page 465: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 465/719

EJERCICIO GUIADO Nº 1

1. Abrir la aplicación de la hoja guiada anterior.

2. Primero debes añadir un botón btnFiltar a la ventana:

3. 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 (J Dialog) y asígnele elnombre dialogoFiltrar .

4. Haz doble clic sobre este diálogo y diséñelo de la siguiente forma:

txtFiltrarDni

txtFiltrarNombre

txtFiltrarApellidos

comboSueldo

txtFiltrarSueldo

comboFecha

txtFiltrarDia txtFiltrarMes txtFiltrarAnio

txtFiltrarMatricula

btnFiltrarAceptar

btnFiltrarVerTodos

btnFiltrarCancelar

HAUTIRO

Page 466: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 466/719

NOTA: Los dos combos del cuadro de diálogo deben contener los siguientes elementos:

= > < >= <= <>

Es decir, cuando se desplieguen aparecerá esto:

5. La idea es la siguiente. Cuando el usuario pulse el botón Filtrar , se mostrará estecuadro de diálogo. Entonces el usuario introducirá las condiciones de búsqueda ypulsará Aceptar , y entonces se visualizarán en el J Table aquellos registros quecumplan la condición.

Si el usuario pulsa el botón Ver Todos, entonces se mostrarán en el J Table todos lostrabajadores.

Si el usuario pulsa el botón Cancelar , entonces el cuadro de diálogo de filtrado se

cierra sin más.

6. Empezaremos programando el botón Filtrar de la ventana principal. Introduzca en élel siguiente código:

HAUTIRO

Page 467: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 467/719

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.

7. Ejecute el programa si quiere ver el funcionamiento de este botón.

8. Programemos ahora el botón Cancelar del cuadro de diálogo de filtrado. Laprogramación de este botón es muy sencilla:

Como puede ver consiste simplemente en cerrar el cuadro de diálogo de filtrado.

9. Se programará ahora el botón Aceptar , pero antes, es necesario entender comofuncionará el cuadro de diálogo de filtrado.

El usuario introducirá los datos que quiere buscar. Ten en cuenta que no tiene porqué rellenar todas las casillas. Además, puede hacer uso de los combos asignados alos campos sueldo y fecha. Por ejemplo, supongamos que el usuario introdujera lossiguientes datos:

Se pulsa el botónFiltrar y aparece elcuadro de diálogo defiltrado.

HAUTIRO

Page 468: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 468/719

 

Si en este momento el usuario pulsara el botón Aceptar , se tendrían que mostrar aquellostrabajadores 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 matriculacontenga la cadena “CA” . 

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 aquellostrabajadores que contengan dicha cadena. Por ejemplo, si introduzco “J uan” en el nombre, elprograma buscará a los trabajadores cuyo nombre contenga la palabra “J uan”. De estamanera la búsqueda será mucho más cómoda, al no tener que introducir el texto completo, yproducirá más resultados (se encontrarán a los que se llamen “J uan”, “J uanAntonio”,”J uana”, etc.

HAUTIRO

Page 469: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 469/719

 10. El botón Aceptar tendrá que construir una consulta SELECT que incluya estas

condiciones, y luego ejecutarla. Finalmente tendrá que mostrar el resultado de laconsulta en el J Table.

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 endistintas variables. También recogemos los valores seleccionados en los combos delsueldo y fecha.

En el caso de la fecha, recogemos de los cuadros de texto el día, mes y año y losconcatenamos 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 usuariointroducirá el valor en formato español) por el punto, para que no haya problemas a lahora de ejecutar la consulta SQL.

HAUTIRO

Page 470: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 470/719

 11. 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 queefectuará el filtrado (la consulta)

- La variable ncond (número de condiciones) es una variable numérica que vacontando cuantas condiciones hay. Ten en cuenta que habrá una condición cada vezque 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 primeracondición que se añade vendrá precedida por “where”, pero las demás estaránprecedidas por “and”.

La primera condición que se añade a la instrucción SELECT tendrá que tener estaforma (en rojo):

sel ect * f r om t r abaj ador es wher e condicion1 

La condición 2, condición 3, etc llevan el “and” delante. Por ejemplo, la segundacondición tendría esta forma (en azul):

sel ect * f rom t r abaj ador es wher e condicion1  and condicion2 

Agrega estas dos variablesen la parte inicial del método.

 Y en la partefinal del métodoañade elsiguiente

código...

HAUTIRO

Page 471: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 471/719

Si añadiéramos una tercera condición también llevaría el “and” (en verde):

sel ect * f r om t r abaj ador es wher e condicion1  and condicion2 and condicion3 

Etc.

Resumiendo, la primera condición vendrá antecedida de “where”, mientras que elresto de las condiciones vendrán antecedidas del “and”.

Si se observa el código añadido al final del método, en él se empieza construyendo elcomienzo de la consulta SELECT: “select * from trabajadores” y luego se añadencondiciones 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 seaumenta 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 decondiciones (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ásversátil. Y se recuerda una vez más que cuando usemos LIKE desde java en vez deasteriscos usaremos el símbolo tanto por ciento (%)

Estudia bien este código para entenderlo. Solo se ha indicado las posibles condiciones parael DNI y para el Nombre. Sin embargo será necesario añadir más if para el resto de loscampos.

12. Añada al final del código anterior el siguiente código:

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 primeracondición esta se concatena usando “where”, y si no, esta se concatena usando“and”.

HAUTIRO

Page 472: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 472/719

13. 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 hayaalgún dato en el cuadro de texto del sueldo)

Como en los casos anteriores, se suma uno al contador de condiciones y, si estamosante la primera condición se concatena con “where”, y si no, se concatena con “and”.

Hay que destacar aquí que, al ser el sueldo un campo numérico, no se usa LIKE, sinoque se usa el operador que el usuario haya escogido dentro del combo del sueldo.Recuerda que ese operador puede ser uno de los siguientes: =, >, <, >=, <= ,<> 

14. 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úndato 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 yaño se concatenan dentro de una variable fecha usando la / como separador. Si loscuadros 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 sies necesario añadir una condición para la fecha.

Como en los casos anteriores, se suma uno al contador de condiciones y secomprueba si estamos ante la primera condición. En este caso se concatena lacondición usando “where” y en caso contrario se concatena la condición usando“and”.

Observa que para crear la condición se usa el operador que el usuario haya elegidoen 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 enla condición.

HAUTIRO

Page 473: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 473/719

 

15. 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ículadel coche del trabajador. Por supuesto, esta condición solo se construye si se haescrito algo en el cuadro de texto de la matrícula.

Como en los casos anteriores se suma uno al contador de condiciones y si estamosante la primera condición entonces la condición se construirá usando “where”, y encaso contrario añadiremos esta condición usando “and”.

Como en los demás campos de tipo texto, para construir esta condición se hapreferido usar LIKE junto con los % (asteriscos en Access), que da más posibilidadesde búsqueda.

16. El resultado final de todo este largo código es que la variable sql contendrá unainstrucción SELECT que realizará un filtrado sobre la tabla trabajadores de la base dedatos de forma que se extraigan a los trabajadores que cumplan las condicionesindicadas 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 delcódigo anterior:

En este código se ejecuta la consulta creada y el resultado se introduce en unResultSet r.

Ahora hay que mostrar el contenido del ResultSet r en el J Table de la ventanaprincipal.

Como ve, el código da un error. Esto es debido a que es obligatorio rodear el códigocon un try...catch, ya que es susceptible de error. (Esto se hará más adelante)

HAUTIRO

Page 474: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 474/719

 17. Ahora mostraremos el ResultSet r en el J Table, 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étodoMostrarTrabajadores, encargado de mostrar toda la tabla trabajadores en el J Table.

Si observa este código verá que lo que hace es definir un vector de títulos para el J Table. A partir de este vector de títulos se crea el modelo del J Table(DefaultTableModel)

Luego se recorre el ResultSet r, que contiene ahora mismo el resultado del filtradorealizado, y se extrae cada fila almacenándola en un vector al que se ha llamado fila.

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 modelom, se asigna dicho modelo al J Table. Esto quiere decir que el J Table debería mostrarya el resultado del filtrado.

La razón de que aparezcan tantos errores es porque aún no hemos añadido eltry...catch. Esto lo haremos al final.

18. El código programado hasta ahora analiza los datos introducidos en el cuadro dediálogo de filtrado y construye una consulta SELECT que extrae los trabajadores quecumplan las condiciones indicadas. Estos datos se muestran finalmente en un

 J Table. Lo único que queda por hacer es cerrar el cuadro de diálogo.

Añade por tanto el siguiente código:

HAUTIRO

Page 475: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 475/719

 19. 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:

.... resto del código...

20. El código que se acaba de programar es un poco enrevesado y largo, pero le da alprograma una potencia tremenda, ya que permite al usuario realizar fácilmentebúsquedas y filtrados en la tabla trabajadores.

Ejecuta el programa y haz lo siguiente:

HAUTIRO

Page 476: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 476/719

 

Pulsa Filtrar para ver elcuadro de diálogo de filtrado.

Queremos buscar a lostrabajadores que tengan una“a” en el nombre y cobrenmenos de 1500 euros.(Recuerda activar el combo)

Pulsa Aceptar para ver elresultado.

HAUTIRO

Page 477: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 477/719

21. Como habrá podido observar en este ejemplo, se pueden realizar búsquedas en latabla trabajadores gracias al código programado. Esto es muy útil sobre todo en elmomento en que la tabla contenga muchos registros.

Pruebe a ejecutar más veces el programa y realice varios filtrados.

22. Solo queda por programar el botón Ver Todos del cuadro de diálogo de filtrado. Alpulsar este botón se pretende que se visualicen todos los registros de la tablatrabajadores. El código de este botón es bastante sencillo:

Como ves aprovechamos el método ya programado MostrarTrabajadores que seencarga de mostrar todos los trabajadores en el J Table. Luego solo tenemos quedescargar el cuadro de diálogo de filtrado.

23. Ejecuta el programa y prueba lo siguiente:

- Haz el filtrado que quieras sobre la tabla trabajadores. Acepta y observa el filtrado enla 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.

Ejemplo:

Se acaba de realizar unfiltrado, la tabla muestrasolo los trabajadores quecumplen la condición...

Pulsa ahora Filtrar

HAUTIRO

Page 478: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 478/719

 

Pulsa Ver Todos paravolver a ver todos lostrabajadores.

 Y el resultado será que se

quita el filtrado y se vuelvena mostrar todos lostrabajadores

HAUTIRO

Page 479: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 479/719

 

CONCLUSIÓN

Las tablas que tengan muchos datos son incómodas de manejar, por lo que resultamuy in teresante añadir al programa ciertas opciones de filtrado. Estas opcionespermitirán visualizar solo aquellos registros que cumplan determinadas condiciones.

Las opciones de filt rado consist irán básicamente en la construcción de una consul taSELECT a través de concatenaciones de cadenas.

Una vez construida la cadena SELECT según el filtrado que quiera hacer el usuario, setendrá que ejecutar dicha consulta y se tendrá que mostrar el resultado. Normalmenteen un JTable.

HAUTIRO

Page 480: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 480/719

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 hojasguiadas. En esta hoja programaremos ciertas opciones de ordenación así comorealizaremos determinados cálculos sobre la tabla trabajadores.

HAUTIRO

Page 481: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 481/719

EJERCICIO GUIADO Nº 1

1. Abrir la aplicación de la hoja guiada anterior.

2. Vamos a modificar el cuadro de diálogo de filtrado de forma que no solo sea capazde filtrar, sino que también permita que el listado que se ha filtrado aparezcaordenado según un campo.

Para ello, añada lo siguiente al diálogo de filtrado:

NOTA Nº1: El combo cboCamposOrdenacion contendrá los siguientes elementos: (SinOrdenación), DNI, Nombre, Apellidos, Sueldo, Fecha, Matricula:

panelOrdenacion

cboCamposOrdenacion

radioASC

radioDESC

HAUTIRO

Page 482: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 482/719

 NOTA Nº2: Es necesario añadir un ButtonGroup al programa, al que llamaremosgrupoOrdenacion. Los botones de opción radioASC y radioDESC deben pertenecer a dichogrupo.

3. 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 deordenación. También puede indicar la forma de ordenación (ascendente odescendente) a través de los botones de opción.

Al pulsar Aceptar el listado de trabajadores no solo saldrá filtrado, sino que tambiénsaldrá 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 laejecución de la consulta):

Estudiemos el código. Lo primero que se hace es extraer el valor del combodesplegable de los campos de ordenación.

Si este combo no contiene el valor “(Sin ordenación)” significará que se desearealizar una ordenación por el campo seleccionado. Así pues se concatena a lavariable 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 ordenarascendentemente o descendentemente.

HAUTIRO

Page 483: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 483/719

4. Ejecuta el programa y prueba a hacer un filtrado eligiendo un campo para ordenar yobserva el resultado:

En este ejemplo se pretende visualizara todos los trabajadores quecontengan una “a” en su nombre...

... y el listado saldrá ordenado por elcampo sueldo descendentemente.

HAUTIRO

Page 484: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 484/719

 5. Una ventaja de esto es que se puede mostrar el listado completo de trabajadores

ordenado por el campo que se quiera siempre y cuando no se indique ningunacondición:

En este ejemplo aparecerían todos lostrabajadores, ya que no se ha indicadoninguna condición.

... y el listado saldrá ordenado por elnombre ascendentemente.

HAUTIRO

Page 485: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 485/719

 6. Ahora vamos a añadir una nueva mejora al programa. La idea es que se visualice

 junto al J Table de trabajadores los siguientes datos: el número de trabajadores quese muestra y la media de los sueldos.

Para ello, añade las siguientes modificaciones en el diseño de la ventana principal:

7. Ahora programaremos un método que sea capaz de calcular el número detrabajadores 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 elcontenido de este ResultSet para calcular y luego mostrar el número de trabajadoresy el sueldo medio.

Accede al código de tu programa y añade el siguiente procedimiento:

Etiquetas con borde:

etiNumeroTrab

etiSueldoMedio

HAUTIRO

Page 486: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 486/719

 

Este código básicamente toma el ResultSet pasado como parámetro y lo recorreaumentando 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 elnúmero de trabajadores para obtener la media, y estos datos se colocan en lasetiquetas correspondientes.

HAUTIRO

Page 487: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 487/719

 8. 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étodoMostrarTrabajadores.

Esa línea es una llamada al método que acabamos de programar, y hará que después deque se presenten en el J Table todos los trabajadores se rellenen las etiquetas de loscálculos.

9. También interesa que cuando se realice un filtrado aparezca el número detrabajadores y el sueldo medio correspondiente al listado que se acaba de filtrar.Para ello debes añadir la siguiente línea al código del botón Aceptar del cuadro de

diálogo de filtrado:

HAUTIRO

Page 488: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 488/719

 

De nuevo se realiza la llamada al método de los cálculos justamente después decolocar en la tabla el listado de trabajadores, en este caso filtrado.

10. Ejecuta el programa y observa como al iniciar el programa ya aparecen en lasetiquetas 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álculoscorrespondientes al listado filtrado, ya que en el botón Aceptar del dialogo de filtradose hace una llamada al método HacerCalculos.

Al iniciarse el programaaparece el listadocompleto detrabajadores y secalcula el número detrabajadores y el sueldo

medio...

HAUTIRO

Page 489: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 489/719

Si se hace un filtrado(en este ejemplo sevisualizan lostrabajadores con menosde 1000 de sueldo) loscálculos secorresponderán con ellistado filtrado...

HAUTIRO

Page 490: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 490/719

 

CONCLUSIÓN

Todo programa de gestión de datos de una tabla debería tener opc iones deordenació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 parapermitir de esta manera que los fil trados aparezcan ordenados según le interese alusuario.

Suele ser habitual que al lado del JTable aparezcan ciertos cálculos estadísticosrelativos a la tabla.

HAUTIRO

Page 491: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 491/719

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 basede 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 losdatos)

Una vez creado el informe, este se enlaza con nuestra aplicación, de forma que cuando elusuario pulse la opción de imprimir, el informe se rellene con los datos de la base de datos yluego sea enviado a la impresora.

Para la creación de informes para nuestras aplicaciones usaremos un programa gratuitollamado I Repor t . El fichero de instalación para este programa lo encontrará en lasubcarpeta Herramientas de la carpeta compartida.

Para descargar las últimas versiones de este programa puede acudir a la páginahttp://www.jasperforge.org/sf/projects/ireport 

En esta hoja guiada se verán las ideas básicas de manejo del programa IReport.

HAUTIRO

Page 492: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 492/719

EJERCICIO GUIADO Nº 1. INSTALACIÓN DE IREPORT

1. En primer lugar copie el fichero de instalación del programa IREPORT a suordenador, e instale el programa.

2. Una vez instalado, ejecútelo. La pantalla principal del IReport es la siguiente (esrelativamente parecida a la pantalla principal de NetBeans):

3. Cierre el programa IReport. Lo usaremos más adelante.

En esta zonaaparecerán losinformes que seestán diseñando.

Aquí apareceránlos distintoselementos queforman el informe.

En esta parteaparecerán laspropiedades delobjeto seleccionado.

Aquí tendremos unlistado con loscampos de lastablas quepodremos incluir enel informe, entreotras cosas.

Esta es la zona dediseño, donde sedefinen lascaracterísticas delinforme.

 Y aquí tenemos lasalida, lugar dondeaparecen losmensajes informativosy de error.

HAUTIRO

Page 493: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 493/719

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 debase de datos que es y donde se encuentra almacenada en el ordenador.

 Toda esta información se agrupa bajo un nombre, y ese nombre precisamente es lo que sedenomina un DSN.

Cuando un programa necesita acceder a una base de datos en concreto, solo hay queindicarle 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 unabase 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.

4. En la pestaña DSN de Usuario pulse el botón Agregar para añadir un nuevo DSN.

HAUTIRO

Page 494: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 494/719

 

5. Ahora hay que indicar el tipo de la base de datos a la que asignaremos el DSN. Ennuestro caso, como la base de datos MANEMPSA es una base de datos de Access,tendremos que escoger Microsoft Access Driver (*.mdb) y pulsamos Finalizar .

HAUTIRO

Page 495: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 495/719

6. Ahora seleccionaremos el fichero de la base de datos MANEMPSA haciendo clic enel botón Seleccionar :

7. Usando la ventana de exploración que aparece, busca la base de datos MANEMPSAque se encuentra en Mis Documentos. Selecciónala y pulsa Aceptar.

HAUTIRO

Page 496: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 496/719

 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 datosMANEMPSA 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 realizarinformes sobre la base de datos MANEMPSA.

10. Una vez creado un DSN para una base de datos, este se queda almacenado en elordenador. Esto significa que no necesitaremos volver a crear un DSN para la basede datos MANEMPSA.

11. El DSN se queda almacenado en el ordenador hasta que el propio usuario lo borre.Para practicar, veremos como borrar el DSN que acabamos de crear (aunquefinalmente no lo borraremos porque lo usaremos más adelante). Para ello entre en

Panel de Control, Herramientas Administrativas, Orígenes de Datos:

 

HAUTIRO

Page 497: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 497/719

 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 eliminarlasolo tienes que seleccionarla y pulsar el botón Quitar .

Aparecerá un mensaje preguntándole si quiere borrar el DSN. Debe responder NO yaque usaremos el DSN a continuación. (Si lo borrara no sería algo grave. Simplementese tendría que crear de nuevo con los pasos indicados antes)

HAUTIRO

Page 498: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 498/719

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 unaconexió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 faltahacerlo 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 datosMANEMPSA.

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ónNuevo para crear una nueva conexión...

HAUTIRO

Page 499: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 499/719

 4. Para base de datos de Access, debes activar la opción Conexión Base de Datos

JDBC y pulsar Próximo.

HAUTIRO

Page 500: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 500/719

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

HAUTIRO

Page 501: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 501/719

 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 essun.jdbc.odbc.JdbcOdbcDriver  

HAUTIRO

Page 502: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 502/719

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

 Tiene que cambiar la palabra DSNAME por BaseEjemplo:

Quedaría así:

HAUTIRO

Page 503: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 503/719

8. Finalmente, activaremos la opción Salvar el password para evitar que se nos pidaconstantemente una contraseña para acceder a la base de datos (La casilla de lacontraseña –password- se deja en blanco ya que la base de datos MANEMPSA notiene contraseña)

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 quehemos seguido son correctos. Para ello, pulse el botón Prueba, y si todo ha ido bien,debe aparecer un mensaje indicándolo:

HAUTIRO

Page 504: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 504/719

 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 hacreado una conexión (la conexión con MANEMPSA) Siguiendo estos mismos pasospuede crear todas las conexiones que quiera con las bases de datos de suordenador.

Una vez creada una conexión, esta se queda guardada y podrá ser usada para lacreación de informes sobre la base de datos con la que conecta.

12. Cierra el cuadro de conexiones. Ya tenemos el programa iReport preparado para lacreación de informes con la base de datos MANEMPSA.

Conexióncreada.

Listado deconexiones abase dedatos (solohay una de

momento)

HAUTIRO

Page 505: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 505/719

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

1. Ahora que tenemos configurado el iReport para acceder a la base de datosMANEMPSA, podemos crear informes con los datos de esta base de datos.

En este ejercicio guiado se creará simplemente un informe que muestre un listado delos trabajadores de la empresa.

2. Una forma rápida de crear un informe es a través de la opción Mago de Informes quese 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 algunosdatos necesarios para crear el informe. Lo primero que tiene que indicar es la basede datos sobre la que quiere realizar el informe. Para ello debe elegir la conexióncorrespondiente a dicha base de datos:

HAUTIRO

Page 506: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 506/719

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

5. Una vez elegida la base de datos (indicando su conexión correspondiente) tenemosque extraer de ella los datos que queremos que aparezcan en el informe (listado) Ypara 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 datostendremos 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.

7. En este nuevo paso tendremos que indicar los campos que queremos que aparezcanen 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.

HAUTIRO

Page 507: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 507/719

 

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 pulsesimplemente el botón Próximo otra vez.

10. El siguiente paso es la distribución del informe. Es decir, la forma de colocar losdatos. Existen dos posibilidades:

- En columnas. Esta distribución crea “fichas” individuales de cada registro (ennuestro 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ónTabulada se pueden elegir entre algunas variantes. Dejaremos activado el formato

ClassicT.xml

HAUTIRO

Page 508: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 508/719

 

11. Active el botón Próximo para acceder al quinto y último paso del asistente. En estepaso iReport le felicita porque acaba de crear el informe. Aquí solo tiene que pulsar elbotón Terminar .

HAUTIRO

Page 509: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 509/719

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.

En próximas hojas guiadas se estudiará la forma de modificar el diseño y de crear uninforme desde cero.

13. Vamos a guardar el informe. Para ello activa la opción Fichero – Guardar . El nombreque le daremos al informe será trabajadores:

Diseño del informe

HAUTIRO

Page 510: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 510/719

 

14. Ahora que está guardado, vamos a ver como quedaría el listado. Para ello active laopción Construir – Ejecutar informe (usando la conexión activa) o bien el botón de labarra de herramientas con el mismo nombre:

HAUTIRO

Page 511: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 511/719

15. Al hacer esto aparecerá por fin el listado que ha creado. Este listado aparece en unaventana nueva y tendrá un aspecto similar al siguiente:

Como puede observar, aparecen los campos que indicó en el asistente. El informe estabulado (es decir, tiene forma de listado) y en él aparecen los trabajadores quetenga en su base de datos MANEMPSA.

Debe tener en cuenta que si ha cambiado el contenido de la base de datosMANEMPSA entonces es posible que le aparezcan otros trabajadores.

Observe como el título del listado no es muy adecuado. Lo cambiaremos acontinuación.

16. Cierre la ventana del informe (no la del iReport) y volverá a la pantalla principal deiReport.

17. Haga doble clic sobre el título del informe y cámbielo por Listado de Trabajadores:

HAUTIRO

Page 512: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 512/719

 18. Vuelva a visualizar el resultado del informe:

19. Ahora el informe tendrá mejor aspecto:

20. Acabamos de crear nuestro primer informe. Un listado con los datos de lostrabajadores. Ya puede cerrar el programa iReport. Guarde todos los cambios.

HAUTIRO

Page 513: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 513/719

 

CONCLUSIÓN

Todo programa de gestión de datos de una tabla debería tener opc iones deordenació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 parapermitir de esta manera que los fil trados aparezcan ordenados según le interese alusuario.

Suele ser habitual que al lado del JTable aparezcan ciertos cálculos estadísticosrelativos a la tabla.

HAUTIRO

Page 514: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 514/719

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. Esteasistente 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 nosea exactamente lo que buscábamos. Es posible que nos interese cambiar los colores, eltipo 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 quecambiar 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 quehaya sido creado con el mago de informes. Veremos como modificar las propiedades de

cada elemento del informe.

HAUTIRO

Page 515: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 515/719

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 queelegir la conexión correspondiente a la base de datos MANEMPSA (que es donde seencuentra la tabla coches)

HAUTIRO

Page 516: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 516/719

 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 enel listado. Estos campos serán los siguientes: matrícula, marca, modelo y año.

HAUTIRO

Page 517: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 517/719

 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 delinforme. En nuestro ejemplo no usaremos agrupamiento así que pulse simplementeel 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.

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.

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.

HAUTIRO

Page 518: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 518/719

 

13. Acaba de crear un informe con forma de listado. Para ver el resultado debe pulsar elbotón Ejecutar informe (usando la conexión activa) 

14. Ahora podrá ver el informe creado, el cual debe tener el siguiente aspecto (tenga encuenta que los elementos del listado pueden variar dependiendo de los datos quetenga 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 siquisiéramos cambiar las características del informe? En los puntos siguientesveremos como cambiar el aspecto del listado. De momento cierre la ventana dellistado para volver a la pantalla de diseño.

HAUTIRO

Page 519: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 519/719

16. Empezaremos cambiando el título del informe. Para ello haremos doble clic sobre eltítulo y escribiremos “Listado de Coches”:

17. Puede cambiar el aspecto de cada elemento del informe seleccionándolo con un clicy luego modificando sus propiedades, las cuales aparecerán en la parte derecha dela ventana. Por ejemplo, seleccione en la cabecera del listado el campo matrícula:

18. En la zona de propiedades (parte derecha) active por ejemplo la propiedad negrilla yel tipo de letra Comic Sans:

HAUTIRO

Page 520: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 520/719

 

19. Si observa el elemento seleccionado (“Matrícula” en la cabecera) observará que estáahora en negrita y con el tipo de letra Comic:

20. Selecciona ahora el título, por ejemplo (solo tienes que hacer un clic sobre él)

HAUTIRO

Page 521: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 521/719

 21. Ahora activa las siguientes propiedades:

Activa la propiedad primer plano (en el botón conlos tres puntos) y escoge un color verde.

Activa la propiedad fondo y escoge un coloramarillo.

Desactiva la propiedad Transparente.

Pon un tamaño de 28, y negrilla.

Activa la itálica (cursiva) y el subrayado.

Asigna una alineación izquierda.

HAUTIRO

Page 522: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 522/719

 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ítuloy sin soltar el botón del ratón arrástralo a la parte izquierda del informe, para quequede así:

24. Visualiza el informe para ver el resultado:

25. El informe tendrá el siguiente aspecto:

Como ve, hemos cambiado la forma yposición del título.

Observa. No aparece el campo matrícula!, Esto es debidoa que es demasiado grande y no cabe aquí.

HAUTIRO

Page 523: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 523/719

26. Vamos a solucionar el problema del campo Matrícula. Cierra la ventana del listado yen 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:

28. Sigamos cambiando cosas en el diseño del informe. Ahora vas a seleccionar elcampo matrícula correspondiente no a la cabecera, sino al listado de datos:

29. Haz que sus propiedades sean las siguientes:

Negrita: Activado  Tamaño de letra: 8  Tipo de letra: Courier New Primer Plano: Azul 

Este cuadro se corresponde al conjunto de datosde la columna matrícula.

HAUTIRO

Page 524: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 524/719

30. Una vez cambiadas las propiedades, si visualizas el informe, deberá tener elsiguiente aspecto:

31. Así pues, el diseño del informe que haya creado con el mago de informes puede sermodificado luego. Básicamente solo tiene que seleccionar el elemento a modificar yluego cambiar sus propiedades.

Debe tener en cuenta que los elementos del diseño pueden cambiarse de lugar y quepueden cambiarse de tamaño.

En la parte superior de la ventana de iReport tiene una barra de herramientas quepuede usar también para realizar cambios en los elementos:

32. Ha terminado de realizar el informe. Puede cerrar iReport y guardar los cambios sihiciera falta.

Si observas el listado verás que todos los datos de lacolumna matrícula tiene ahora las propiedadesasignadas.

HAUTIRO

Page 525: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 525/719

 

CONCLUSIÓN

La forma más sencilla de crear un informe con iReport es a través del mago deinformes.

Una vez creado el informe, puede realizar modificaciones en su diseño seleccionandocada 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.

HAUTIRO

Page 526: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 526/719

EJERCICIO GUIADO. JAVA. INFORMES DE BASE DE DATOS

Creación de un in forme desde cero

En hojas anteriores hemos visto que la forma más rápida de crear un informe es usando elmago de informes de iReport. Luego, con el informe resultante, solo teníamos que cambiarlas 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 datotal 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á enusar 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 laempresa (la imagen corporativa) y demás características propias de la empresa. Para haceresto 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.

HAUTIRO

Page 527: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 527/719

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 realizadospor 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:

5. Al pulsar OK, observará que aparece un informe en blanco:

HAUTIRO

Page 528: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 528/719

 

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 quiereusar. En nuestro caso la conexión se llama Conexión con Manempsa.

8. Ahora hay que indicar la consulta SQL que nos permita acceder a los datosnecesarios para el informe. Esto se tiene que hacer activando la opción Datos –Consulta de Informe:

HAUTIRO

Page 529: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 529/719

 9. En la ventana que aparece tendrá que introducir la siguiente consulta SQL:

sel ect * f r om t r abaj ador es, ser vi ci oswher e t r abaj ador es. dni =ser vi ci os. dni and t r abaj ador es. dni =’ 12. 321. 567- B’or der by ser vi ci os. f echa 

Si en la parte inferior aparece ellistado de campos seleccionadosen la consulta, entonces esindicativo de que todo va bien.

HAUTIRO

Page 530: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 530/719

 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 laparte 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 camposseleccionados 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 deservicio y la cantidad. Para ello, tendrá que añadir estos datos a la zona de Detalle (Detail).

La zona de detalle es la zona en la que aparecerán los datos del listado, y por tantoes 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:

HAUTIRO

Page 531: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 531/719

 

13. Haz lo mismo con los otros campos que queremos mostrar: el tipo y la cantidad: Eldetalle quedará así:

14. Visualice el informe resultante. iReport le pedirá que guarde el informe. Llámeloserviciosjuan.

HAUTIRO

Page 532: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 532/719

15. Una vez guardado verá como queda el informe que acaba de hacer:

16. No está muy conseguido, pero solo acabamos de empezar. Recuerde que la zona deDetalle (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 necesitemover los campos):

HAUTIRO

Page 533: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 533/719

 

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

HAUTIRO

Page 534: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 534/719

19. Ahora sería interesante que el listado tuviera una cabecera. Para ello, haz clic en elbotón de la barra de herramientas llamado Texto Estático y luego haz clic en la zonadel informe llamada Column Header y arrastre el ratón:

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 zonadonde colocará los encabezamientos del listado. Acabamos de colocar elencabezamiento de la columna número. Ahora repita el proceso para colocar losotros dos encabezados de columnas:

22. Para destacarlos un poco (ya que son los encabezados), haremos que estén ennegrita y que su tamaño sea un poco más grande (para ello use las propiedades dedichos elementos) El resultado debe ser similar al siguiente:

HAUTIRO

Page 535: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 535/719

 23. Visualiza el informe y observa el resultado:

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 deColumna:

botón línea 

NOTA: Para que la línea le salga recta puede dibujarla teniendo pulsada la teclaMayúsculas.

HAUTIRO

Page 536: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 536/719

 25. Visualice el informe:

26. Ahora vamos a colocar un título al informe. El título del informe se coloca en la zonaTítulo (Title). En nuestro caso vamos a colocar el título “Ficha de Servicios”. Paraintroducir 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:

27. Haz doble clic sobre ese recuadro y escribe “Ficha de Servicios”.

HAUTIRO

Page 537: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 537/719

 

28. Ahora asigna al título las siguientes propiedades:

a. Un tamaño de letra de 24b. Agranda el cuadro de forma que ocupe prácticamente toda la zona de título.

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

HAUTIRO

Page 538: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 538/719

 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 debanaparecer 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ítuloaparecerá en la parte superior de la primera página (y ninguna más), mientras que loque escriba en el encabezado de página aparecerá en la parte superior de todas laspáginas del listado.

31. Vamos a empezar agrandando la zona del Encabezado de Página. Esto se hacefácilmente arrastrando la línea límite inferior de la zona:

HAUTIRO

Page 539: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 539/719

 

32. Ahora que tenemos más espacio en el encabezado de página vamos a dibujar en élun recuadro. Esto lo puede hacer usando el botón Rectángulo de la barra deherramientas:

Solo tiene que activar este botón y hacer clic y arrastrar en el encabezado. Intenteque quede así:

Haz clic en esta línea yarrastra hacia abajo.

HAUTIRO

Page 540: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 540/719

33. Ahora añada los siguientes cuadros de texto estático dentro del recuadro que acabade hacer:

Recuerde que estos cuadros de texto se hacen usando el botón Texto estático de labarra de herramientas:

En el ejemplo, se ha asignado un tamaño de letra de 12, y además se ha puesto ennegrita el texto del primer cuadro.

34. Ahora, para que salgan los datos propios del empleado, añadiremos los camposnombre, apellidos y DNI. Empezaremos por añadir el campo DNI. Esto se hacearrastrando desde la zona de campos:

HAUTIRO

Page 541: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 541/719

 

35. Haga lo mismo con el campo Apellidos y el campo Nombre. El informe quedará así:

36. Ahora se cambiarán algunas propiedades de los campos que hemos añadido:

a. Asigne un tamaño de 12b. El DNI debe aparecer en negrita.c. Agrande los cuadros de los campos.

El resultado será el siguiente:

HAUTIRO

Page 542: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 542/719

 

37. Visualice el resultado del informe. Debe tener el siguiente aspecto:

Como puede ver, en la ficha del empleado aparecen sus datos reales.

HAUTIRO

Page 543: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 543/719

38. Y ya para terminar agregaremos un logotipo al informe. Dicha imagen se colocará enla zona del Encabezado de Página, al lado del recuadro. Para ello, tendrá que usar elbotón de la barra de herramientas imagen:

Haga clic en este botón y luego haga clic y arrastre hasta crear un rectángulo en lazona del Encabezado de Página. Debe quedar así:

39. La imagen del logotipo aparecerá en el recuadro que acabamos de hacer. Esnecesario 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 MisImá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.

HAUTIRO

Page 544: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 544/719

 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 ellatendrá 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 elinforme. Su aspecto será parecido al siguiente:

HAUTIRO

Page 545: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 545/719

 

42. Ha podido observar en este ejemplo los pasos básicos a seguir para crear un informedesde cero. Como puede ver, es una forma más trabajosa de crear un informe, peroa cambio disponemos de más libertad a la hora de diseñar el informe.

43. Para finalizar con esta hoja guiada, veamos para que sirve cada una de las zonas delinforme:

Título (title)Aquí se coloca el título delinforme. Aparecerá en la partesuperior de la primera páginaúnicamente.

Encabezado de Página(pageHeader)Lo que se coloque aquí aparecerá en todas las páginas,en la parte superior.

Encabezado de columna(columnHeader)Se usa para colocar el texto delencabezado del listado (losnombres de cada columna)

Detalle (detail)Aquí aparecerán todos los datosdel listado. Por tanto, aquí sesuelen colocar los campos quese quieren visualizar.

Pie de columna (columnFooter)Lo que se coloque aquí aparecerásiempre debajo del listado dedatos, en todas las páginas.

Pie de Página (pageFooter)Lo que se coloque aquí apareceráen la parte inferior de todas laspáginas (menos en la última). Idealpara colocar números de página.

Pie de la últ ima página (lastPageFooter)Es un pie especial, ya que solo aparece en laparte inferior de la última página.

Resumen (summary)Aparece cuando finaliza el listado dedatos (en la última página) Esta zona seusa para colocar cálculos estadísticos,como suma de cantidades o cuentas ypromedios, etc... que deban aparecer alfinal.

HAUTIRO

Page 546: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 546/719

 

CONCLUSIÓN

iReport permite la creación de informes desde cero, lo que da más versatilidad a lahora de diseñar el listado.

Es necesario indicar la conexión a la base de datos y la consulta SQL para extraer losdatos que aparecerán en el informe.

El informe se divide en zonas, y los elementos se colocarán en dichas zonas segúndonde 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.

HAUTIRO

Page 547: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 547/719

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 generaresos cálculos directamente en la consulta SQL, con lo cual solo tendremos que mostrar losresultados 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 algunosconceptos nuevos en lo que se refiere a presentación de datos y uso de las zonas delinforme.

HAUTIRO

Page 548: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 548/719

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 serviciosrealizados. Interesa en principio que aparezca la fecha del servicio el tipo del servicioy 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 ellopuede elegir la “Conexión con MANEMPSA” en el desplegable de conexiones, en laparte superior derecha de la ventana:

5. Ahora que hemos elegido la conexión, ahora indicaremos la consulta SQL que nospermita extraer los datos que queremos mostrar en el informe. Para ello, activa laopción Datos – Consulta de Informe.

6. En la pantalla que aparece debes introducir la siguiente consulta SQL:

sel ect * f r om ser vi ci os or der by f echa

HAUTIRO

Page 549: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 549/719

 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 ycé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:

9. Ahora para definir los datos del listado, tendremos que añadir campos a la zona deldetalle (detail). Debes arrastrar los campos fecha, tipo y cantidad:

10. La zona del detalle es demasiado grande, así que reduzca su tamaño arrastrando lalínea de separación:

HAUTIRO

Page 550: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 550/719

 

11. Visualice el listado. IReport le pedirá que guarde antes de visualizar. Guarde ellistado con el nombre informeservicios en Mis Documentos.

12. El listado tendrá la siguiente forma:

13. Observe como la fecha muestra también la hora. Antes de continuar, cambiaremos elformato de la columna de la fecha para que esto no suceda. Para ello seleccione elcampo Fecha:

Arrastra la línea deldetalle.

HAUTIRO

Page 551: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 551/719

14. Vamos a modificar una de las propiedades llamada Patrón. Haz clic en el botón contres puntos de esta propiedad:

15. Esta propiedad permite cambiar la forma en que se presentan números, fechas ydemá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 conforma dia/mes/año:

Aplica los cambios.

16. Vuelve a visualizar tu listado. Ahora verás como las fechas aparecen correctamente.

Recuerda esta propiedad, ya que la usarás muchas veces. Sobre todo con fechas ynúmeros. En el caso de los números, se puede usar para decidir algunascaracterí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 lacabecera y otra en la parte del pie de columna (columnFooter ):

HAUTIRO

Page 552: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 552/719

 

18. La línea de la cabecera separará esta de los datos. Por otro lado, la línea del pie decolumna aparecerá en la parte inferior del listado en todas las páginas. Visualiza el

listado:

HAUTIRO

Page 553: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 553/719

 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 variaspáginas)

Lo que introduzca en la zona pageFooter aparecerá en la parte inferior de cadapá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 elijaPropiedades 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 deopciones.

HAUTIRO

Page 554: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 554/719

22. Se podrá observar entonces como hemos ocultado la zona lastPageFooter . Al haceresto, 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 depágina. Observa:

24. La Librería contiene una serie de campos especiales que muestran cosas como elnúmero de la página o la fecha actual. Elementos que suelen ser muy comunes enlos 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 uncuadro donde tendrás que elegir el formato de la fecha. Elige el formato completo.

26. El pie tiene que haber quedado más o menos así:

HAUTIRO

Page 555: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 555/719

 

27. Ahora visualice el informe y observe la parte inferior (si cambia el zoom al 50% podrátener una vista global del informe):

Verá que en la parte inferior aparece el número de la página y la fecha en el formatoindicado.

HAUTIRO

Page 556: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 556/719

 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 existeen la tabla servicios, de la que hemos extraído los datos. Sin embargo, es posiblecrear este campo directamente en la consulta SQL realizando el cálculo.

Active la opción Datos – Consulta del Informe para acceder a la consulta queintroducimos al principio.

29. Cambie la consulta por la siguiente instrucción SELECT (respete mayúsculas yminúsculas):

sel ect Fecha, Ti po, Cant i dad, Cant i dad*0. 16 as I VA f r om ser vi ci os or der by f echa

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 delcá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

sel ect Fecha, Ti po, Cant i dad, Cant i dad*0. 16 as I VA f r om ser vi ci os or der by f echa

Los campos calculados es una característica del lenguaje SQL que aprovecharemos pararealizar cálculos con los campos de las tablas.

Cálculo que se realiza Nombre del campo calculado

HAUTIRO

Page 557: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 557/719

30. Pulse Ok y observe la zona de campos. Verá como ha aparecido un nuevo campollamado IVA. Tan solo tiene que agregarlo a la zona de detalle como si fuera uncampo más.

31. Por supuesto, sería interesante añadir un texto estático en el encabezado decolumnas:

32. Visualice el informe resultante:

HAUTIRO

Page 558: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 558/719

33. Para hacer otro ejemplo de campos calculados, entre en la consulta del informe ymodifique la instrucción SQL de forma que quede así:

sel ect Fecha, Ti po, Cant i dad, Cant i dad*0. 16 as I VA, I VA+Cant i dad as Tot al  f r om ser vi ci os or der by f echa

En este caso, se está añadiendo otro campo calculado (en rojo) llamado Total. Estecampo 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 estopara agregar una nueva columna con los totales con iva:

35. Visualice el informe. Debe tener este aspecto:

HAUTIRO

Page 559: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 559/719

36. Hemos aprendido a agregar campos calculados a partir de otros campos, y añadirlosal 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 IVAy todos los totales más IVA.

Estos totales suelen aparecer en la parte final del listado. En la zona llamadaResumen (summary) 

37. Empezaremos agregando en la zona summary una línea corta:

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 quieresumar. Elija el campo Cantidad y acepte.

HAUTIRO

Page 560: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 560/719

 

40. Aparecerá un nuevo recuadro en el resumen. Colóquelo al mismo nivel que lacolumna de la cantidad.

41. Haga el mismo proceso para calcular la suma del IVA y del Total. Al final, el diseñode la zona resumen debe tener el siguiente aspecto:

HAUTIRO

Page 561: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 561/719

 

42. Los elementos situados en la zona del resumen aparecen al final del listado.Visualice el informe y observe la parte final del listado.

43. El informe está terminado. Guárdelo y ciérrelo.

HAUTIRO

Page 562: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 562/719

 

CONCLUSIÓN

SQL permite la creación de campos calculados a partir de otros campos en unaconsulta SELECT.

Esta característica es muy úti l por ejemplo en el caso de los informes, ya que nospermite mostrar cálculos en ellos.

iReport, además, proporciona la posibi lidad 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 primerapá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 dellistado.

-  Detail – Detalle: Usado para colocar los datos (campos)

-  columnFooter – Pie de Columna: En el se coloca aquello que deba aparecer en laparte 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 ellastPageFooter ) Se usa para colocar el número de página.

-  lastPageFooter  – Ultimo pie de página: Es el pie de página de la última página. Sise desactiva, entonces es sustitu ido por el pageFooter .

-  Summary – Resumen: Usado para colocar cálculos de totales. Aparece al final dellistado.

HAUTIRO

Page 563: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 563/719

EJERCICIO GUIADO. JAVA. INFORMES DE BASE DE DATOS

Informes Agrupados

Un informe agrupado se puede definir como varios listados en un mismo informe. Loselementos 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 agrupadosegún profesión, y entonces tendríamos el listado de albañiles, el listado de profesores, ellistado de policías, el listado de bomberos, etc...

Es decir, el listado de trabajadores se dividiría en grupos según las distintas profesiones delos trabajadores.

En esta hoja guiada se verá como realizar este tipo de listados.

HAUTIRO

Page 564: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 564/719

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

1. Entra en iReport.

2. Crearemos un informe en el que aparezca el listado de servicios realizados.Usaremos el mago de informes para hacer este listado.

Para ello active la opción Fichero – Mago de informes.

3. La conexión a usar será Conexión con MANEMPSA. Y la consulta SQL será lasiguiente:

sel ect * f r om ser vi ci os or der by t i po

(Nota: observe que hemos ordenado la consulta por tipo. Luego verá por qué)

Pulse el botón Próximo.

4. Los campos a añadir al listado serán: Número, Fecha, Tipo y Cantidad.

Pulse el botón Próximo.

5. Ahora ya estamos en el paso tercero del asistente. En este paso tendremos queindicar la forma de agrupar el listado. En el desplegable grupo 1 indique el campotipo. Esto significa que el listado saldrá agrupado por tipo de servicio.

Pulse Próximo.

6. Elija una disposición Tabulada del tipo Classic_T. Pulse Próximo y Terminar .

HAUTIRO

Page 565: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 565/719

7. Aparecerá el diseño del informe que acaba de crear. Observe que entre las zonastípicas del informe ha aparecido una nueva zona “de agrupamiento”:

8. Visualice el informe y observe el resultado (al visualizarlo iReport le pedirá que loguarde. Guárdelo con el nombre serviciosagrupados):

Como ve, aparecen varios sub-listados. Un listado con los servicios de electricidad, otro conlos servicios de fontanería, y otro con los servicios de limpieza. Tenemos un informe engrupos.

NOTA: Es obligatorio que la consulta del informe esté ordenada según el campo por el quevayamos a agrupar. Esta es la razón por la que la consulta se ordenó por tipo.

HAUTIRO

Page 566: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 566/719

9. Ahora se mejorará un poco el listado que se ha hecho. En primer lugar modifique elpatrón del campo fecha, de forma que aparezca en formato día-mes-año:

10. También puede resultar interesante modificar el patrón de la Cantidad, de forma queaparezca con dos decimales:

11. Finalmente asigne el título “Listado de Servicios” al informe. Este debe tener ahora elsiguiente aspecto al visualizarlo:

HAUTIRO

Page 567: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 567/719

 

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 ypor estado civil. En este caso, aparecería un grupo por cada profesión, y, cada grupo, estaríaa su vez subdividido en grupos según el estado civil.

Por ejemplo, el grupo de bomberos podría tener el siguiente aspecto:

Bomberos

Casados--------

Solteros--------

Etc...

Para hacer esto basta con indicar varios campos en el paso de agrupamiento del asistentemago de informes. Pero tenga en cuenta que tendrá que ordenar la consulta SELECT segúndichos 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.

HAUTIRO

Page 568: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 568/719

 

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 in forme 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 deinformes, ya que este asistente muestra un paso donde se puede elegir el camposegún el que se quiere agrupar.

No olvide que cuando quiera agrupar un li stado por un campo es obligatorio que la

consulta SELECT del informe ordene el lis tado por el campo por el que se quiereagrupar.

HAUTIRO

Page 569: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 569/719

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 nuestraaplicación J ava.

En esta hoja guiada veremos los pasos básicos necesarios para mostrar un informe desdeuna aplicación J ava.

Nota: En esta hoja guiada se usará el informe creado en la hoja anterior, llamadoserviciosagrupados.

HAUTIRO

Page 570: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 570/719

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

1. Entra en iReport y abra el informe serviciosagrupados (se encontrará en la carpetaMis Documentos)

Los ficheros que contienen un informe son ficheros del tipo .jrxml. Así pues, en lacarpeta Mis Documentos encontrará el fichero serviciosagrupados.jrxml, que es elque tiene que abrir.

(Nota: Si le echa un vistazo a la carpeta Mis Documentos, verá también un ficherollamado serviciosagrupados.bak. Este fichero es simplemente una copia de seguridadque se crea automáticamente al guardar el informe.)

2. Vamos a ver el aspecto del informe. Pulse el botón:

 Ya sabe que este botón, llamado Ejecutar informe (usando conexión activa), permitevisualizar el informe relleno con los datos de la base de datos, según la consulta SQLque haya usado.

HAUTIRO

Page 571: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 571/719

 

3. Sin embargo, este botón no solo sirve para visualizar el informe final, sino queademá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.

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  

4. Los ficheros .jasper generados se suelen almacenar dentro de la carpeta delprograma iReport, sin embargo, nosotros configuraremos el programa iReport paraque los ficheros compilados se almacenen directamente en la carpeta MisDocumentos, de forma que estén más accesibles.

Para ello, active la opción Opciones – Opciones:

HAUTIRO

Page 572: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 572/719

 

5. En el cuadro de opciones que aparece active la pestaña Compilador .

6. En el primer recuadro que aparece se tiene que indicar el directorio dondeaparecerán los ficheros compilados. Para ello, pulse el botón Explorar y seleccione lacarpeta Mis Documentos.

Si todo va bien, el resultado será parecido al siguiente:

7. Pulse el botón Grabar . A partir de ahora cada vez que visualice un informe el ficherocompilado se guardará en la carpeta Mis Documentos. Lo vamos a comprobar.

Vuelva a visualizar su informe:

8. Acuda a la carpeta Mis Documentos y compruebe que en ella hay ahora un ficheroserviciosagrupados.jasper . Este es el fichero del informe compilado. Este fichero seráel que usará para visualizar informes desde java.

HAUTIRO

Page 573: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 573/719

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

1. Entra en NetBeans y crea un nuevo proyecto J ava. 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 dedatos MANEMPSA.

3. Prepara tu proyecto para que pueda acceder a la base de datos MANEMPSA (yasabes, crear el objeto conexión, sentencia, etc...)

4. Para que nuestro programa sea capaz de presentar informes, crearemos una carpetallamada Informes dentro de la carpeta del proyecto. Y dentro de dicha carpetacopiaremos los ficheros .jasper de los informes que queremos utilizar. En nuestrocaso, copiaremos el fichero serviciosagrupados.jasper  que creamos en el apartadoanterior.

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 ficheroserviciosagrupados.jasper dentro de ella.

5. Crea un botón en la ventana de tu proyecto. El botón contendrá el texto “InformeAgrupado” y su nombre será btnInformeAgrupado.

HAUTIRO

Page 574: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 574/719

 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 siguientespasos se corregirán. De momento lo que se va a hacer es explicar el código de este evento:

• Lo primero que observará es como se usa una variable rutaInforme para almacenar elcamino del informe que queremos mostrar. Observa que dicho informe se especifica conel fichero .jasper generado con iReport, y que este fichero se encuentra dentro de lasubcarpeta informes.

• A continuación viene una línea donde se crea un objeto informe del tipo JasperPrint:

 J asper Pr i nt i nf or me = J asperFi l l Manager . f i l l Report ( r ut ai nf or me, nul l , conexi ón) ;

• Esta línea es la que genera el informe que se va a mostrar. El informe en java es unobjeto del tipo J asperPrint y es creado a través de otro objeto del tipo J asperFillManager.

• Es interesante que observes el uso de un método llamado fillReport (rellenar informe)que se encarga de rellenar el informe con datos.

• Este método necesita tres parámetros:

- El sitio donde se encuentra el fichero del informe.- Los parámetros (Null en nuestro ejemplo. Los parámetros se estudiarán en

próximas hojas guiadas)- 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.

• Una vez creado el objeto informe, solo tenemos que presentarlo en pantalla. Losinformes se presentan a través de un objeto del tipo J asperViewer. Los objetos

 J asperViewer son ventanas donde se muestran los informes.

 J asper Vi ewer vent anavi sor = new J asperVi ewer ( i nf or me, f al se) ;

• Esta línea de código crea una ventana llamada ventanavisor donde se muestra el informeinforme. El parámetro false indica que al cerrarse la ventana del informe no debe acabarel programa. Si este parámetro fuera true, al cerrar la ventana del informe se cerraría elprograma entero (esto no interesa).

HAUTIRO

Page 575: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 575/719

• El objeto ventanavisor es una ventana normal y corriente y puede ser visualizada consetVisible. Por otro lado, se le asigna el título “Informe de servicios” con el métodosetTitle.

• 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 losimports 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 laclase correspondiente.

Normalmente, al hacer clic sobre la línea que da el error, aparece el icono de unabombilla 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 bastahacer clic sobre esta librería para que se añada la instrucción import correspondientede 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 seencuentran las clases JasperPrint, JasperFillManager y JasperViewer no vienenincluidas en NetBeans, ya que son clases pertenecientes al programa iReport. Así pues, NetBeans no sabe donde encontrar estas clases.

8. Para evitar este error, es necesario incluir en el proyecto una serie de 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 proyectoy luego active la opción Agregar archivo JAR/carpeta.

10. Debe acudir a la carpeta del programa iReport para buscar en ella las bibliotecasnecesarias. Concretamente, la carpeta donde se encuentran estas bibliotecas es lasiguiente: Archivos de programa – JasperSoft – iReport-2.0.1 – lib 

HAUTIRO

Page 576: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 576/719

 

9. Los ficheros que contienen las librerías necesarias para este programa son losiguientes: 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 activeAbrir:

Archivos de programa – J asperSoft – iReport-2.0.1 – lib

HAUTIRO

Page 577: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 577/719

 

10. Observará que se ha agregado el fichero a la zona de bibliotecas:

11. Repita el proceso para agregar los otros dos ficheros necesarios. Al final, su zona deBibliotecas debe quedar así (observe los tres ficheros añadidos):

HAUTIRO

Page 578: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 578/719

 12. 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 yasabe el import que debe añadirse, y por tanto aparecerá la bombilla. Pulse sobre labombilla:

13. Tiene que agregar el import para la clase J asperFillManager:

net . sf . j asperr epor t s. engi ne. J asper Fi l l Manager

14. Ahora agregue el import para la clase J asperPrint:

net . sf . j asperr epor t s. engi ne. J asperPr i nt

15. Y finalmente agregue el import para la clase J asperViewer:

net . sf . j asper r epor t s. vi ew. J asper Vi ewer

16. Los errores han desaparecido. Ya puede ejecutar el programa.

17. Si pulsa sobre el botón Informe Agrupado aparecerá el informe.

El informe aparece en una ventana (el visor de informes – objeto JasperViewer) quetiene una pequeña barra de herramientas. En esta barra podrá por ejemplo imprimirel informe, o cambiar su zoom, entre otras cosas:

HAUTIRO

Page 579: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 579/719

 

18. Tal como se ha programado este botón, al pulsarse se visualiza el informe antes deque el usuario decida imprimirlo o no. En algunos casos, puede ser interesante que elinforme se imprima directamente sin que se visualice antes.

Veamos como hacer esto. Primero añada otro botón btnImprimirDirectamente a suventana:

19. Ahora programe dentro de él lo siguiente:

Ventana visor de informes (J asperViewer)Herramientas: guardar, imprimir, zoom, etc...

HAUTIRO

Page 580: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 580/719

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:

 J asper Pr i nt Manager . pr i nt Repor t ( i nf or me, t r ue) ;

Esta línea usa un objeto llamado JasperPrintManager que se encarga de imprimir el informeinforme usando el método printReport.

Si el segundo parámetro tiene el valor true, entonces significa que aparecerá el cuadro dediálogo de impresión:

Si estuviera a false, este cuadro de diálogo no aparecería y el informe se enviaríadirectamente a la impresora configurada por defecto en el ordenador.

En nuestro caso, al tener el valor true, este cuadro sí aparecerá.

20. Ejecute el programa y pruebe el nuevo botón. No hace falta que imprima el informe.

HAUTIRO

Page 581: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 581/719

 

CONCLUSIÓN

Para poder impr imir un informe creado con iReport desde una aplicación Java esnecesario 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 li brerías, el proceso para imprimir un in forme 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 ob jeto JasperPrintManager.

HAUTIRO

Page 582: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 582/719

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 J ava con un informe realizado coniReport. 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 delcontenido de la base de datos. Es decir, si se añaden nuevos registros a las tablas, estosregistros 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 tieneningún control sobre el informe que se muestra. En la hoja guiada anterior el informemostraba todos los servicios agrupados por tipo, pero, y si el usuario quisiera en undeterminado momento que solo se mostraran los servicios anteriores a una fecha, o que semostraran 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 consultapara cambiar los datos deben aparecer en el informe.

Para poder hacer esto, es necesario usar parámetros en la consulta SQL del informe. Unparámetro se podría definir como dato de la consulta que no está definido aún. Es necesariodefinir 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.

En esta hoja se verá un ejercicio paso a paso de uso de parámetros en la consulta deinforme, y de esta manera entender la utilidad de esta característica.

HAUTIRO

Page 583: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 583/719

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

1. Entra en iReport y abre el informe llamado serviciosjuan, realizado en una de lasúltimas hojas guiadas. Este informe, concretamente, fue construido desde cero ymostraba los servicios del trabajador Juan Pérez:

2. Visualízalo para recordar su aspecto:

HAUTIRO

Page 584: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 584/719

3. Este informe tiene un gran diseño pero está muy limitado, ya que solo es capaz demostrar el listado de servicios realizados por el trabajador Juan Pérez (DNI12.321.567-B) Si quisiéramos sacar el listado de servicios de otro trabajador, esteinforme no nos serviría.

Es necesario hacer que este informe sea más versátil, que sea capaz de mostrar ellistado de servicios de cualquier trabajador. Para ello, será necesario crear unparámetro en la consulta SQL.

4. Acceda a la consulta del informe a través de la opción Datos – Consulta de informe yobsérvela:

La consulta SQL extrae información de aquellos servicios que hayan sido realizadospor el trabajador con DNI 12.321.567-B.

5. 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} En nuestro caso el nombre que le hemos dado al parámetro es “DNI”, por lo tanto elparámetro es:

$P{DNI} Este parámetro indica que el DNI no está definido aún. Será el usuario el queintroduzca el DNI según el cual habrá que consultar en la base de datos.

HAUTIRO

Page 585: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 585/719

6. 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 deparámetros:

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

8. En la ventana que aparece debes indicar el nombre que le has dado al parámetro. Ennuestro caso, el nombre asignado es “DNI”:

HAUTIRO

Page 586: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 586/719

9. 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 intentavisualizar el informe, no podrá ver nada, ya que el parámetro no tiene ahora ningúnvalor. Al visualizar el informe aparecerá el siguiente mensaje:

10. En cualquier caso, se tiene que haber generado el fichero .jasper correspondiente. Siel iReport sigue configurado tal como se hizo en la hoja guiada anterior, dicho ficherose tiene que haber guardado en Mis Documentos con el nombre serviciosjuan.jasper .

Este fichero lo usará en el siguiente ejercicio.

11. Cierre iReport, guarde los cambios y pase al siguiente ejercicio.

HAUTIRO

Page 587: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 587/719

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

1. Abra la aplicación J ava que realizó en la hoja guiada anterior. Añada en su ventanaun 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 queal 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 setraslade directamente al informe creado anteriormente y se coloque en la posición delparámetro. Entonces la consulta SQL del informe se completará y se podrá rellenar elinforme con los datos correctos.

3. De momento copie el fichero serviciosjuan.jasper dentro de la carpeta informes de sucarpeta de proyecto.

4. Nota Importante: Recuerde que el informe contiene una imagen proporcionada por elfichero nenúfares.jpg. Para que el informe funcione correctamente es necesario quecopie este fichero directamente en la carpeta de su proyecto (no dentro de la carpetainformes)

5. Ahora programe el siguiente código en el actionPerformed del botón ServiciosTrabajadores.

Estudiemos con detenimiento este código.

En él verá dos líneas nuevas en las que se definen los valores de los parámetros:

HAUTIRO

Page 588: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 588/719

 Map par amet r os = new HashMap( ) ;par amet r os. put ( “DNI ”, t xtDNI . get Text ( ) ) ;

En la primera de estas dos líneas se define un objeto de tipo Map. Este objeto contendrá elnombre 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 elvalor del cuadro de texto del DNI, es decir, el DNI que haya escrito el usuario.

Si existieran más parámetros habría que definirlos de la misma forma, por ejemplo:

par amet r os. put ( “suel do”, t xtSuel do. get Text ( ) ) ;par amet r os. put ( “codi go”, ”A- 54”) ;

En este código ficticio se crea un parámetro sueldo al que se le asigna el valor de un cuadrode 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 cuentaque 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 (J asperPrint) Esta línea crea el informe apartir 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 conjuntode parámetros a través del objeto parametro creado antes.

 J asper Pr i nt i nf or me = J asper Fi l l Manager . f i l l Report ( r ut aI nf or me, paramet r os, conexi on) ;

Cuando el informe que se va a mostrar no tiene parámetros, entonces se usa el valor null, encaso 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 elinforme y se muestra en pantalla.

6. Ejecute el programa y pruebe a introducir un DNI existente en el cuadro de texto delDNI. Si escribió correctamente el DNI, podrá ver el listado de servicios realizados porel trabajador con dicho DNI.

Como puede observar, ahora ya puede visualizar los datos de los servicios decualquier trabajador y no solo del trabajador Juan Pérez.

El uso de parámetros en los informes da potencia y versatilidad a las aplicaciones, yes algo muy usado.

HAUTIRO

Page 589: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 589/719

 

Trabajos realizados por Ana Ruiz

NOTA

En los ejemplos guiados que se acaban de proponer, se usa una consulta SQL de informeque contiene un parámetro equivalente a un dato. Concretamente, a un DNI. Este dato formaparte de una condición. Observa la consulta SELECT del informe que hemos usado:

sel ect * f r om t r abaj ador es, ser vi ci oswher e tr abaj ador es. dni =ser vi ci os. dni and t r abaj ador es. dni =$P{DNI } or der by ser vi ci os. f echa

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 unacondición completa, en vez de a un solo dato. Observa el siguiente ejemplo:

sel ect * f r om t r abaj ador es, ser vi ci oswher e t r abaj ador es. dni =ser vi ci os. dni and $P! {COND} or der by ser vi ci os. f echa

En este caso, el parámetro se llama COND y no sustituye a un simple dato, sino quesustituye a toda la condición. En este caso, la aplicación java mandará una cadena quetenga forma de condición SQL, como por ejemplo: “t r abaj adores. suel do > 200”, queserá reemplazada en el lugar del parámetro.

Condición

parámetro

HAUTIRO

Page 590: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 590/719

Para que lo vea claro, el código a usar en la aplicación java para dar valor al parámetropodría ser como sigue:

Map par amet r os = new HashMap( ) ;paramet r os. put ( “COND”, “t r abaj adores. suel do>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 siguientesintaxis:

$P{nombreparámetro}

Cuando se quiera usar un parámetro que represente a una condición, se usará la siguientesintaxis:

$P!{nombreparámetro}

(Observa el uso de la admiración !)

HAUTIRO

Page 591: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 591/719

 

CONCLUSIÓN

Cuando un informe tiene una instrucción SQL invariable, siempre mostrará losmismos datos.

Puede resultar interesante que parte de la instrucc ión SQL del informe pueda variar,de forma que se pueda extraer dis tinta información según el dato que varía. Estosdatos 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 laaplicació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 losdistintos parámetros con los valores de cada uno para luego enviar este objeto alinforme que se quiere mostrar.

El uso de parámetros en informes hace que estos sean mucho más versátiles y que el

programa tenga más posibilidades.

HAUTIRO

Page 592: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 592/719

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 elordenador del cliente. Para ello, es necesario tener en cuenta todos aquellos ficherosexternos 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ónde 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 carpetadel proyecto, la cual será la carpeta “distribuible”.

(Si hubiera un error de compilación el proceso se detendría y aparecería un mensajede error)

2. Si realiza esta operación con alguno de sus proyectos, puede acudir a la carpeta delproyecto y observará la existencia de la carpeta dist:

3. Entre dentro de esta carpeta y observe su contenido:

HAUTIRO

Page 593: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 593/719

 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.

Debe recordar que los programas java pueden ejecutarse en cualquier entorno. Porello, los ejecutables java no tienen una extensión .exe la cual es propia de losentornos Windows.

Para que un ejecutable .jar pueda ser ejecutado en un determinado sistema, debeestar instalado en él la máquina virtual de java.

5. Aparte del fichero ejecutable (.jar) el cual tendrá el nombre del proyecto, verá tambiénuna carpeta lib. Esta carpeta contendrá aquellas librerías adicionales que se hayanincluido en el proyecto.

6. Bases de datos.

Si su programa usa una base de datos, entonces será necesario copiar dicha base dedatos en la carpeta del distribuible.

Si suele crear una carpeta para la base de datos, entonces copie la carpeta con labase de datos en la carpeta distribuible:

7. Imágenes, Iconos.

Si está usando imágenes en su programa (para la presentación, los iconos de losbotones de las barras de herramientas, etc.) tendrá que introducir los ficheros deestas imágenes dentro de la carpeta distribuible.

Si es ordenado, todas estas imágenes estarán dentro de una misma carpeta (llamadapor ejemplo imágenes) Así pues, copie la carpeta que contiene las imágenes queestá usando dentro la carpeta distribuible:

HAUTIRO

Page 594: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 594/719

 

8. Informes.

Si su programa usa informes, es necesario que los ficheros de estos estén dentro dela carpeta del distribuible.

Los ficheros de informes necesarios para el funcionamiento del programa son losficheros compilados .jasper. Los demás no son necesarios incluirlos.

Estos ficheros estarán normalmente dentro de una carpeta llamada Informes, si esusted ordenado. En ese caso, copie la carpeta con los informes dentro de la carpetadel 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 carpetadistribuible depende de la forma en que haya configurado dichas imágenes en eliReport.

Normalmente, al crear una imagen en el informe, asignamos simplemente el nombredel fichero de imagen, suponiendo que la imagen se encontrará en la misma carpetaque el informe:

HAUTIRO

Page 595: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 595/719

 

10. Si estamos ante este caso, para que funcione los informes con imágenes de suprograma es necesario que introduzca las imágenes de los informes directamente enla carpeta distribuible. En nuestro ejemplo la carpeta distribuible quedaría así:

En este ejemplo, el informe usa un fichero deimagen llamado “logo.jpg” que se encuentra enla misma carpeta que donde se ha guardado elinforme.

HAUTIRO

Page 596: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 596/719

 

11. Sin embargo, para mantener una cierta organización de la carpeta distribuible, seríainteresante que las imágenes de los informes estuvieran también dentro de la carpetaImágenes. Si quisiera hacer esto, tendría que modificar sus informes con imágenesde forma que se indicara la carpeta donde estará cada imagen. En nuestro ejemplo,la imagen del informe se tendría que haber configurado así:

Se indica que las imagen “logo.jpg”estará dentro de una subcarpetaImágenes.

HAUTIRO

Page 597: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 597/719

12. Si modifica sus informes con imágenes de esta forma y los recompila, entoncespodrá organizar su carpeta distribuible de esta manera:

13. Una vez incluidos todos estos elementos ya tendremos la carpeta distribuiblecompletada.

Solo tiene que copiar la carpeta dist en un CD, USB o disquete para trasladarla alordenador 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 dedatos, los informes y las imágenes es la correcta.

14. Para la instalación del programa en el ordenador del cliente, solo tiene que copiar lacarpeta distribuible en el disco duro del ordenador del cliente.

Se recomienda que lleve la máquina virtual de java propia del sistema operativo delcliente por si este no la tuviera instalada en su ordenador. Si este fuera el caso, setendría que instalar para que el proyecto pudiera ejecutarse.

La carpeta Informes contiene los .jasper

La carpeta Imagenes contiene todas lasimágenes del programa así como lasimágenes usadas por los informes.

HAUTIRO

Page 598: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 598/719

 

CONCLUSIÓN

NetBeans permite crear una carpeta llamada dist la cual será la que copiaremos en elordenador del cliente.

Basta que el cliente tenga instalada la máquina virtual de java para que nuestroproyecto funcione.

La instalación consist irá básicamente en copiar la carpeta dist al ordenador delcliente, y en instalar la máquina vir tual de java en el caso de que el cliente no la tengainstalada.

 A la hora de crear la carpeta dist debe tener en cuenta que debe añadir la base dedatos, los informes y las imágenes del proyecto, si es que este usa alguno de dichoselementos.

HAUTIRO

Page 599: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 599/719

EJERCICIO GUIADO. JAVA. INSTALABLE.

Instalación de programas Java

Se ha visto en la hoja guiada anterior que para trasladar el programa java realizado alordenador del cliente basta con crear una carpeta “distribuible”. Esta carpeta contiene elfichero ejecutable .jar que permite ejecutar el programa.

El ordenador del cliente debe tener instalada la máquina virtual de java para que nuestroprograma 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 derealizarlo, 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 deinstalación.

En esta hoja guiada se verá como crear un instalable para un programa java, usando unprograma llamado iZpack.

Qué es IZPACK

IZPack es una aplicación que nos permite crear un fichero de instalación a partir de unaaplicación escrita en java. Esto nos permite que nuestras aplicaciones J ava sean más fácilesde distribuir e instalar.

IZPack crea un fichero .jar, que contiene todos los ficheros necesarios del programa. Bastacon 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 delcurso, 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 escojaotro 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.

HAUTIRO

Page 600: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 600/719

Creación de un Ins talable con IZPack. PREPARACIÓN.

1. Lo primero que debes hacer es crear la carpeta Distribuible (dist) de tu programa sies que no la has creado ya.

Para ello debes abrir tu proyecto en NetBeans y seguir los pasos que se indicaron enla hoja guiada anterior.

2. Una vez creada la carpeta del Distribuible, crea un fichero usando el Bloc de Notasllamado Licencia.txt. Este fichero debe contener la licencia de uso del programa. Estefichero lo guardarás en la carpeta Distribuible.

3. Ahora crea usando el Bloc de Notas un fichero llamado Leeme.txt. Aquí introducirásalgún comentario sobre tu proyecto que consideres útil para el cliente. Por ejemplodatos de contacto (teléfono, email), información sobre la versión del programa ocualquier 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 ficherollamado install.xml. Este fichero lo creará usando el Bloc de Notas en la carpetaDistribuible.

El contenido de este fichero estará escrito en un lenguaje llamado XML y será elsiguiente (no se preocupe si no entiende el contenido, solo fíjese en los textos

remarcados):

HAUTIRO

Page 601: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 601/719

 

<?xml ver si on="1. 0" encodi ng=" i so- 8859- 1" st andal one="yes" ?>

<i nst al l at i on ver si on="1. 0">

<i nf o><appname>Nombr e del Pr ogr ama</ appname><appversi on>Versi ón</ appversi on><aut hor s>

<aut hor name="J uan Pérez" emai l =" j uanperez@hot mai l . com" / ></ aut hors><ur l >ht t p: / / www. mi pagi na. es/ </ ur l >

</ i nf o>

<gui pref s wi dt h="640" hei ght ="480" r esi zabl e="no" / >

<l ocal e><l angpack i so3="spa"/ ></ l ocal e>

<nat i ve t ype=" i zpack" name="Shel l Li nk. dl l " / >

<r esour ces><r es i d="Li cencePanel . l i cence" sr c="Li cenci a. t xt "/ ><r es i d="I nf oPanel . i nf o" sr c="Leeme. t xt "/ ><r es src="shor t cut Spec. xml " i d="shor t cut Spec. xml " / >

</ r esources>

<panel s><panel cl assname="Hel l oPanel " / ><panel cl assname="I nf oPanel " / ><panel cl assname="Li cencePanel " / ><panel cl assname="Tar get Panel " / ><panel cl assname="PacksPanel " / ><panel cl assname="I nst al l Panel " / ><panel cl assname="Shor t cutPanel " / ><panel cl assname="Si mpl eFi ni shPanel " / >

</ panel s>

<packs>

<pack name="Fi cheros del Pr ogr ama" r equi r ed="yes"><descr i pt i on>Fi cher os y Carpet as del Progr ama</ descr i pt i on><f i l e sr c="l i b" t ar get di r ="$I NSTALL_PATH" / ><f i l e sr c="base" t ar get di r ="$I NSTALL_PATH"/ ><f i l e sr c=" i nf ormes" t arget di r ="$I NSTALL_PATH" / ><f i l e sr c=" i magenes" t arget di r ="$I NSTALL_PATH" / ><f i l e sr c="gest i on. j ar " t ar get di r ="$I NSTALL_PATH"/ >

<f i l e sr c="i cono. i co" t ar get di r ="$I NSTALL_PATH" / ></ pack>

</ packs>

</ i nstal l at i on>

HAUTIRO

Page 602: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 602/719

6. El fichero install.xml que acaba de crear en el punto anterior es siempre igual. Solotiene que cambiar una serie de datos (los marcados en verde), tal como se indica acontinuación:

- Datos del programador.

En la primera parte del fichero se indican los datos del programador y delprograma. Observe:

<i nf o><appname>Nombr e del Pr ogr ama</ appname><appversi on>Versi ón</ appversi on><aut hor s>

<aut hor name="J uan Pérez" emai l =" j uanperez@hot mai l . com"/ ></ aut hors><ur l >ht t p: / / www. mi pagi na. es/ </ ur l >

</ i nf o>

- Carpetas de tu programa.

En la parte final del fichero tendrás que indicar las carpetas que forman tuprograma (es decir las carpetas que contiene la carpeta distribuible) Observa:

<packs><pack name="Fi cheros del Pr ogr ama" r equi r ed="yes">

<descr i pt i on>Fi cher os y Carpet as del Progr ama</ descr i pt i on><f i l e sr c="l i b" t ar get di r ="$I NSTALL_PATH" / ><f i l e sr c="base" t ar get di r ="$I NSTALL_PATH"/ ><f i l e sr c=" i nf ormes" t arget di r ="$I NSTALL_PATH" / ><f i l e sr c=" i magenes" t arget di r ="$I NSTALL_PATH" / ><f i l e sr c="gest i on. j ar " t ar get di r ="$I NSTALL_PATH"/ >

<f i l e sr c="i cono. i co" t ar get di r ="$I NSTALL_PATH" / ></ pack>

</ packs>

Pon aquí el nombre de tuprograma.

 Y a uí la versión

Escribe aquí tu nombre,

y tu email

 Y tu página web

En este ejemplo se supone que la carpetadistribuible (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)

Usted tendrá que indicar el nombre que le

haya dado a sus subcarpetas.

 Tendrá que indicar también el nombredel fichero executable de su programa, elcual se encuentra también dentro de lacarpeta distribuible. En este ejemplo sesupone que el fichero se llamagestion.jar . Escriba usted el nombre desu programa.

 Y este es el fichero de icono que ha

introducido en la carpeta distribuible.

HAUTIRO

Page 603: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 603/719

 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 seinstala en Windows. Este fichero se llamará shortcutSpec.xml.

Este fichero tiene el siguiente contenido (no es necesario que lo entienda, solo fíjeseen los elementos resaltados):

<?xml ver si on="1. 0" encodi ng=" I SO- 8859- 1"?>

<shor t cut s>

<progr amGr oup def aul t Name="Nombre del Progr ama" l ocat i on="st ar t Menu" / ><shor t cut name="Nombre del Acceso Di r ect o"

t arget ="$I NSTALL_PATH\ gest i on. j ar "

worki ngDi r ect ory="$I NSTALL_PATH"i conFi l e="$I NSTALL_PATH\ i cono. i co"pr ogramGr oup="yes"deskt op="yes"st ar t Menu="no"

/ >

<shor t cut name="Desi nst al ar Tal l er Mecáni co"t ar get ="$I NSTALL_PATH\ uni nst al l er \ uni nst al l er . j ar "worki ngDi r ect ory="$I NSTALL_PATH"i conFi l e="$I NSTALL_PATH\ i cono. i co"st ar t Menu="no"

pr ogramGr oup="yes"/ ></ shor t cut s>

8. Debes crear este fichero con el contenido anterior tal cual. Siempre es igual. Solotienes que variar los elementos seleccionados en verde tal como se indica acontinuación:

<progr amGr oup def aul t Name="Nombre del Pr ogr ama" l ocat i on="st ar t Menu" / ><shor t cut name="Nombre del Acceso Di r ect o"

t arget ="$I NSTALL_PATH\ gest i on. j ar "worki ngDi r ect ory="$I NSTALL_PATH"i conFi l e="$I NSTALL_PATH\ i cono. i co"pr ogramGr oup="yes"deskt op="yes"st ar t Menu="no"

/ >En la parte inicial debes indicar el nombre detu programa, el nombre que le quieras dar alacceso directo, el fichero ejecutable .jar de tu

programa (aquí suponemos que se llamagestion.jar, tu tendrás que averiguar como sellama el tuyo) y el nombre del fichero de icono.

HAUTIRO

Page 604: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 604/719

 

<shor t cut name="Desi nst al ar Tal l er Mecáni co"t ar get ="$I NSTALL_PATH\ uni nst al l er \ uni nst al l er . j ar "worki ngDi r ect ory="$I NSTALL_PATH"

i conFi l e="$I NSTALL_PATH\ i cono. i co"st ar t Menu="no"pr ogramGr oup="yes"/ >

</ shor t cut s> Esta parte crea un icono para desinstalar elprograma. Debes indicar el nombre que lequieres dar a este acceso directo.

Aquí lo hemos nombrado “Desinstalar TallerMecánico”, porque el programa gestiona untaller. En vuestro caso tendréis que indicar elnombre adecuado según vuestro programa.

HAUTIRO

Page 605: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 605/719

Creación de un Ins talable con IZPack. GENERACIÓN DEL INSTALABLE.

1. Una vez realizados los pasos anteriores (siempre son los mismos) hay que generar elfichero Instalable. Para ello debes entrar en el símbolo del sistema.

2. Debes acceder a la carpeta del programa IZPack. Para ello, debes ejecutar elsiguiente comando MS-DOS:

CD C: \ ARCHI VOS DE PROGRAMA\ I ZPACK 

El resultado será que accederás a la carpeta del programa IZPACK:

3. Una vez dentro de la carpeta del programa IzPack, debes ejecutar el siguientecomando:

bi n\ compi l e cami no\ car pet a\ i nst al l . xml - b cami no\ car pet a

Donde cami no\ 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 queindicar el siguiente comando para crear el instalable:

bi n\ compi l e c: \ pr oyectos\ di st\ i nstal l . xml - b c: \ pr oyectos\ di st

4. Al ejecutar este comando, se generará un fichero llamado install.jar dentro de lacarpeta distribuible. Este es el fichero de instalación.

5. Si ejecuta este fichero aparecerá un programa de instalación que le guiará a travésde varios pasos por la instalación de su programa. El resultado será que instala suprograma 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.

HAUTIRO

Page 606: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 606/719

Creación de un Instalable con IZPack. DISTRIBUCIÓN DEL INSTALABLE.

1. Una vez creada la carpeta de distribución con el fichero install.jar dentro de ella, solohay 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 dobleclic 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 suordenador para que la instalación sea posible. Por eso es recomendable incluir en elCD la máquina virtual de java para que el usuario pueda instalarla también antes deinstalar su programa.

HAUTIRO

Page 607: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 607/719

 

CONCLUSIÓN

La distribución de un programa java es tan sencilla como copiar la carpeta distribuibledist en el ordenador del cliente.

Sin embargo, si el cliente carece de conocimientos básicos de informática podemoscrear un fichero de instalación dentro de la carpeta distr ibuib le para que el usuariosolo 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 llamadoIZPACK.

Se introducirán varios f icheros dentro de la carpeta distribuible, necesarios para lacreación del instalable, y luego se generará el instalador.

Una vez creado el instalador dentro de la carpeta dist ribuible, esta se copiará en unCD y se pasará al cliente. Es recomendable que el CD contenga la máquina virtual de java para que el c liente también la pueda instalar.

Hay que tener en cuenta que si el cliente no tiene instalada la máquina virtual de javano se podrá realizar la instalación del programa.

HAUTIRO

Page 608: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 608/719

METODOLOGÍA DE LA PROGRAMACIÓN

JAVA

PRIMEROS PROGRAMAS 

Ejercicio 1Realice 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.- 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 cuadrode texto se copiará dentro de la etiqueta 1.

- Cuando el usuario pulse el botón “Traspasa 2”, lo que se haya escrito dentro del cuadrode 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 delcuadro de texto.

HAUTIRO

Page 609: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 609/719

Ejercicio 3

Se pide que realice un programa en java cuya ventana principal incluya los siguientescomponentes:

- 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 enla 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 siguienteselementos:

- Un cuadro de texto llamado txtNombre.- 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 “J uan”.- El usuario introducirá una ciudad en el cuadro de texto txtCiudad. Por ejemplo “J erez”.- 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 sedesactivarán. Cuando el usuario pulse el botón “Activar”, los dos cuadros de texto sevolverá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 através del operador +.

 Tendrá que usar el método setText para colocar el texto en la etiqueta y el método getText pararecoger el texto de cada cuadro de texto.

 Tendrá que usar el método setEnabled para activar o desactivar cada cuadro de texto.

HAUTIRO

Page 610: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 610/719

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 laspalabras deben desaparecer.

- Cuando el puntero del ratón salga de la superficie de la etiqueta etiOcultar , entonceslas etiquetas con las palabras volverán a aparecer.

 Tendrá que programar los eventos mouseEntered y mouseExited para que el programa detectecuando 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. Estaetiqueta debe tener un color de fondo.

- Un botón con el texto “Esquina”. Este botón se llamará btnEsquina.- 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 laesquina de la ventana.

- Cuando el usuario pulse el botón “Centro”, la etiqueta etiNombre se colocará en elcentro de la ventana.

- Cuando el usuario pulse el botón “Agrandar”, la etiqueta etiNombre cambiará detamañ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á detamaño agrandándose. Cuando el puntero salga del botón, el botón volverá a sutamañ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étodorecibe 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.

HAUTIRO

Page 611: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 611/719

Ejercicio 7

Se pide realizar un programa java que tenga los siguientes elementos en la ventana principal:

- Una etiqueta con el texto que quiera. Esta etiqueta se llamará etiTexto.- Un 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 colorverde.

- 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 paraindicar el color verde usará Color.GREEN.

Para hacer que una etiqueta sea opaca o no, usará el método setOpaque.

HAUTIRO

Page 612: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 612/719

PROGRAMACIÓN

JAVA

PROGRAMAS CON CÁLCULOS 

Ejercicio 1Realice 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 unidadesvendidas.

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

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

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

HAUTIRO

Page 613: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 613/719

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 latecla Enter sobre dicho cuadro de texto, el programa calculará el área y el perímetro ylos 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 programapodrá calcular la potencia de la base elevada al exponente.

El programa deberá usar la clase Math.

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á lossiguientes 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 elcuadro de texto txtNumero, inmediatamente aparecerá su raíz cuadrada en la etiqueta. Paraello, 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. Laventana 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ónConcatena. El resultado será que en la etiqueta etiTexto aparecerán las dos palabras escritasconcatenadas.

Por ejemplo, si el usuario escribe en el primer cuadro de texto “Lunes” y en el segundo

“Martes”, en la etiqueta aparecerá: “LunesMartes”.

HAUTIRO

Page 614: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 614/719

 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 cuadrode texto el número correspondiente.

Los números se van añadiendo al cuadro de texto. Por ejemplo, si el usuario lleva el punterosobre la etiqueta Uno, luego sobre la etiqueta Tres y luego sobre la etiqueta Uno, en el cuadrode 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

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 + r ai z( R) ) / ( 2a)

x = ( - b – r ai z( R) ) / ( 2a)

(raíz es la raíz cuadrada)

Realice el programa para resolver las ecuaciones de segundo grado. El diseño de la ventanaqueda a su elección. Procure que el programa indique cuando hay o no soluciones, y que lasmuestre de forma adecuada.

HAUTIRO

Page 615: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 615/719

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 programatendrá 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 entreel 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 elprograma mostrará un mensaje de error (Use un J OptionPane.showMessage)

- Si el usuario introduce un valor menor que cero en cualquiera de los dos cuadros detexto, entonces también se mostrará un error.

Ejercicio 2

Realice un programa que permita calcular el sueldo total de un empleado. Para ello, elprograma 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 cobrael 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. Secalculará 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 deresultado, el programa debe pedirle al usuario que introduzca una contraseña. Solo sila contraseña es correcta el programa mostrará el sueldo total.

- Para introducir la contraseña use un J OptionPane.showInputDialog.

- Si el usuario introduce una contraseña incorrecta, el programa mostrará un aviso(J OptionPane.showMessage) y el resultado no se mostrará.

HAUTIRO

Page 616: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 616/719

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á elbotó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 indicandola 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

El mensaje puede ser algo así: “Su IMC indica que tiene anorexia”, por ejemplo. Estemensaje aparecerá en un J OptionPane.showMessage.

- Cuando pulse el botón Limpiar, se borrarán los cuadros de texto Peso y Talla. Antes deque esto ocurra, el programa debe pedir confirmación, con un cuadro de diálogo deconfirmación (J OptionPane.showConfirmDialog). El cuadro de confirmación tendrá elsiguiente aspecto:

¿Desea borrar los datos?SI NO

Según lo elegido por el usuario se borrarán los cuadros de texto o no.

HAUTIRO

Page 617: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 617/719

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 detexto, el programa debe mostrar un error emergente (J OptionPane)

Ejercicio 2

Realice un programa cuya ventana tenga los siguientes elementos:

- 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á unapalabra 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 lafrase.

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: 3Posició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 yno se presentará nada en las etiquetas.

HAUTIRO

Page 618: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 618/719

Ejercicio 3

Realice un programa que tenga los siguientes elementos:

- Un cuadro de texto llamado txtFrase.- Un cuadro de texto llamado txtPalabra1.- Un cuadro de texto llamado txtPalabra2.- Un cuadro de texto llamado txtPalabra3.

- Un cuadro de texto llamado txtPalabra4.- Varias etiquetas.- Un 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 loscuadros de texto de las palabras.

- Al pulsar el botón Analizar, el programa debe indicar la siguiente información en lasetiquetas:

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.

HAUTIRO

Page 619: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 619/719

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ónAnalizar.

- 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 programadebería mostrar un error.

Ejercicio 2

Realizar un programa cuya ventana tenga los siguientes elementos:

- Un cuadro de texto llamado txtDNI.- Una etiqueta llamada etiDNI.

- Un 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á elbotón Preparar DNI. El resultado será que el DNI introducido aparecerá “preparado” enla 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-A31.543.234 A31.543.234A31 543 234 Aetc.

Sin embargo, cuando el usuario pulse el botón Preparar DNI, en la etiqueta etiDNI debeaparecer 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, entoncesdebe aparecer un error emergente (J OptionPane).

HAUTIRO

Page 620: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 620/719

 

Ejercicio 3

Se pide hacer un programa que le permita al usuario introducir una palabra en latín de laprimera 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 PLURALNOMINATIVO Rosa RosaeVOCATIVO Rosa RosaeACUSATIVO Rosam RosasGENITIVO Rosae RosarumDATIVO Rosae Rosis

ABLATIVO Rosa Rosis

Por ejemplo, para la palabra ANIMA, sus casos son los siguientes:

CASO SINGULAR PLURALNOMINATIVO Anima AnimaeVOCATIVO Anima AnimaeACUSATIVO Animam AnimasGENITIVO Animae AnimarumDATIVO Animae AnimisABLATIVO Anima Animis

Debes observar que algunos casos son exactamente iguales a la palabra inicial, como porejemplo 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 afinal) 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 detexto, y luego pulsará el botón “Declinar”. Entonces en las etiquetas aparecerán loscasos 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.

HAUTIRO

Page 621: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 621/719

PROGRAMACIÓN

JAVA

EXCEPCIONES 

Ejercicio 1

Realizar un programa que le permita al usuario introducir una frase, una posición inicial y unaposició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 deque el usuario no introduzca nada en el cuadro de texto de la frase, o en el caso de que elusuario 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 deerror.

Ejercicio 2

Realizar un programa que pida las coordenadas de una recta, es decir, las coordenadas delpunto 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 elusuario 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 introduzcaen este botón debe ser capaz de capturar cualquier tipo de excepción producida. Interesa queaparezca 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 estarcomprendidos 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, elcódigo genere una excepción propia

HAUTIRO

Page 622: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 622/719

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 J ava” llamado btnEstiloJ ava.- 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:

- 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 pantallaque venga indicada por los valores x, y, introducidos respectivamente en los cuadrosde 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 J ava”, entonces toda la ventana cambiará a lavisualización J ava.

- Si el usuario pulsa el botón “Estilo Windows”, entonces toda la ventana cambiará a lavisualización Windows.

- Si el usuario pulsa uno de los botones de color, entonces el fondo de la ventana secambiará al color indicado.

Además, el programa contará con las siguientes características:

HAUTIRO

Page 623: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 623/719

 

- Al iniciarse el programa, este debe pedir una contraseña al usuario. Si el usuariointroduce la contraseña correcta, entonces el usuario entrará en el programa. En casocontrario 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 programaseguirá funcionando.

HAUTIRO

Page 624: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 624/719

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: chkBacono “Anchoas” – nombre: chkAnchoaso “Cebolla” – nombre: chkCebollao “Pimiento” – nombre: chkPimiento

- Tres J RadioButtons con los textos:o “Pequeña” – nombre: optPequeniao “Mediana” – nombre: optMedianao “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 seruno solo de los siguientes: pequeña, mediana o familiar.

- El usuario elegirá también los ingredientes que desee. Puede seleccionar uno o variosingredientes.

- Al pulsar el botón Total, el programa calculará y mostrará en la etiqueta etiResultado elprecio 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.

HAUTIRO

Page 625: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 625/719

Si se le añade como ingrediente Bacon, hay que aumentar el precio de la pizza en 1,50euros.Si se le añade como ingrediente Anchoas, hay que aumentar el precio de la pizza en1,80 euros.Si se le añade como ingrediente Cebolla, hay que aumentar el precio de la pizza en1,00 euros.Si se le añade como ingrediente Pimiento, hay que aumentar el precio de la pizza en1,20 euros.

 Tenga en cuenta esto otro:

- Al ejecutar el programa, debe estar seleccionada la opción pizza familiar por defecto, yno debe estar seleccionada ninguno de los ingredientes.

- Al iniciarse el programa, debe aparecer un cuadro indicando el nombre del programa.Por ejemplo: PIZZERÍA J AVA, y el nombre del programador.

- Al intentar cerrar el programa, este debe pedir confirmación para salir. Solo si elusuario acepta salir del programa este se cerrará.

HAUTIRO

Page 626: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 626/719

PROGRAMACIÓN

JAVA

LISTAS Y COMBOS 

Ejercicio 1

Se pide realizar un programa que tenga el siguiente aspecto:

Esta ventana contiene lo siguiente:

- Un cuadro de lista con los siguientes productos (y sus precios):

Sistema de Localización – 120Centro de Control – 60Modem 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ínsulaCanariasExtranjero

- Un combo llamado cboTipoEnvio donde tendremos los siguientes elementos:

NormalUrgente

-

Un botón “Calcular” llamado btnCalcular.- Una etiqueta con un borde llamada etiResultado.- Otras etiquetas informativas.

HAUTIRO

Page 627: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 627/719

 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.- 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 – 20Canarias – 25Extranjero – 30

El Coste del Tipo de Envío puede ser uno de los siguientes:

Normal – 3Urgente – 10

 Tenga en cuenta esto otro:

- Si se pulsa calcular cuando no hay seleccionado ningún producto, el programamostrará un mensaje de error emergente indicándolo.

- Si las unidades son incorrectas, debería mostrarse también un error.

HAUTIRO

Page 628: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 628/719

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:

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, Trimestre4.

- A continuación el usuario pulsará el botón Rellenar, y entonces el cuadro de lista serellenará con los meses correspondientes al trimestre elegido.

- Por ejemplo, si el usuario elige el Trimestre 2 y pulsa el botón, entonces el cuadro delista contendrá: Abril, Mayo, J unio.

- 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 laetiqueta etiMes.

HAUTIRO

Page 629: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 629/719

 Ejercicio 2

Se pide realizar un programa que tenga el siguiente aspecto:

Esta ventana contiene lo siguiente:

- Un combo llamado cboProgresion.- Un cuadro de texto llamado txtInicio.- Un cuadro de texto llamado txtFin.- Un cuadro de texto llamado txtIntervalo.- Un 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 2o El usuario introduce en txtFin un 12o El usuario introduce en txtIntervalo un 3o Al pulsar el botón Rellenar, el combo debe rellenarse con los siguientes

números: 2, 5, 8, 11o 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 etiquetaetiResultado.

- 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 programadebe mostrar un error.

HAUTIRO

Page 630: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 630/719

PROGRAMACIÓN

JAVA

JTOGGLEBUTTONS 

Ejercicio 1

Realice un programa cuya ventana tenga el siguiente aspecto:

- Los botones numerados desde el 1 al 6 son J ToggleButtons. Sus nombres sonrespectivamente: botonUno, botonDos, etc…

- Tres botones normales:

o Desactivar Todos. Nombre: btnDesactivarTodoso Activar Todos. Nombre: btnActivarTodoso 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 delos 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.

HAUTIRO

Page 631: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 631/719

PROGRAMACIÓN

JAVA

JSLIDER 

Ejercicio 1

Una empresa de productos químicos necesita calcular la cantidad de agua y sales que necesitamezclar 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 J Slider llamado deslizadorLitros que represente los litros a fabricar. Sus valoresestarán comprendidos entre 1 y 100. El valor inicial del deslizador será 50.

- Un J Slider llamado deslizadorCalidad que represente la calidad del detergente. Susvalores estarán comprendidos entre 0 y 10. El valor inicial será 5.

- Un J Slider 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 elegidaen el deslizador de litros.

- Una etiqueta con borde llamada etiCalidad donde aparecerá la cantidad de calidadelegida en el deslizador de calidad.

- Una etiqueta con borde llamada etiDensidad donde aparecerá la cantidad de densidadelegida en el deslizador de calidad.

- Una etiqueta con borde etiLitrosAgua, que contenga el total de litros de aguacalculados.

- 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:

HAUTIRO

Page 632: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 632/719

 

El programa funcionará de la siguiente forma:

- El usuario arrastrará los deslizadores y automáticamente aparecerá en las etiquetas losvalores de cada deslizador y la cantidad total de aguas y sales calculada.

El usuario arrastra los

deslizadores...

...Los valores de las etiquetascambian...

...Se calcula automáticamentelos totales...

HAUTIRO

Page 633: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 633/719

PROGRAMACIÓN

JAVA

JSPINNER 

Ejercicio 1

Se propone hacer un juego sencillo, que simule la apertura de una caja a través de unacombinación.

Para ello, debes crear una ventana como la que sigue:

Esta ventana contiene los siguientes elementos:

- Tres J Spinner a los que se les llamará: spiCentenas, spiDecenas y spiUnidades. Estos J Spinner solo admitirán los valores entre 0 y 9.

- Un botón btnAbrir.

- Una etiqueta con borde llamada etiResultado.

Funcionamiento del programa:

- La clave de apertura será la siguiente: 246 (Esto no lo sabe el usuario)

- El usuario modificará los valores de los J Spinner y luego pulsará el botón Abrir.

- Si los valores de los J Spinner coinciden con la clave, 246, entonces en la etiqueta debeaparecer el mensaje “Caja Abierta”.

-Si los valores de los J Spinner forman un número menor que 246, entonces en laetiqueta debe aparecer el mensaje: “El número secreto es mayor”.

- Si los valores de los J Spinner forman un número mayor que 246, entonces en laetiqueta debe aparecer el mensaje: “El número secreto es menor”.

Nota:

- Ten en cuenta que el valor obtenido de un J Spinner no es un número. Si quieresobtener el número entero del J Spinner tienes que usar un código como este:

i nt x;

x = I nt eger . par seI nt ( spi Val or . get Val ue( ) . t oSt r i ng( ) ) ;

HAUTIRO

Page 634: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 634/719

- Sea el número A las centenas, el B las decenas y el C las unidades. Para calcular elnúmero correspondiente hay que hacer el siguiente cálculo:

N =A * 100 + B * 10 + C

Ejemplo de funcionamiento:

Seleccionas los números...

Pulsas Abrir...

En la etiqueta aparece un mensajeindicando si acertaste o el número esmenor o mayor que la clave.

HAUTIRO

Page 635: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 635/719

PROGRAMACIÓN

JAVA

JSROLLBAR 

Ejercicio 1

Imagine que le encargan realizar un programa que contenga un ecualizador. Para permitir alusuario 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 llamaroptPelícula, optConcierto y optPlano. (Para estos tres botones de radio necesitará unobjeto 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 unmínimo de 0 y un máximo de 10. El incremento unitario debe ser de 1 y el incremento

en bloque de 2.

- Cada vez que se mueva una barra, en su etiqueta correspondiente aparecerá el valorde dicha barra (un valor que estará entre 0 y 10) Comprueba que cuando el usuarioactive 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 activauna casilla de verificación, entonces su barra correspondiente quedará bloqueada deforma que no pueda ser modificada. Cuando se vuelva a desactivar la casilla la barrase volverá a activar (Use el método setEnabled)

- Las opciones de ecualización predefinidas permitirán colocar las barras dedesplazamiento en unos valores predefinidos. Concretamente:

o Si el usuario activa la opción Película, las barras quedarán con los siguientesvalores respectivamente: 2, 5, 8, 5, 2

HAUTIRO

Page 636: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 636/719

o Si el usuario activa la opción Concierto, las barras quedarán con los siguientesvalores 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 debeestar activada.

HAUTIRO

Page 637: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 637/719

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

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 odesactivando los cuadros de verificación.

El programa además debe de contar con un menú con una opción llamada “Activación” y otrallamada “Info”

La opción Activación contendrá las siguientes opciones:

- 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:

HAUTIRO

Page 638: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 638/719

 

- Si se activa la opción “Dia – Oficina 1”, entonces se encenderán (activarán) las lucesprincipal y secundaria de la oficina 1, y se apagará (desactivará) la luz de seguridad dedicha oficina.

- Si se activa la opción “Dia – Oficina 2”, entonces se encenderán (activarán) las lucesprincipal y secundaria de la oficina 2, y se apagará (desactivará) la luz de seguridad dedicha oficina.

- Si se activa la opción “Dia – Oficina 3”, entonces se encenderán (activarán) las lucesprincipal y secundaria de la oficina 3, y se apagará (desactivará) la luz de seguridad dedicha oficina.

- Si se activa la opción “Dia – Todas”, entonces todas las oficinas tendrán las lucesprincipal 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 ysecundaria 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 ysecundaria 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 ysecundaria de la oficina 3 y se encenderá la luz de seguridad.

- Si se activa la opción “Noche – Todas”, entonces se apagarán todas las lucesprincipales y secundarias de todas las oficinas y se encenderán todas las luces deseguridad.

La opción Salir permitirá finalizar el programa.

HAUTIRO

Page 639: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 639/719

 

La opción Info del menú contendrá lo siguiente:

- La opción Principales mostrará un J OptionPane donde se indique cuantas lucesprincipales hay encendidas ahora mismo y cuantas apagadas.

- La opción Secundarias mostrará un J OptionPane donde se indique cuantas lucessecundarias hay encendidas ahora mismo y cuantas apagadas.

- La opción Seguridad mostrará un J OptionPane donde se indique cuantas luces de

seguridad hay encendidas y cuantas apagadas.

- La opción Acerca de... mostrará un J OptionPane que contendrá el nombre delprograma y del programador.

MEJORA OPCIONAL

Sería interesante que cada cuadro de verificación estuviera acompañado de una pequeñaimagen 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.

HAUTIRO

Page 640: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 640/719

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

El programa anterior tenía un menú con las siguientes opciones:

HAUTIRO

Page 641: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 641/719

 El objetivo del ejercicio es crear una barra de herramientas que contenga un botón paraalgunas de las opciones principales del menú. Concretamente, la barra de herramientascontendrá 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 elmismo código que el de la opción del menú correspondiente.

HAUTIRO

Page 642: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 642/719

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 TodasEncender Todas------------------- (Separador)Modo DíaModo Noche------------------- (Separador)PrincipalesSecundariasSeguridad

Este menú aparecerá cuando el usuario haga clic con el botón derecho del ratón sobre el fondode la ventana de su programa. Es decir, tendrá que programar el clic del ratón sobre elformulario.

Las opciones del menú contextual coinciden con las opciones de la barra de menús de lasiguiente forma:

Apagar Todas – Activación / Apagar TodasEncender Todas – Activación / Encender TodasModo Día – Activación / Día / TodasModo Noche – Activación / Día / Noche

Principales – Info / PrincipalesSecundarias – Info / SecundariasSeguridad – Info / Seguridad

Programe dichas opciones de forma que se realice la operación correspondiente a su opcióndel menú hermana.

HAUTIRO

Page 643: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 643/719

PROGRAMACIÓN

JAVA

DIALOGO ABRIR/GUARDAR FICHERO 

Notas InicialesSupongamos que tiene en su proyecto un objeto del tipo J FileChooser llamadoelegirFichero.

A través del método getSelectedFile obtiene el fichero que ha elegido el usuario. El métodogetSelectedFile devuelve en realidad un objeto del tipo File.

Así pues, puede hacer lo siguiente:

i nt r esp; / / una r espuest aFi l e f ; / / un f i chero

r esp=el egi r Fi cher o. showOpenDi al og( t hi s) ;

i f ( r esp==J Fi l eChooser . APPROVE_OPTI ON) {f = el egi r Fi cher o. get Sel ectedFi l e( ) ;}

Si observa este código, verá que se crea una variable f de tipo File. Y f es el fichero elegido porel usuario en el cuadro de diálogo Abrir.

Los objetos del tipo File poseen diversos métodos que permiten obtener información sobre elfichero y realizar algunas operaciones con ellos. He aquí algunos métodos que se pueden usar:

getName() - Devuelve el nombre del fichero.

Por ejemplo:

St r i ng nombre = f . get Name( ) ;/ / La var i abl e nombr e cont endr í a el nombr e del f i chero f 

getPath() - Devuelve el camino completo del fichero.

Por ejemplo:

St r i ng cami no = f . getPath( ) ;/ / La var i abl e cami no cont endr í a el cami no del f i cher o f 

exists() - Devuelve verdadero o falso según exista o no.

Por ejemplo:

i f ( f . exi sts( ) == t rue ) { J Opt i onPane. showMessageDi al og(nul l , “El f i cher o f exi st e”) ;

} el se { J Opt i onPane. showMessageDi al og(nul l , “El f i cher o f no exi st e”) ;

}

delete() - Borra el fichero

Por ejemplo:

f . del ete( ) ; / / Borr a el f i chero f  

HAUTIRO

Page 644: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 644/719

 Ejercicio

 Teniendo en cuenta las ideas expuestas, realizar un programa cuya ventana tenga el siguienteaspecto:

El programa funcionará de la siguiente forma:

- Si el usuario pulsa el botón “Info Fichero”, aparecerá el cuadro de diálogo(J FileChooser) Abrir, donde el usuario podrá elegir un fichero. Una vez que el usuarioelija un fichero y pulse el botón “Abrir”, aparecerán los datos del fichero en las distintasetiquetas.

- 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 (usegetPath())

- En la etiqueta existe? aparecerá un mensaje indicando si el fichero existe o no (useexists()) Queda claro que si el fichero no existe no se puede visualizar ni su nombre nisu camino.

- Si el usuario, en cambio, pulsa el botón “Eliminar Fichero”, entonces el programamostrará 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 estaopción.

HAUTIRO

Page 645: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 645/719

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á elbotón “Acumular”. En ese momento se borrará el número introducido en el cuadro detexto.

- Este proceso lo repetirá el usuario varias veces.

- Cuando el usuario pulse el botón “Resultados”, deben aparecer en las etiquetas lossiguientes 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 deresultados 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 llamadamayor . Contendrá en todo momento el número mayorintroducido.

- Una variable double llamada suma. Contendrá en todo momento la suma de losnúmeros introducidos.

- Una variable int llamadacuenta. Contendrá en todo momento la cuenta de todos losnúmeros introducidos hasta ahora.

Al comenzar el programa, y al pulsar el botón “Reiniciar”, será necesario que estas tresvariables se inicien a 0.

Nota. Se supondrá que todos los número introducidos serán mayores o iguales a 0.

HAUTIRO

Page 646: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 646/719

 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 “J ugar” llamado btnJ ugar.- 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 elcuadro de texto txtNumero.

- Luego introducirá una apuesta en el cuadro de texto txtApuesta.

- Y a continuación pulsará el botón “J ugar”.

- El programa calculará entonces un número al azar entre 1 y 10 y lo mostrará en laetiqueta etiNumero.

- Si el número introducido por el usuario coincide con el número elegido al azar por lamáquina, entonces el usuario gana y se le debe sumar lo apostado a la cantidad quetenía en dicho momento. Si el usuario pierde entonces se le debe restar lo apostado ala 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 siguientecódigo:

i nt n; / / el numer o

doubl e al eat or i o;

al eat or i o = Math. r andom( ) ;

al eat or i o = al eat or i o * 10;

al eat or i o = Mat h. f l oor ( al eat or i o) ;

al eat or i o = al eat or i o + 1;

n = ( i nt ) al eat or i o;

(Más información sobre la generación de números aleatorios en el Ejercicio de InvestigaciónNº3)

HAUTIRO

Page 647: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 647/719

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:

- Una barra de herramientas con el nombre barraHerramientas, que contenga tresbotones:

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 llamarbarraMenus. Estabarra contiene una opción “Acción” a la que puede llamarmenuAccion.

HAUTIRO

Page 648: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 648/719

- 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 deherramientas, o bien activa la opción sumar del menú, entonces los minutos escritos sesuman a la hora que se muestra.

- En cambio, si el usuario pulsa el botón restar, o bien activa el botón restar de la barrade herramientas, o bien activa la opción restar de la barra de menús, entonces losminutos 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 delmenú, entonces la hora que se muestra se reinicia a las 00:00 horas.

HAUTIRO

Page 649: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 649/719

 Un ejemplo:

El usuario introduce 90minutos y luego pulsa“Sumar”

Entonces aparece la nuevahora (en formatohora:minutos)

HAUTIRO

Page 650: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 650/719

 

 A TENER EN CUENTA

- Se aconseja que realice un procedimiento Sumar que se encargue de hacer la suma deminutos.

- Realice también un procedimiento Restar que se encargue de hacer la resta deminutos.

- Realice un procedimiento Reiniciar que se encargue de reiniciar la hora.

- Llame desde los distintos eventos al procedimiento que corresponda.

Supongamos ahora que elusuario introduce un 40 yluego pulsa “Restar”

La hora actual se actualizadespués de restar los 40minutos…

HAUTIRO

Page 651: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 651/719

 - 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 losminutos 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 

HAUTIRO

Page 652: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 652/719

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 undeterminado 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 puedeintroducir directamente cada uno de los costes en estos cuadros de textos y al pulsar el botónCalcular 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 dediálogo que debe aparecer tiene que ser el siguiente (haz que sea modal):

Aquí se indicará el número de copias de la versión simplificada del programa a instalar, y elnúmero de copias de la versión completa. Al pulsar el botón Aceptar, se mostrará el coste totalpor 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:

HAUTIRO

Page 653: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 653/719

Cada copia de la versión simplificada cuesta 120 euros, y cada copia de la versión completacuesta 180 euros. Si por ejemplo, el usuario introduce 1 copia simplificada y 2 de la versióncompleta, 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 cuadrode 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 dediá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 horaspor 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 delcoste 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 ocurranada más.

Cuadro de diálogo Coste de Mantenimiento 

En el caso de que se pulse el botón correspondiente al Coste de Mantenimiento, el cuadro dediálogo que debe aparecer tiene que ser el siguiente (haz que sea modal):

HAUTIRO

Page 654: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 654/719

Al pulsar Aceptar, el programa calculará el coste de mantenimiento y lo presentará en el cuadrode 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 nosea modal y que esté siempre por encima de la ventana principal:

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 crearcuadros con gran cantidad de texto. Ten en cuenta que cuando añadas un JTextPane esteaparecerá 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 textodonde quiera, etc.

HAUTIRO

Page 655: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 655/719

 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, puedeusar este código (se supone que el cuadro de diálogo se llama dialogoPres):

i nt x=( i nt ) (Tool ki t . get Def aul t Tool ki t ( ) . get ScreenSi ze( ) . get Wi dt h( ) / 2 - di al ogoPres. get Wi dt h( ) / 2) ;

i nt y=( i nt ) (Tool ki t . get Def aul t Tool ki t ( ) . get ScreenSi ze( ) . get Hei ght ( ) / 2 - di al ogoPres. get Hei ght ( ) / 2) ;di al ogoPr es. set Locat i on( x, y) ;  

El cuadro de diálogo debe tener un botón Cerrar, o bien, debe tener la posibilidad de cerrarsecuando 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 delcuadro de diálogo llamada undecorated. Esta propiedad oculta la barra de título del cuadro dediálogo.

HAUTIRO

Page 656: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 656/719

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 hacertotalmente 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 J ToggleButton y debe estar activado al

arrancar el programa.

- En la parte inferior de la ventana hay un J Slider. Su valor mínimo será 0 y su valormáximo será 100. El valor inicial del J Slider tiene que ser 20.

- El J Slider debe mostrar sus marcas (método setPaintTicks) y la separación entremarcas 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 quehacer directamente desde código, sin usar la ventana de diseño del NetBeans.

HAUTIRO

Page 657: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 657/719

 

 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 J List con las ocho provincias andaluzas.- En la parte izquierda la ventana contiene un J ComboBox 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.

HAUTIRO

Page 658: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 658/719

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 delbotó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ñode NetBeans.

Ejercicio 2

Realice un programa para calcular la velocidad de un vehículo. La ventana del programa tendráel siguiente diseño:

El programa funcionará de la siguiente forma:

HAUTIRO

Page 659: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 659/719

- El usuario introducirá un Espacio y un Tiempo, y al pulsar Enter (actionPerformed) encualquiera de los dos cuadros de textos aparecerá la velocidad en la etiqueta deresultados 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 detextos 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.

HAUTIRO

Page 660: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 660/719

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ánsituadas 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 sutexto 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 debemoverse de sitio de forma que parezca que se ha pulsado como si fuera un botón(observa la imagen)

(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ónnormal, y el texto cambiará a “Pulsado”.

HAUTIRO

Page 661: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 661/719

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 J Slider (deslizador) y una etiqueta que contiene inicialmenteel 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 J Slider, dicho valor aparezca en laetiqueta. Esto se tiene que realizar programando el evento correspondiente desde

código. Aquí tiene la información necesaria:

a. El evento a programar del J Slider se llama: stateChanged b. Pertenece al oyente llamadoChangeListener  c. Asignarás el oyente al J Slider 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 J Slider. Para controlar elmovimiento de la rueda del ratón debe asignar un evento al formulario (this). Aquí tienela información necesaria del evento para la rueda del ratón:

a. El evento a programar de el formulario (this) se llamadmouseWheelMoved b. Pertenece al oyente llamadoMouseWheelListener  

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 

PISTA:El objeto evt pasado como parámetro del evento de la rueda del ratón contieneinformación sobre como se ha movido la rueda. Este objeto tiene un método llamadogetUnitsToScroll que devuelve un número entero que indica cuanto se ha movido larueda. Este número puede ser positivo o negativo según hacia donde se movió larueda.

Aprovechando esto, el evento de la rueda del ratón se puede programar así:

i nt val or = s l i der . get Val ue( ) ; / / s l i der es el obj et o J Sl i der

val or = val or + evt. get Uni t sToScrol l ( ) ;sl i der . set Val ue( val or ) ;

HAUTIRO

Page 662: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 662/719

PROGRAMACIÓN

JAVA

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

Ejercicio 1La ventana sobre la que trabajamos también tiene sus propios eventos. Estos eventos son lossiguientes:

- 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 laetiqueta central.

- Cuando se desactive la ventana, aparecerá un mensaje “La ventana se hadesactivado” en la etiqueta central.

Nota: Una forma de desactivar la ventana es hacer clic sobre la barra de tareas. Luego sepuede 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 J OptionPane)

- De la misma forma, cuando se cierre la ventana, debe aparecer un mensaje dedespedida.

HAUTIRO

Page 663: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 663/719

PROGRAMACIÓN

JAVA

VECTORES DE COMPONENTES 

Ejercicio 1Realizar un programa en cuya ventana aparezcan 7 J ToggleButton (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 botonesactivados. También debe aparecer en la otra etiqueta los días de la semana elegidos (activos)

Ejercicio 2

Se necesita hacer un programa que muestre la siguiente ventana:

HAUTIRO

Page 664: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 664/719

 Diseñe la ventana totalmente desde código y usando vectores. Tendrá que usar los siguientesvectores:

- Un vector de etiquetas (J Label) para cada etiqueta. Necesitarás también un vectorauxiliar de String que contenga los textos de las etiquetas: “Devoluciones”, “Impagos”,“Caducidad” y “Robos”.

- Un vector de cuadros de texto (J TextField)

- Un vector de botones (J Button)

 Tendrás que construir cada vector y luego tendrás que construir los elementos de dichosvectores, colocándolos en la ventana.

El programa no tiene que hacer nada, solo limítese a diseñar la ventana.

HAUTIRO

Page 665: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 665/719

PROGRAMACIÓN

JAVA

VECTORES DE COMPONENTES 

Ejercicio 1Realizar un programa donde aparezcan diez botones conteniendo los números entre el 0 y 9.

 Todos estos botones pertenecerán a un vector de J Button, y tendrán asociado un eventoactionPerformed.

Cada vez que se pulse uno de los botones, en un cuadro de texto de la ventana se añadirá eldígito correspondiente, como si estuvieramos usando una calculadora.

Añadir también un botón “Borrar” (no perteneciente al vector) que permita borrar el contenidodel cuadro de texto.

El aspecto del programa puede ser similar al siguiente:

COLOCACIÓN DE LOS BOTONES

Para la colocación de los botones en el J Frame, se puede usar un vector de posiciones X y unvector de posiciones Y que contengan las posiciones (X,Y) de cada botón:

i nt vect orx[ ] ={10, 40, 70, 10, 40, 70, 10, 40, 70, 10};i nt vect ory[ ] ={10, 40, 70, 10, 40, 70, 10, 40, 70, 10};

 Y luego se puede aplicar los valores de estos vectores en el momento de usarsetBounds:

f or ( …) {…vBot ones[ i ] . set Bounds( vectorx[ i ] , vectory[i ] , 20, 20) ;…

}

Se pulsó el 9 y luegoel 5

HAUTIRO

Page 666: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 666/719

 

Ejercicio 2

Se pide hacer un programa que muestre 8 etiquetas, cada una con el nombre de una provinciaandaluza. 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 J Label) ylas 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á averde, mientras que el color de fondo de todas las demás se colocará en azul (paracambiar el color de fondo: setBackground y setOpaque)

- Al sobrevolar el ratón la etiqueta (evento mouseEntered) el color del texto de la etiquetase pondrá en amarillo (para cambiar el color de texto: setForeground).

- Al abandonar el ratón la etiqueta (eventomouseExited) el color del texto de la etiquetavolverá a ser de color negro.

HAUTIRO

Page 667: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 667/719

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 J OptionPane el área de la pared seleccionada en esemomento.

- El botón Perímetro mostrará en un J OptionPane el perímetro de la pared seleccionadaen ese momento.

CLASE RECTANGULO

PARA HACER ESTE EJERCICIO USARÁ UNA CLASE DE CREACIÓN PROPIA LLAMADARECTÁNGULO.

La clase Rectangulo debe tener las siguientes características:

HAUTIRO

Page 668: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 668/719

 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 – 100Altura – 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 BasegetAltura – devuelve el valor de la propiedad AlturagetArea – devuelve el área del rectángulogetPerí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 CLASERECTÁNGULO, CADA UNO DE LOS CUALES HARÁ REFERENCIA A UNA DE LASCUATRO 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 alas cuatro paredes o pidiéndoles información.

HAUTIRO

Page 669: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 669/719

 Ejercicio 2

PRIMERA PARTE

 Trabajamos de programador para una empresa de venta por correo. Esta empresa recibepedidos 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 deobjetos llamada PEDIDO.

La Clase Pedido permitirá crear objetos de tipo pedido. Estos objetos nos proporcionaráninformación sobre el estado del pedido y nos facilitará la programación de los proyectos para laempresa.

SE PIDE PROGRAMAR LA CLASE PEDIDO TENIENDO EN CUENTA SUSCARACTERISTICAS, LAS CUALES SE MENCIONAN A CONTINUACIÓN:

HAUTIRO

Page 670: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 670/719

 CLASE PEDIDO

Nombre de la Clase: Pedido 

Propiedades de los objetos de la Clase Pedido: Arti culo : 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 pedidosetUnidades – permite asignar el número de unidades pedidassetPrecio – permite asignar un precio unidad al artículo del pedidosetGastosEnvio – permite asignar la cantidad de gastos de envío del pedidosetDescuento – permite asignar el tanto por ciento de descuento del pedido

Métodos get getArticulo – devuelve el nombre del artículo del pedidogetUnidades – devuelve el número de unidades del artículogetPrecio – devuelve el precio del artículo del pedidogetGastosEnvio – devuelve los gastos de envío del pedidogetDescuento – devuelve el tanto por ciento de descuento del pedido

getTotalSinIva – devuelve el total sin iva del pedido. Se calcula así:

 Tot al Si nI va = ( Uni dades * Pr eci o) + gast os de envi o

getIva – devuelve la cantidad de Iva del pedido. Se calcula así:

I va = Tot al Si nI va * 0, 16

getTotalMasIva – devuelve el total del pedido más el Iva. Se calcula así:

 Tot al MasI va = Tot al Si nI va + I va

getTotalDescuento – devuelve el total del descuento. Se calcula así:

 Tot al Descuento = Tot al MasI va * Descuent o / 100 

getTotalPedido – devuelve el total del pedido. Se calcula así:

 Tot al Pedi do = Total MasI va – Total Descuento

HAUTIRO

Page 671: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 671/719

 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ículoo Unidades pedidaso Precio unidad del artículoo Gastos de envíoo Tanto Por Ciento de descuento.

- Al pulsar el botón “Aceptar Pedido”, todos estos datos deben asignarse a un objetollamado ped de tipo Pedido.

- Al pulsar el botón “Ver Desglose”, deben aparecer en las distintas etiquetas (de colorverde en la imagen) los siguientes datos del pedido:

o Nombre del Artículoo Unidades pedidaso Precio unidado Gastos de envíoo Total Sin Iva del pedidoo Iva del pedido

o Total Más ivao Total de Descuentoo Total del Pedido.

- Para hacer esto solo tendrá que pedirle información al objeto ped usando sus métodosget y luego colocar esta información en cada etiqueta.

PARA PODER REALIZAR ESTE PROYECTO SERÁ NECESARIO INCLUIR LAPROGRAMACIÓN DE LA CLASE PEDIDO REALIZADA EN EL APARTADO ANTERIOR DELEJ ERCICIO.

SI NO SE AÑADE LA PROGRAMACIÓN DE LA CLASE, SERÁ IMPOSIBLE CREAR EL

OBJ ETO PED QUE NOS PERMITE MANEJ AR LAS CARACTERÍSTICAS DEL PEDIDO.

HAUTIRO

Page 672: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 672/719

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:

Propiedadestemperatura – double

Métodos

setTemperatura()

Este método recibe como parámetro un double con la temperatura a mostrar. Estatemperatura se almacena en la propiedad temperatura.

Además, este método muestra la temperatura en la etiqueta, añadiendo ºC. Porejemplo, 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

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, entoncesla temperatura aumenta en este valor. Si el valor es negativo, la temperaturadisminuye.

HAUTIRO

Page 673: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 673/719

 Un ejemplo de uso de una etiqueta de este tipo:

et i Temp. setTemperat ur a( 12) ; / / en l a et i quet a se most r ar á 12 ºCet i Temp. most r ar RangoCol or ( ) ; / / l a et i quet a se most r ar á con col or

/ / de f ondo Magent aet i Temp. cambi arTemperatur a(20) ; / / l a temperatura sube 20 ºCet i Temp. most r ar RangoCol or ( ) ; / / l a et i quet a se muest r a nar anj a

doubl e t = et i Temp. get Temperatur a( ) ; / / t cont endr á un 32

Objetivo del ejercicio

Debe programar la clase EtiquetaTemperatura de forma que herede de las etiquetas normalesde java (J Label)

 Tendrá que añadir la propiedad temperatura a la clase EtiquetaTemperatura y programar losmétodos antes comentados.

EJERCICIO 2

Realiza un proyecto cuya ventana principal tenga el siguiente aspecto:

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 laventana 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 -, latemperatura disminuirá.

Cada vez que varíe la temperatura de la etiqueta, deberá variar su color.

Al pulsar el botón “Fahrenheit”, aparecerá en un J OptionPane la temperatura que tieneactualmente la etiqueta convertida a grados Fahrenheit.

HAUTIRO

Page 674: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 674/719

PROGRAMACIÓN

JAVA

POO. DIALOGOS PROPIOS 

Planteamiento Inicial

 Todos los proyectos que hacemos en el trabajo tienen que llevar un cuadro de diálogo depresentació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 unnuevo proyecto, así que programaremos una Clase Propia que derive de la clase J Dialog, yque 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 quenecesitemos 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á uncuadro de diálogo, o, dicho de otra forma, heredará de la clase J Dialog.

El aspecto de un cuadro de diálogo de este tipo en funcionamiento podría ser el siguiente:

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 J Panel al que se le ha asignado un borde conrelieve.

HAUTIRO

Page 675: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 675/719

 

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 laetiqueta etiNombrePrograma.

setVersion

- Recibirá una cadena con la versión del programa, y esta cadena se introducirá en laetiqueta etiVersion.

setNombreProgramador  

- Recibirá una cadena con el nombre del programador, y esta cadena se introducirá en laetiqueta etiNombreProgramador .

Cuando el usuario pulse el botón “Empezar”, lo único que tiene que suceder es que se cierre elcuadro de diálogo.

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 depresentación debe contener los siguientes datos:

Nombre del programa: Cálculo del Área del CírculoVersión: v 1.0Nombre del programador: su nombre.

 Tendrá por supuesto, que incluir la clase DialogoPresentacion en su proyecto, y crear un objetodel 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 laventana principal.

HAUTIRO

Page 676: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 676/719

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

HAUTIRO

Page 677: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 677/719

 Ventana Principal

La ventana principal del programa constará de un menú con las siguientes opciones:

 Archivo Abrir 

Cerrar Cerrar TodosSalir 

VentanaCascadaMosaico HorizontalMosaico Vertical

En el centro de la ventana (se recomienda un Layout del tipo BorderLayout) se colocará unpanel del tipo J DesktopPane que será el encargado de contener las ventanas internas. Puedellamar a este panel panelInterno.

Aspecto de la ventana principal:

Ventana Interna

Debe añadir a su proyecto una clase J InternalFrame para diseñar las ventanas internas.

Una ventana interna constará únicamente de un objeto J TextPane que ocupará toda laventana.

Los objetos J TextPane son similares a los cuadros de texto (JTextField) con la diferencia deque pueden contener grandes cantidades de texto en varias líneas. Llame al objeto J TextPanecon el nombre txtTexto.

panelInterno

(J DesktopPane)

HAUTIRO

Page 678: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 678/719

 

Estas ventanas internas contendrán el texto del fichero que se abra. Para facilitar la tarea deabrir un fichero y colocar su texto en la ventana interna debe añadir el siguiente método a laclase ventana interna:

publ i c voi d poner Texto( St r i ng cami nof i cher o) {t ry {

Fi l e fi = new Fi l e( cami nof i cher o) ;Fi l eReader l ect ur a = new Fi l eReader ( f i ) ;Buf f eredReader ent r ada = new Buf f eredReader ( l ect ur a) ;St r i ng l i nea;St r i ng t exto="" ;l i nea = ent r ada. r eadLi ne( ) ;whi l e( l i nea! =nul l ) {

t ext o = t ext o+l i nea+" \ n";l i nea = ent r ada. r eadLi ne( ) ;

}ent r ada. cl ose( ) ;l ectura. cl ose( ) ;t xtText o. set Text( t exto);

} catch( Except i on e) { J Opt i onPane. showMessageDi al og(nul l , "Er r or al l eer f i cher o. " ) ;

}}

Este método recibe el camino de un fichero, y coloca dentro del J TextPane (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(J TextPane)

HAUTIRO

Page 679: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 679/719

 Opciones principales del programa

Se comenta a continuación la forma en que deben funcionar las distintas opciones delprograma:

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 J FileChooser para abrir un fichero.

Si el usuario selecciona un fichero, entonces tendrá que crear una ventana interna llamada porejemplo vi, y mostrarla en el panel Interno.

Finalmente, usando el método ponerTexto de la ventana interna vi deberá mostrar el contenidodel fichero seleccionado en el J FileChooser.

vi . ponerTexto( cami nof i cher osel ecci onado)

Al abrir un fichero de texto en una ventana, deberá aparecer el camino del fichero en la barrade título de la ventana interna.

Opción Arch ivo – Cerrar La opción Cerrar cerrará la ventana interna que esté activa (si es que hay alguna)

Opción Arch ivo – Cerrar TodasEsta opción cerrará todas las ventanas internas abiertas en el panel interno.

Opción Arch ivo – Salir Permitirá salir del programa.

Opción Ventana – CascadaEsta opción colocará todas las ventanas internas que haya abiertas en cascada. Esto es, unaencima de otra, mostrando el título de cada una.

HAUTIRO

Page 680: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 680/719

 

Opción Ventana – Mosaico HorizontalEsta opción hará visible todas las ventanas mostrándolas en horizontal, ocupando todo el panelinterno.

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

HAUTIRO

Page 681: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 681/719

 

HAUTIRO

Page 682: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 682/719

 Opción Ventana – Mosaico VerticalEsta opción hará visible todas las ventanas mostrándolas en vertical, ocupando todo el panelinterno.

Para ello, tendrás que obtener el tamaño horizontal del panel interno, y dividirlo por el númerode 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 deotra.

HAUTIRO

Page 683: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 683/719

 EXPLICACIÓN MÉTODO ponerTexto

Para realizar este ejercicio es necesario añadir a la clase de la ventana interna el siguientemétodo. No es necesario entender el código de este procedimiento para hacer el ejercicio, peroen cualquier caso, aquí hay una explicación de este:

publ i c voi d poner Texto( St r i ng cami nof i cher o) {t ry {

Fi l e fi = new Fi l e( cami nof i cher o) ;Fi l eReader l ect ur a = new Fi l eReader ( f i ) ;Buf f eredReader ent r ada = new Buf f eredReader ( l ect ur a) ;St r i ng l i nea;St r i ng t exto="" ;l i nea = ent r ada. r eadLi ne( ) ;whi l e( l i nea! =nul l ) {

t ext o = t ext o+l i nea+" \ n";l i nea = ent r ada. r eadLi ne( ) ;

}ent r ada. cl ose( ) ;l ectura. cl ose( ) ;

t xtText o. set Text( t exto);} catch( Except i on e) { J Opt i onPane. showMessageDi al og(nul l , "Er r or al l eer f i cher o. " ) ;

}}

Este método recibe un camino de fichero de texto y muestra dentro de un J TextPane el textoque contiene dicho fichero.

La forma de acceder a un fichero para extraer su contenido es a través de “canales”. Loscanales son objetos que se “enganchan” al fichero uno detrás de otro. Cada canal ofrece unaserie 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 unString)

- Se engancha al objeto File un objeto del tipo FileReader. (Los objetos FileReader soncanales de lectura, que permiten extraer información del fichero)

- Se engancha al canal FileReader un objeto BufferedReader. (Los objetosBufferedReader dan facilidad al programador para extraer el texto del fichero)

- Finalmente, a través del método readLine del objeto BufferedReader se pueden extraeruna a una las líneas de texto del fichero.

- Una vez finalizado el trabajo con el fichero se cierra el canal FileReader y el canalBufferedReader.

La creación de un objeto File a partir del camino del fichero se hace con la siguienteinstrucción:

Fi l e fi = new Fi l e( cami nof i cher o) ;

La creación de un canal FileReader y la conexión con el fichero anterior se hace a través de lasiguiente instrucción:

Fi l eReader l ect ur a = new Fi l eReader ( f i ) ;

Camino Fichero(String)

Objeto Fichero(File)

Canal de Acceso alFichero

(FileReader)

Canal de Acceso alFichero

(BufferedReader)

HAUTIRO

Page 684: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 684/719

 La creación de un canal BufferedReader y la conexión con el canal FileReader anterior se hacea través de la siguiente instrucción:

Buf f eredReader ent r ada = new Buf f eredReader ( l ect ur a) ;

Una vez hecho esto, tenemos un objeto llamado entrada del tipo BufferedReader que posee unmé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ástexto en el fichero.

 Todo esto se aprovecha para crear una cadena larga con el contenido del fichero:

St r i ng l i nea;St r i ng t exto="" ;l i nea = ent r ada. r eadLi ne( ) ;whi l e( l i nea! =nul l ) {

t ext o = t ext o+l i nea+" \ n";l i nea = ent r ada. r eadLi ne( ) ;

}

El código anterior crea una variable texto que contiene el texto completo del fichero. Estecódigo extrae una a una las líneas de texto del fichero y las va concatenando en la variabletexto.

Como hemos terminado con la manipulación del fichero, es bueno cerrar los canales decomunicación con el fichero (el canal FileReader y el canal BufferedReader creados):

ent r ada. cl ose( ) ;l ectura. cl ose( ) ;

 Y finalmente metemos el texto extraído en el panel de texto de la ventana, el cual se llamatxtTexto:

t xtText o. set Text( t exto);

 Todo esto debe estar dentro de un try ... catch ya que es un código susceptible de tener erroresde ejecución (es decir, de lanzar excepciones)

HAUTIRO

Page 685: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 685/719

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 empresaquiere 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 empresaquiere controlar la información de sus comerciales. Concretamente necesita almacenar de ellossus nombres y apellidos y su móvil. A cada comercial se le asigna un número en la empresapara distinguirlos.

Diariamente, los comerciales realizan ventas de productos a los clientes. Interesa almacenarinformación sobre dichas ventas. De cada venta interesa almacenar el nombre del productoque se vende, las unidades vendidas del artículo, el precio del producto y la fecha en que seefectuó 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á muchascosas 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.

HAUTIRO

Page 686: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 686/719

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

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 quierealmacenar el nombre, los apellidos, el móvil y el sueldo que gana. A cada conductor se leasigna 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 materialque se transporta, cuantos kilos se transporta y la fecha del transporte.

Cada transporte concreto está encargado por un cliente. A la empresa le interesa tenerinformación de los clientes que encargan transportes. La información que interesa almacenarde cada cliente es : el CIF del cliente, el nombre de la empresa, la dirección de la empresa, eltelé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 enmuchos transportes.

En cada transporte participa un solo conductor, y, por supuesto, un conductor realiza muchostransportes mientras trabaja para la empresa.

Cada transporte está encargado por un solo cliente. Pero ten en cuenta que un cliente puedeencargar 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.

HAUTIRO

Page 687: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 687/719

SUPUESTO Nº 3. « MEDICIONES »

Una empresa química realiza mediciones constantemente de los materiales que contiene latierra de distintas parcelas de cultivo, y le interesaría tener un control de toda la informaciónque 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 elmomento de hacer la medición, humedad del aire y un comentario sobre la medición (en estecomentario se indicará el resultado de la medición) Cada medición se numera, de forma que nopuede haber dos mediciones con el mismo número.

Las mediciones las realizan químicos especializados contratados por la empresa. Estaempresa desea almacenar los datos de estos químicos: nombre, apellidos y teléfono decontacto.

Las mediciones se realizan en terrenos particulares, e interesa almacenar información sobredichos 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 delterreno. 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 empresaque ha encargado las medidas. Interesa almacenar de cada informe lo siguiente: número deinforme (no hay dos informes con el mismo número), nombre de la empresa que encarga elinforme, fecha en que se lanza el informe, conclusiones del informe (aquí se redactan una seriede 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 unamedición está realizada en un solo terreno.

Un informe de mediciones plasmará el resultado de muchas mediciones, pero una mediciónaparecerá 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.

HAUTIRO

Page 688: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 688/719

SUPUESTO Nº4. “REVISIONES MÉDICAS”

En un hospital se realizan distintas revisiones médicas a los pacientes ingresados, y lesinteresa almacenar información sobre estas revisiones.

De cada revisión interesa almacenar la fecha y hora en que se hizo, peso y altura del pacientey 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 variasrevisiones mientras está ingresado.

Interesa almacenar la información de cada paciente: nombre, apellidos, DNI y fecha denacimiento del paciente.

Los médicos realizan revisiones a sus pacientes. Hay que tener en cuenta que un mismomédico puede realizar revisiones a distintos pacientes, pero un paciente tiene asignado un solomédico para las revisiones.

Interesa almacenar la información de cada médico: nombre, apellidos, especialidad. A cadamé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.

HAUTIRO

Page 689: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 689/719

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 tengancierto sentido. Tenga en cuenta que los datos correspondientes a las claves y claves foráneastendrá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 tengancierto sentido. Tenga en cuenta que los datos correspondientes a las claves y claves foráneastendrá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 tengancierto sentido. Tenga en cuenta que los datos correspondientes a las claves y claves foráneastendrá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 tengancierto sentido. Tenga en cuenta que los datos correspondientes a las claves y claves foráneastendrán que coincidir para que la base de datos tenga coherencia.

HAUTIRO

Page 690: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 690/719

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 unalimusina. 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 laempresa. 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 laalquila un cliente y otro día la alquila otro)

Por otro lado, un cliente alquila muchas limusinas (en momentos distintos también, un díaalquila 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 quecondujo en el viaje.

SE PIDE :

1. Este supuesto produce una relación Muchas a Muchas entre las entidades limusinas yclientes. 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.

HAUTIRO

Page 691: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 691/719

 SUPUESTO Nº 2 « RESERVAS HOTEL »

Un hotel quiere guardar un histórico con todas las reservas realizadas en el hotel por susclientes. 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 lahabitación por noche.

Un cliente puede haber reservado varias habitaciones (no tiene por qué ser a la vez : un veranopuede alojarse en la habitación nº 124, pero al verano siguiente puede alojarse en la habitaciónnº 535 del mismo hotel)

En una habitación se alojan muchos clientes (no a la vez, claro está : una semana está alojadoel 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 deentrada y de salida del cliente en la habitación.

SE PIDE :

1. Este supuesto produce una relación Muchas a Muchas entre las entidadeshabitaciones y clientes. Represente dicha relación.

2. A continuación identifique la entidad intermedia que elimina la relación Muchas aMuchas.

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.

HAUTIRO

Page 692: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 692/719

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. Sealmacenará 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 cochepuede sufrir varias averías a lo largo de su vida, y cada una de estas avería puede serreparada por un mecánico distinto)

Interesa almacenar también el coste de cada reparación, así como el número de horas que seusaron 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.

HAUTIRO

Page 693: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 693/719

SUPUESTO Nº 4 « VIDEOCLUB »

Un videoclub quiere almacenar información sobre los alquileres de películas que se hicieron. Leinteresa 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ítulode 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), elnombre 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, yal 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 porel 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.

HAUTIRO

Page 694: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 694/719

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 enAccess 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 éllas tablas diseñadas para este supuesto. Introducir algunos datos en las tablas (Intente que losdatos 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 quelos datos sean coherentes)

HAUTIRO

Page 695: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 695/719

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

HAUTIRO

Page 696: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 696/719

 Ahora, realice las siguientes consultas en la base de datos. Guarde cada una con el nombreque 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 deaquellos 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 deaquellos servicios que fueron realizados antes del 1 – 1 – 2006

4. Crear una consulta llamadaServicios de Fontanería 

En ella deben aparecer los campos número de servicio, cantidad, tipo y comentario detodos 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 delos servicios de Fontanería y los servicios de Electricidad.

6. Crear una consulta llamadaListado 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 seandel tipo Electricidad.

Debes tener en cuenta que los campos nombre y apellidos del trabajador pertenecen ala 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 llamadaServicios 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 serviciosrealizados 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 llamadaServicios a Academias 

En ella deben aparecer los campos fecha del servicio, tipo, cantidad, nombre del clientey 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”)

HAUTIRO

Page 697: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 697/719

9. Crear una consulta llamada Servicios del año 2006 

En ella aparecerán los campos fecha del servicio, tipo, cantidad, apellidos deltrabajador, nombre del cliente, CIF del cliente de todos aquellos servicios que se hayanrealizado entre el 1 del 1 de 2006 y el 31 del 12 del 2006

10. Crear una consulta llamadaServicios 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 lacalle Larga.

11. Crear una consulta llamadaServicios trabajadores 2006 

En ella deben aparecer los campos fecha del servicio, tipo cantidad, nombre y apellidosdel trabajador y fecha de entrada del trabajador de todos aquellos servicios realizadospor 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 llamadaClientes de Seguros 

En ella deben aparecer los campos CIF, nombre del cliente, dirección del cliente detodos aquellos clientes que gestionen seguros (deben contener en el nombre la palabra“seguros”)

13. Crear una consulta llamadaListado de Academias y Papelerías 

En ella deben aparecer los campos CIF, nombre del cliente, dirección del cliente yteléfono fijo de todos aquellos clientes que sean academias o papelerías.

14. Crear una consulta llamadaListado de SEAT y trabajadores 

En ella deben aparecer los campos matrícula, marca y modelo de los seat de laempresa. También interesa que aparezca el nombre y apellido del conductor de cadacoche.

15. Crear una consulta llamadaServicios realizados con CITROEN 

En ella debe aparecer el listado de servicios que han sido realizados usando alguno delos citroen de la empresa.

En esta consulta deben aparecer los siguientes campos: matrícula del vehículo, marcay modelo. Nombre y apellidos del trabajador que hizo el servicio. Nombre y direccióndel 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.

HAUTIRO

Page 698: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 698/719

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 vuelvaa hacer dichas consultas pero esta vez usando el lenguaje SQL (se le ha añadido a losnombres la palabra SQL para distinguirlas de las consultas de la hoja anterior)

1. Crear una consulta llamada Servicios de Limpieza SQL.

En ella deben aparecer los campos fecha del servicio, tipo, cantidad y comentario deaquellos servicios cuyo tipo sea Limpieza.

2. Crear una consulta llamada Servicios Baratos SQL.

En ella deben aparecer los campos número del servicio, fecha, tipo y cantidad deaquellos servicios que hayan costado menos de 180 euros. 

3. Crear una consulta llamada Servicios anteriores 2006 SQL.

En ella deben aparecer los campos número del servicio, fecha, tipo y cantidad deaquellos servicios que fueron realizados antes del 1 – 1 – 2006

4. Crear una consulta llamadaServicios de Fontanería SQL 

En ella deben aparecer los campos número de servicio, cantidad, tipo y comentario detodos aquellos servicios que fueron de fontanería y costaron 250 o más euros.

5. Crear una consulta llamadaListado de Servicios No Limpieza SQL 

En ella deben aparecer los campos número de servicio, cantidad, tipo y comentario delos servicios de Fontanería y los servicios de Electricidad.

6. Crear una consulta llamadaListado 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 seandel tipo Electricidad.

Debes tener en cuenta que los campos nombre y apellidos del trabajador pertenecen ala 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 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 serviciosrealizados por el trabajador con DNI 12.321.567-B

 Ten en cuenta que tendrás que usar varias tablas para hacer la consulta.

HAUTIRO

Page 699: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 699/719

 

8. Crear una consulta llamada Servicios a Academias SQL 

En ella deben aparecer los campos fecha del servicio, tipo, cantidad, nombre del clientey nombre y apellidos del trabajador de todos aquellos servicios que se hayan realizadoa una Academia (es decir, el nombre del cliente debe contener la palabra “academia”)

9. Crear una consulta llamadaServicios del año 2006 SQL 

En ella aparecerán los campos fecha del servicio, tipo, cantidad, apellidos deltrabajador, nombre del cliente, CIF del cliente de todos aquellos servicios que se hayanrealizado entre el 1 del 1 de 2006 y el 31 del 12 del 2006

10. Crear una consulta llamadaServicios 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 lacalle Larga.

11. Crear una consulta llamadaServicios trabajadores 2006 SQL 

En ella deben aparecer los campos fecha del servicio, tipo cantidad, nombre y apellidosdel trabajador y fecha de entrada del trabajador de todos aquellos servicios realizadospor 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 llamadaClientes de Seguros SQL 

En ella deben aparecer los campos CIF, nombre del cliente, dirección del cliente detodos aquellos clientes que gestionen seguros (deben contener en el nombre la palabra“seguros”)

13. Crear una consulta llamadaListado de Academias y Papelerías SQL 

En ella deben aparecer los campos CIF, nombre del cliente, dirección del cliente yteléfono fijo de todos aquellos clientes que sean academias o papelerías.

14. Crear una consulta llamadaListado de SEAT y trabajadores SQL 

En ella deben aparecer los campos matrícula, marca y modelo de los seat de laempresa. También interesa que aparezca el nombre y apellido del conductor de cadacoche.

15. Crear una consulta llamadaServicios realizados con CITROEN SQL 

En ella debe aparecer el listado de servicios que han sido realizados usando alguno delos citroen de la empresa.

En esta consulta deben aparecer los siguientes campos: matrícula del vehículo, marcay 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.

HAUTIRO

Page 700: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 700/719

 EJERCICIO 2

Realice también estas otras consultas usando el lenguaje SQL (asígneles el nombre quequiera):

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 2sea 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 el1/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.

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 trabajadorque conduce cada coche.

HAUTIRO

Page 701: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 701/719

 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 hizoel 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 lamisma 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, lacantidad que costó el servicio, el tipo de servicio, el nombre del cliente, la dirección delcliente.

Condición: se pide mostrar aquellos servicios de fontanería realizados por el trabajadorcon nombre J uan que hayan costado menos de 240 euros.

El listado debe aparecer ordenado por cantidad de mayor a menor.

HAUTIRO

Page 702: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 702/719

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 deequivocació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 yactive 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 indicarel 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. Sila abres, observarás que su contenido es el mismo que Trabajadores.

EJERCICIO:

Crear una copia de las demás tablas:

Clientes Clientes2Coches Coches2Servicios Servicios2

(Nota: para los siguientes ejercicios usaremos las copias de las tablas, para así mantenerintacto el contenido de las tablas originales)

HAUTIRO

Page 703: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 703/719

INSERCIÓN DE REGISTROS

NOTA: COMPROBAR QUE LOS EJERCICIOS SE HAN REALIZADO CORRECTAMENTEENTRANDO EN LAS TABLAS Y OBSERVANDO SU CONTENIDO

EJ ERCICIOS:

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 2de 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 10de 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. Notiene 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 conDNI 56.456.345-W

MODIFICACIÓN DE REGISTROS

NOTA: COMPROBAR QUE LOS EJERCICIOS SE HAN REALIZADO CORRECTAMENTEENTRANDO EN LAS TABLAS Y OBSERVANDO SU CONTENIDO

EJ ERCICIOS:

1. Se pide asignar a los trabajadores de la tabla Trabajadores2 que hayan entrado antesdel año 2005 un sueldo de 1400 euros.

2. En la tabla Trabajadores2 asigne al trabajador con DNI 33.987.987-F el coche conmatrícula 4454-EEE.

3. La trabajadora llamada Ana ha sido suspendida de empleo. Asigne un valor 0 al sueldode esta trabajadora en la tabla Trabajadores2.

4. Se ha averiguado el teléfono móvil del gerente de la empresa Academia La Plata. Elmóvil es el 633 45 54 45. Se pide que en la tabla Clientes2 asigne ese teléfono móvil adicho cliente.

5. 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 dichoscambios a dicho cliente.

HAUTIRO

Page 704: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 704/719

ELIMINACIÓN DE REGISTROS

NOTA: COMPROBAR QUE LOS EJERCICIOS SE HAN REALIZADO CORRECTAMENTEENTRANDO EN LAS TABLAS Y OBSERVANDO SU CONTENIDO

1. Eliminar de la tabla Servicios2 a todos los servicios del año 2004 (es decir, cuya fechaesté 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 250euros.

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únrecambio (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, queel 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 

EJERCICIO FINAL

Para la realización de los ejercicios anteriores se han hecho copias de las tablas de la base dedatos. Una vez realizados dichos ejercicios estas tablas no son necesarias. Puede borrarlassimplemente haciendo clic con el botón derecho sobre ellas y activar la opción eliminar .

Así pues, elimine las tablas: Trabajadores2, Clientes2, Servicios2, Coches2.

HAUTIRO

Page 705: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 705/719

PROGRAMACIÓN

JAVA – APLICACIONES DE BASES DE DATOS

CREACIÓN DE APLICACIONES JAVA USANDO BASE DE DATOS 

EJ ERCICIO 1

Crear un programa en J ava 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 J OptionPane el listado de cochesde 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 J OptionPane el listado de clientesde la empresa.

Debe aparecer el CIF del cliente, el nombre y la dirección. Los clientes deben aparecerordenados por nombre.

- “Listado de Servicios” – btnServicios 

Cuando se pulse este botón aparecerá en un J OptionPane el listado de serviciosrealizados.

Debe aparecer el tipo de servicio, la cantidad del servicio y el CIF del cliente. Debenaparecer ordenados por cantidad de mayor a menor.

- “Mil Euristas” – btnMil

Cuando se pulse este botón, deberá aparecer en un J OptionPane el listado detrabajadores de la empresa que cobren 1000 o menos euros.

Debe aparecer el DNI del trabajador, nombre, apellidos y sueldo.

- “Limpiezas” – btnLimpiezas 

Cuando se pulse este botón, deberá aparecer en un J OptionPane el listado de serviciosde limpieza realizados.

Debe aparecer el número del servicio, el DNI del trabajador que realizó el servicio, eltipo de servicio y el coste. Debe aparecer ordenado por número de servicio de menor amayor.

- “Electricidad” – btnElectricidad 

Este botón es igual que el anterior, solo que en vez de mostrar los servicios de limpiezase tienen que mostrar los servicios de electricidad.

HAUTIRO

Page 706: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 706/719

 

- “Ingresos Empresa” – btnIngresos 

Cuando se pulse este botón, interesa que aparezca en un J OptionPane la suma de lascantidades de todos los servicios realizados.

- “Citroen” – btnCitroen 

Cuando se pulse este botón, interesa que aparezca en un J OptionPane el número decoches citroen que tiene la empresa.

- “Estadisticas Limpieza” – btnEstLim 

Cuando se pulse este botón, interesa que aparezca en un J OptionPane 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 J OptionPane los datos delquinto servicio realizado.

Interesa que aparezca el número del servicio, el tipo de servicio y el coste de dichoservicio.

- “Listado de servicios de fontanería” – btnFont 

Cuando se pulse este botón interesa que aparezca en un J OptionPane un listado conlos servicios de fontanería.

Interesa que aparezca el nombre y apellidos del trabajador que hizo el servicio, el tipode 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 J OptionPane un listado conlos servicios con una cantidad menor de 200 euros.

Interesa que aparezca el nombre del trabajador que hizo el servicio, el tipo de servicio,el coste y el nombre del cliente al que se le hizo el servicio. Haz que el listado salgaordenado por coste de mayor a menor.

HAUTIRO

Page 707: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 707/719

PROGRAMACIÓN

JAVA – APLICACIONES DE BASES DE DATOS

FECHAS, NÚMEROS REALES, VALORES NULOS 

EJ ERCICIO 1

Crear un programa en J ava que manipulará la base de datos MANEMPSA.

La ventana principal de esta aplicación tendrá dos botones y un J TextPane:

Botón Datos Trabajadores

Al pulsar este botón debe aparecer el listado de trabajadores en el J TextPane.

Concretamente deben aparecer el nombre, apellidos, sueldo, fecha de entrada y matrícula delcoche que conduce.

El listado debe aparecer ordenado por fechas ascendentemente (es decir, primero lostrabajadores 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 lacadena “sin coche”.

HAUTIRO

Page 708: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 708/719

 

Botón Datos Servicios

Al pulsar este botón aparecerá el listado de servicios en el J TextPane.

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

HAUTIRO

Page 709: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 709/719

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 J TextPane el listado con todos los servicios realizados porla empresa ordenados por fecha de forma ascendente.

Deben aparecer en el listado los siguientes campos: fecha del servicio, tipo, coste ycomentario.

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 simpleguió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 dichacantidad.Al pulsar el botón “Menor que” aparecerá el listado de servicios cuyo coste sea menor a dichacantidad.Al pulsar el botón “Igual a” aparecerá el listado de servicios cuyo coste sea igual a dichacantidad.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”.- 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 altexto introducido.

HAUTIRO

Page 710: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 710/719

 Por ejemplo, si el usuario introduce el texto “Limpieza”, el programa mostrará los servicios cuyotipo sea igual a “Limpieza”.

Al pulsar el botón “Contiene a”, el programa mostrará el listado de servicios cuyo tipo contengael texto del cuadro de texto.

Por ejemplo, si el usuario introduce el texto “ía”, el programa mostrará el listado de servicios deFontanerí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 quehayan sido anteriores a la fecha indicada.

Si el usuario pulsa Posterior a el programa mostrará el listado de servicios que hayan sidoposteriores a la fecha indicada.

Si el usuario pulsa el botón En el año, el programa mostrará el listado de servicios que hayansido realizados en el año indicado en el cuadro año. (En este caso no se tienen en cuenta loscuadros día y mes)

HAUTIRO

Page 711: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 711/719

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. Debenaparecer 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óndel 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 quepermita introducir los datos del nuevo coche)

HAUTIRO

Page 712: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 712/719

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 laeliminació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 escritoen el cuadro de texto.

Una vez realizado el borrado, aparecerá en el panel de la ventana el contenido de la tablacoches 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 correspondecon 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 deefectuar el borrado.

HAUTIRO

Page 713: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 713/719

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 lamodificació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 tablacoches (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 estebotón, el programa rellenará los cuadros de texto con los datos del coche que tenga dichamatrí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 cochesy se presentará el listado completo de la tabla coches en el panel del programa.

HAUTIRO

Page 714: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 714/719

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: 5Examen 2: 5Examen 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, elprograma 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 J OptionPane si el alumno ha aprobado ono.

En el caso de que no hubiera ninguna fila seleccionada al pulsar este botón, elprograma debe mostrar un mensaje de error.

- Un botón “Resultados Trimestre 1”

Este botón mostrará en un JOptionPane el número de alumnos que aprobaron elexamen 1 y el número de alumnos que suspendieron dicho examen.

HAUTIRO

Page 715: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 715/719

PROGRAMACIÓN

JAVA – JTABLE

EJERCICIO Nº1

Realiza un programa que contenga un J Table y un botón. El botón tendrá el texto “Clientes” y alpulsarse se mostrará en la tabla el contenido de la tabla clientes de la base de datosMANEMPSA.

EJERCICIO Nº2

Realiza un programa igual al anterior pero que permita mostrar el contenido de la tablaservicios de la base de datos MANEMPSA.

HAUTIRO

Page 716: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 716/719

PROGRAMACIÓN

JAVA – JTABLE

EJERCICIO Nº1

Realiza un programa que permita realizar Altas, Bajas y Modificaciones en la tablaclientes

dela base de datos MANEMPSA.

Este programa debe mostrar en todo momento un J Table con el contenido actualizado de latabla clientes.

El programa debe tener tres botones. Un botón Eliminar , otro botón Nuevo Cliente y un botónModificar Cliente.

Al pulsar Eliminar se eliminará el cliente seleccionado en el J Table.

Al pulsar Nuevo Cliente aparecerá un cuadro de diálogo donde el usuario introducirá los datosde un nuevo cliente.

Al pulsar Modificar Cliente aparecerá un cuadro de diálogo donde el usuario podrá cambiar losdatos del cliente que haya seleccionado en el J Table.

HAUTIRO

Page 717: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 717/719

PROGRAMACIÓN

JAVA – JTABLE

EJERCICIO Nº1

El programa realizado en la hoja de ejercicios anterior permitía el alta, baja y modificación delos 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 quepermita filtrar por los distintos campos de la tabla de clientes.

HAUTIRO

Page 718: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 718/719

PROGRAMACIÓN

JAVA – JTABLE

EJERCICIO Nº1

El programa de la hoja de ejercicios anterior permitía la gestión de la tablaclientes

de la basede datos MANEMPSA.

Se pide que mejore el programa de la hoja anterior de forma que el cuadro de diálogo defiltrado permita al usuario decidir la ordenación del listado.

Por otro lado, se pide que junto al J Table donde aparece el listado de clientes aparezca elnúmero de clientes que se está mostrando en todo momento en el J Table.

HAUTIRO

Page 719: Manual-Netbeans Guia de Ejercicios

7/14/2019 Manual-Netbeans Guia de Ejercicios

http://slidepdf.com/reader/full/manual-netbeans-guia-de-ejercicios 719/719

PROGRAMACIÓN

JAVA – iREPORT

EJERCICIO Nº1

Crear una DSN llamada EjercicioDSN que haga referencia a la base de datos MANEMPSA quetiene almacenada en Mis Documentos.

EJERCICIO Nº2

En el programa iReport, crear una conexión llamada Conexión Ejercicio que esté creada apartir de la DSN del ejercicio anterior.

EJERCICIO Nº3

Crear un informe usando la conexión Conexión Ejercicio del ejercicio anterior donde aparezcael 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 nombreclientes.