Anda di halaman 1dari 173

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

PROGRAMACION ORIENTADA A OBJETOS CON JAVA E IDE NETBEANS

UNIDADES TECNOLOGICAS DE SANTADER.

INGENIERIA EN TELECOMUNICACIONES

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

TABLA DE CONTENIDO

CAPITULO 1 INTRODUCCION.

PRACTICA 01. Cmo mandar un proyecto


CAPITULO 2. INICIACIN EN NETBEANS

4
5

PRACTICA 02. Programacin con Variables PRACTICA 03. Manejo de Componentes 01 PRACTICA 04. A ritmo de Swing
CAPITULO 3. DECISION.

14 16 29
70

PRACTICA 05. Programacin con If PRACTICA 06. Programacin con switch PRACTICA 07. Manejo de Componentes 03 PRACTICA 08. Programacin Modular PRACTICA 09. Programacin Modular Graphics
CAPITULO 4. CICLOS.

73 78 82 102 105
112

PRACTICA 10.Ejercicios con Ciclos PRACTICA 11. Programacin con Ciclos. PRACTICA 12. Tarea: Multiplicacin y Divisin PRACTICA 13. Programacin con Ciclos PRACTICA 14. Programacin con Ciclos FOR PRACTICA 15. Manejo de Componentes 03 PRACTICA 16. No Strings Attached PRACTICA 17. Cmo nos arreglamos? PRACTICA 18. Welcome to the Matrix

115 116 120 121 128 130 165 168 171

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

CAPITULO 1 INTRODUCCION.
Introduccin a Lenguajes de Programacin Qu son? Lenguajes de programacin: Herramienta utilizada para escribir programas Programa: Conjunto de instrucciones que se ejecutan en una computadora Categoras de los lenguajes de programacin: Mquina Bajo Nivel (Ensamblador) Alto Nivel (Java, C++) Lenguaje Mquina Instrucciones entendibles directamente por la computadora. Son muy complicadas y se representan en unos y ceros: Ejemplo: 0110 0010 1101 0011 0010 0000 0010 1001 Lenguajes de programacin Lenguaje de Bajo Nivel: Simplifican el proceso de programacin. Dependen de la arquitectura del procesador. Se escriben instrucciones utilizando cdigo alfabticos conocidos como nemotcnicos. Ejemplo: MOV AX 3 ADD AX 7 SUB AX 2 Lenguajes de alto nivel: Buscan abstraer la complejidad y permiten introducir cdigo con instrucciones ms entendibles, similares al lenguaje normal. Algunos lenguajes de alto nivel son: Java, C++, Visual Basic. if (x == y) System.out.println(Esto es una prueba); Algunos trminos tiles Compilador: Traduce las instrucciones de un lenguaje de alto nivel a lenguaje mquina. Cdigo fuente: Texto que define el comportamiento del programa. Compilacin: Es el acto de pasar el cdigo fuente a cdigo mquina. Cdigo ejecutable: Forma final que toma el programa, es el cdigo que la computadora puede leer y entender.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Interpretados vs. Compilados Existen tres tendencias en cuanto a compilacin: Lenguajes interpretados: El cdigo es ledo lnea por lnea y ejecutado conforme se va leyendo. Estos programas son lentos porque deben leerse y convertirse a cdigo mquina al correr, pero tienen la ventaja de que pueden utilizarse en muchas plataformas diferentes porque no dependen de la mquina. Ejemplos: Perl, PHP y la mayora de los lenguajes Web. Lenguajes compilados: Se convierte el cdigo a cdigo mquina y despus se ejecuta. Estos programas son ms rpidos porque no deben ser interpretados, pero pierden flexibilidad porque dependen de la arquitectura del procesador. Ejemplos: C, C++. Compilacin intermedia: Qu podemos hacer si queremos tener la flexibilidad de poder correr en cualquier plataforma, pero no queremos perder la velocidad de la compilacin? Podemos compilar el cdigo a un lenguaje intermedio llamado bytecode y crear una mquina virtual que pueda traducir el bytecode a cdigo mquina para cada arquitectura diferente. Ejemplos: Java y toda la plataforma .Net. Programacin orientada a objetos Es un paradigma de programacin que utiliza objetos para describir las funciones y procedimientos de un programa. Es un paradigma muy popular porque la conciencia humana y nuestra manera de entender las cosas est muy relacionada con los objetos. En la programacin orientada a objetos todo es un objeto que fue creado de un molde, llamado clase.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

PRACTICA 01. Cmo mandar un proyecto


Paso 1: Al crear un nuevo proyecto es importante que veas en qu carpeta va a ir. En el dilogo de creacin de un nuevo proyecto puedes ver la carpeta en donde indica la fotografa:

Esta carpeta (D:\projects\Prueba) es la carpeta del proyecto. Dentro de ella encontramos toda la informacin de nuestro proyecto as como todos los archivos que lo componen. Debe tener una estructura similar a la siguiente:

build: contiene las clases compiladas en archivos .class dist: contiene el archivo .jar que permite ejecutar la aplicacin de Java directamente nbproject: contiene informacin sobre el proyecto de NetBeans que nos es irrelevante src: contiene los archivos .java que son la fuente de nuestro proyecto test: contiene los archivos de las pruebas de unidad build.xml: le indica a NetBeans cmo construir la aplicacin manifest.mf: es un archivo necesario para el .jar ejecutable de Java, le indica a la mquina virtual cmo correr el programa Una vez que te encuentres en esta carpeta debers borrar las carpetas build y dist (ya que regularmente son las ms grandes y son muy fciles de reproducir). Una vez que hayas hecho esto comprime la carpeta del proyecto (D:\projects\Prueba) y ese archivo es el que debes mandar.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

CAPITULO 2. INICIACIN EN NETBEANS


Variables, Operadores y Constantes Componentes de un programa Identificadores: Para poder identificar las variables, constantes y mtodos de un programa utilizamos identificadores. Los identificadores son combinaciones de letras, nmeros y algunos signos especiales. Ejemplos: pi, matricula, vocales, x, i Variables: Son identificadores cuyos valores pueden cambiar durante la ejecucin del programa. Nos sirven para guardar valores que queremos utilizar ms tarde (muchas veces la informacin que nos da el usuario). Ejemplos: int x = 0; Constantes: Son identificadores que tienen un valor constante durante toda la ejecucin del programa, es decir, que no cambian. Utilizan la palabra reservada final que le indica al compilador que el valor no puede cambiar. Si se intenta cambiar el valor, ocurre un error. Ejemplos: final double PI = 3.14159; Instruccin: Una instruccin es una unidad ejecutable de cdigo, regularmente controlan el flujo de ejecucin (qu sucede primero). Ejemplos: if ... else; while ... Declaracin de Variables: Declarar una variable es como avisarle a la computadora que vamos a guardar un valor. La estructura para declarar una variable es la siguiente: tipo nombre_de_variable [= valor]; Tipos de variables: Numricos: int, double Texto: char, String Ejemplos: int i = 0; double distancia; String nick = "Magus" Operadores: Son smbolos que indican cmo son manipulados los datos. Pueden ser de varios tipos, los ms comunes son: NETBEANS PROGRAMACION ORIENTADA A OBJETO

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Aritmticos (+, -, *, /, etc.) Lgicos (&, |, !) Relacionales (<, >, ==) De asignacin (=) Ejemplos: a = a + b; if (lloviendo || quiereLlover) llevarParaguas = true; if (b > 0) b = sqrt(b); Operadores aritmticos Operador Funcin

Suma Permite sumar nmeros enteros o reales.

Resta Permite restar nmeros enteros o reales.

Multiplicacin Permite multiplicar nmeros enteros o reales.

Divisin Si los dos operadores son nmeros enteros entonces el resultado siempre es un nmero entero (5 / 3 = 1) Si cualquiera de los operadores es un nmero real entonces el resultado es un nmero real (5.0 / 3 = 1.666)

Mdulo Nos devuelve el residuo de la divisin (4 % 3 = 1, 5 % 3 = 2, 6 % 3 = 0)

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Operadores lgicos Operador Funcin

&&

AND Lgico Devuelve el valor lgico verdadero si ambos operandos son verdadero Ejemplo: if (esBI && tieneProyecto) trabajaTodaLaNoche();

||

OR Lgico Devuelve el valor lgico verdadero si cualquier operando es verdadero Ejemplo: if (tengoDinero || puedoPedirPrestado) comprar();

NOT Lgico Niega el valor del operando, es decir, si el operando es falso se vuelve verdadero y si es verdadero se vuelve falso. Ejemplo: esCulpable = !esInocente;

Operadores Relacionales Operador Funcin

==

Igual Verdadero si los dos operandos son iguales

<

Menor que Verdadero si el operando de la izquierda es menor que el de la derecha.

>

Mayor que Verdadero si el operando de la izquierda es mayor que el de la derecha

<=

Menor o igual que

>=

Mayor o igual que

!=

Diferente Verdadero si los dos operandos son diferentes

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Operadores de asignacin Operador Funcin

Asignacin Simple Asigna el valor a la derecha a la variable a la izquierda

+=

Asignacin con suma Suma el valor de la variable de la izquierda con el valor de la derecha y asigna el resultado a la variable de la izquierda.

-=

Asignacin con resta Resta el valor de la variable de la izquierda menos el valor de la derecha y asigna el resultado a la variable de la izquierda.

*=

Asignacin con multiplicacin Multiplica el valor de la variable de la izquierda por el valor de la derecha y asigna el resultado a la variable de la izquierda.

/=

Asignacin con divisin Divide el valor de la variable de la izquierda entre el valor de la derecha y asigna el resultado a la variable de la izquierda.

Otros Operador Funcin

++

Incremento Incrementa el valor de la variable en uno. Si el operador se pone a la izquierda de la variable primero incrementa el valor y despus realiza las dems instrucciones, si se pone a la derecha primero realiza las instrucciones y luego aumenta el valor. Ejemplo: int a = 0; int b = ++a; // a == 1, b == 1 int a = 0; int b = a++; // a == 1, b == 0

--

Decremento Decrementa el valor de la variable en uno. La asignacin de valores funciona de la misma manera que el incremento.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Prioridades de operadores

Tipos de datos Nombre byte short int long Representa Nmero entero Nmero entero Nmero entero Nmero entero Rango -128 a 127 -32768 a 32767 -2,147,483,648 a 2,147,483,647 -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 3.410-38 a 3.41038 1.710-308 a 1.710308 Verdadero o falso \u0000 a \uFFFF (cualquier carcter de Unicode) Tamao 8 bits 16 bits 32 bits 64 bits

float double boolean char

Nmero real Nmero real Booleano Letra

32 bits 64 bits 1 bit 16 bits

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Clase String Adems de los tipos primitivos de datos Java contiene una clase que es extremadamente poderosa: la clase String. String nos permite manejar cadenas de caracteres, es decir texto, de manera natural. Un String se maneja de forma muy parecida a un tipo de dato primitivo pero siempre empieza con mayscula porque es clase. Ejemplo: String nombre = "Magus";

Qu es una variable? Es un espacio en memoria que nos permite guardar informacin. El tamao de este espacio en memoria vara dependiendo de la informacin que que quieras guardar ah. No es lo mismo guardar un nmero pequeo que pueda variar entre el 1 y el 10 que guardar el total de ventas de una compaa internacional.

Variables Variable edad sueldoSemanal numeroArticulo totalVentas nombreAlumno esAzul Utilizando variables Para poder asignar un valor a una variable es necesario que la variable est declarada. La declaracin se hace con la instruccin: tipo nombre [= valor]; Para asignar un valor a una variable utilizamos la instruccin: nombre = valor; Despus podemos utilizar la variable con su nombre. Qu Almacena Un nmero entero Un nmero con decimales Un nmero entero Un nmero con decimales Una cadena de caracteres Un valor booleano (verdadero o falso)

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

10

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Qu hace el cdigo siguiente?

Declara una variable llamada numeroSuerte que tiene el valor de 7. Declara tres variables, nombre, edad y precio. Asigna valores a estas variables. Operadores aritmticos Las variables nos sirven para guardar valores que vamos a modificar ms adelante utilizando operadores aritmticos o mtodos. y = x + 5; x++; y += 5; Recuerdas cmo funcionan los operadores de asignacin? y += 5 podra escribirse como y = y + 5; Recuerdas qu haca el operador incremento? x++; podra escribirse como x += 1; x = x + 1;

Actividad Individual Cules son los valores de las variables al terminarse de ejecutar el siguiente cdigo:

Operador incremento / decremento Los operadores ++ y son llamados incremento y decremento respectivamente. Estos operadores nos permiten sumar 1 o restar 1 a una variable. Es uno de los pocos casos en que la posicin afecta el resultado, veamos un ejemplo: NETBEANS PROGRAMACION ORIENTADA A OBJETO

11

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

Prioridades de operadores

Las operaciones con mayor prioridad se ejecutan primero, por ejemplo: 5 * (12 - 5 * 2) + 7 / 4 5 * (12 - 10) + 7 / 4 5*2+7/4 10 + 7 / 4 10 + 1 (recuerda divisin entera!) 11

Actividad Individual Cules seran los resultados de las siguientes operaciones: 10 / 3 + 17 / 3 - 10 2 + 3 * (4 + 5) 19 / 2 * 5 10.0 / 3.0 + 10 / 3 + 10.0 / 3 3+5%4/2 (4 * 5 / 3 + 2.0) + (5 - 8.0) / 2

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

12

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Casting Cuando dos variables son del mismo tipo de dato (int, double) el resultado va a ser del mismo tipo de dato, por ejemplo, si a y b son de tipo int y valen 3 y 7 respectivamente: a + b + 10 = 20 Pero cuando los tipos de datos son diferentes se dice que ocurre un casting. Casting es el proceso de convertir de un tipo de dato a otro. Existen dos tipos de casting: casting implcito y casting explcito. Casting implcito Tambin llamado promocin numrica, sucede cuando un tipo de dato con menor jerarqua es promovido a un tipo de dato con mayor jerarqua. La jerarqua de operadores es la siguiente: byte->short->int->long->float->double En el siguiente cdigo y tiene mayor jerarqua y por lo tanto x va a tener un cast implcito de int a double. Fjate que el tipo de dato de x no cambia.

Casting implcito Otro momento en el que ocurre un casting implcito es al momento de la asignacin double y = 2 * (12 / 7); Podramos pensar que el resultado es 3.42, pero no estaramos en lo correcto porque el casting ocurre hasta el momento de la asignacin El resultado que nos va a dar es 2.0 Casting Explcito Algunas veces queremos forzar a una variable a tomar un tipo de dato con mayor jerarqua, por ejemplo:

En ese cdigo podemos ver que la variable y va a tomar el valor de 1, pero probablemente queremos que nos de el valor con decimales. Para estas situaciones existe el operador de Casting Explcito. Este operador es el nombre de un tipo de dato entre parntesis, por ejemplo: y = (double) x; El siguiente cdigo es casi igual que el anterior, pero tiene un cambio significativo. El cast va a convertir a x en un double antes de realizar la operacin, y por lo tanto y va a tomar el valor que deseamos:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

13

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

PRACTICA 02. Programacin con Variables


Instrucciones Paso 1: Descarga el esqueleto de la aplicacin que vamos a utilizar en esta sesin. El archivo est en formato zip, por lo que necesitas descomprimirlo en algn directorio (por ejemplo D:\projects). Abre NetBeans y selecciona la opcin abrir proyecto , aparecer un dilogo en el que puedes seleccionar varios archivos, busca la carpeta en la que descomprimiste los archivos (puedes saber si realmente es una carpeta de proyecto porque tendr el siguiente smbolo: ). Selecciona la carpeta y presiona el botn abrir. Al terminarse de cargar el proyecto abre el archivo Main.java, debe aparecer una ventana con el cdigo del programa. Presiona el botn de compilar (o F11). En la ventana de compilacin deben aparecerte varios mensajes de compilacin y debe terminar en BUILD SUCCESSFUL. Esto quiere decir que nuestra aplicacin compil de manera adecuada y estamos listos

para correrla. Presiona el botn correr

(o presiona F6). Debe aparecer una ventana como la siguiente.

Pon algunos nmeros y prueba la funcionalidad del programa. Como podrs haber notado todos los resultados muestran un cero, porque todava no estn implementadas las funciones que van a mostrar el resultado correcto. Por el momento cierra la aplicacin. Paso 2: Ahora vamos a agregar la funcionalidad del programa. Para saber dnde es preciso editar el cdigo vamos a utilizar la ventana de To Do. Esta ventana es muy importante porque nos permite saber qu cosas faltan por hacer y nos permite encontrarlas de manera sencilla. Primero selecciona el men Window y ah busca To Do , o presiona <Ctrl + 6>. En la parte inferior debe aparecer la ventana de To Do, seleccionala y aparecer algo como lo siguiente:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

14

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Aqu podemos ver lo que falta por hacer en el proyecto. Selecciona la primera lnea del To Do (la que dice Cambiar el cdigo para que sume...) y haz doble click para ir a la seccin de cdigo que es preciso editar. Cambia el cdigo de la siguiente manera (es necesario modificar la lnea 103):

Adems de los operadores aritmticos que ya conoces en este laboratorio utilizamos el operador lgico AND. Como pudiste ver en la presentacin el operador lgico AND tiene la propiedad de que devuelve verdadero si y slo si ambos operandos son verdaderos, por esto se dice que tiene la siguiente tabla de verdad: AND Verdadero Falso Verdadero Verdadero Falso Falso Falso Falso

Los operadores lgicos que hemos visto hasta ahora (&&, ||, !) slo se pueden utilizar con valores booleanos, pero al utilizarlos con valores numricos tienen propiedades que son muy tiles en algunos casos (cuando necesitamos optimizar el cdigo). Veamos cmo funciona el operador lgico AND cuando lo aplicamos a un nmero entero: Valor Decimal Valor Binario 12 1100 10 1010 12 & 10 1000 Como puedes ver, los operadores lgicos operan a nivel de bits en los valores enteros. Para evitar que los operadores lgicos que se utilizan con valores enteros se confundan con los que se utilizan con valores booleanos en Java existen simbolos diferentes para representarlos como se ve en la siguiente tabla: Nombre AND OR NOT Enteros & | ~ Booleanos && || !

Como en la calculadora vamos a utilizar valores enteros debes de utilizar el AND para valores enteros, sin embargo la mayora de las veces vamos a utilizar el AND para valores booleanos porque la fuerza de las operaciones lgicas estn en que nos permiten hacer comparaciones y saber si un conjunto de predicados son verdaderos o falsos (si est lloviendo && llevo una sombrilla -> no me mojo, si tengo hambre || es hora de comer -> voy a comer). Por analoga al ejercicio de la suma y utilizando los conocimientos que tienes sobre operadores termina de construir los mtodos que se te solicitan.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

15

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

PRACTICA 03. Manejo de Componentes 01


EJERCICIO GUIADO. JAVA: VARIABLES GLOBALES Variables Globales / Propiedades de la Clase Las propiedades de la clase en java es el equivalente a las variables globales en lenguajes estructurados como el C. Una propiedad es una variable que puede ser accedida desde cualquier evento programado. Esta variable se inicializa a un valor cuando se ejecuta el programa y los distintos eventos pueden ir cambiando su valor segn se necesite. Veamos un ejemplo para entender el funcionamiento de las propiedades de la clase / variables globales. Ejercicio guiado 1 1. Crea un nuevo proyecto llamado ProyectoParking. Dentro de l aade un paquete llamado paqueteParking. Y finalmente aade un JFrame llamado Parking. El aspecto de tu proyecto ser el siguiente:

Clase Principal

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

16

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

4. Esta ventana contiene lo siguiente: i.Un botn Entr un coche llamado btnEntro. ii.Un botn Sali un coche llamado btnSalio. iii.Un botn Reiniciar llamado btnReiniciar. iv.Una etiqueta con el texto Coches en el Parking. v.Una etiqueta con borde llamada etiCoches que contenga un 0.

5. Se pretende que el programa funcione de la siguiente forma: a. Cuando el usuario pulse el botn Entr un coche, el nmero de coches del parking aumenta en 1, mostrndose en la etiqueta etiCoches. b. Si el usuario pulsa el botn Sali un coche, el nmero de coches del parking disminuye en 1, mostrndose en la etiqueta etiCoches. c. El botn Reiniciar coloca el nmero de coches del parking a 0.

6. Para poder controlar el nmero de coches en el Parking, es necesario que nuestra clase principal Parking tenga una propiedad (variable global) a la que llamaremos coches. Esta variable ser entera (int). Esta variable contendr en todo momento los coches que hay actualmente en el Parking. Esta variable podr ser usada desde cualquier evento. 7. Para crear una variable global haz clic en el botn Origen para acceder al cdigo:

8. Luego busca, al comienzo del cdigo una lnea que comenzar por public class
NETBEANS PROGRAMACION ORIENTADA A OBJETO

17

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO Seguida del nombre de tu clase principal Parking. Debajo de dicha lnea es donde se programarn las propiedades de la clase (las variables globales)
Aqu se declaran las variables globales, tambin llamadas propiedades de la clase.

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

Declaracin de una variable global int llamada coches.

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

Inicializacin de la propiedad coches.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

18

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO Inicializamos a cero ya que se supone que cuando arranca el programa no hay ningn coche dentro del parking.

11. Ahora que ya tenemos declarada e inicializada la variable global coches, esta puede ser usada sin problemas desde cualquier evento que programemos. Por ejemplo, empezaremos programando la pulsacin del botn Entr un coche. Acceda a su evento actionPerformed y programe esto:
coches=coches+1; etiCoches.setText(+coches);

Como ves, se le aade a la variable coches uno ms y luego se coloca su valor actual en la etiqueta. 12. Ejecuta el programa y prueba este botn varias veces.

Pulsas, y aparece aqu el valor de la propiedad coches.

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

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

Como ves, se accede igualmente a la propiedad coches pero esta vez para restarle una unidad. Luego se muestra el valor actual de coches en la etiqueta correspondiente. Se usa un if para controlar que no pueda restarse un coche cuando el parking est vaco. (Si hay cero coches en el parking no se puede restar uno)
NETBEANS PROGRAMACION ORIENTADA A OBJETO

19

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

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

Al pulsar aqu aumentas en uno la propiedad coches.

Al pulsar aqu disminuyes en uno

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

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

Simplemente introduzco el valor cero en la variable global y actualizo la etiqueta. 16. Ejecuta el programa y comprueba el funcionamiento de este botn. CONCLUSIN Las variables globales, tambin llamadas propiedades de la clase, son variables que pueden ser usadas desde cualquier evento del programa. Estas variables mantienen su valor hasta que otro evento lo modifique. Las variables globales se declaran justo despus de la lnea public class. La inicializacin de estas variables se realiza en el constructor.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

20

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO EJERCICIO GUIADO. JAVA: CENTRALIZAR CDIGO El problema de la repeticin de cdigo Es muy habitual en Java que varios eventos tengan que ejecutar el mismo cdigo. En este caso se plantea la necesidad de copiar y pegar ese cdigo en los distintos eventos a programar:

Evento 1

Cdigo A Cdigo A

Evento 2

Evento 3

Cdigo A

Esta es una mala forma de programacin, ya que se necesitara modificar el cdigo, sera necesario realizar la modificacin en cada copia del cdigo. Es muy fcil que haya olvidos y aparezcan errores en el programa que luego son muy difciles de localizar. Lo mejor es que el cdigo que tenga que ser ejecutado desde distintos eventos aparezca solo una vez, y sea llamado desde cada evento:

Evento 1 Cdigo A

Evento 2

Evento 3

Veamos algunos ejemplos en los que el cdigo se puede repetir y como evitar esta repeticin. Ejercicio 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 JFrame llamado VentanaCalculos. El proyecto tendr el siguiente aspecto:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

21

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 2. La VentanaCalculos debe estar diseada de la siguiente forma:

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

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

22

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

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

5. Este es un ejemplo en el que al activarse uno de varios eventos distintos se tiene que ejecutar el mismo cdigo. Observa el caso de la suma:
Pulsar Botn Sumar Calcular la suma y mostrarla en la etiqueta de resultado

Activar Calcular Sumar en el men

Pulsar enter en el primer cuadro de texto

Pulsar enter en el segundo cuadro de texto

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

23

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 7. Accede al cdigo de tu programa a travs del botn Origen.

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

Este es el constructor

Este es un buen sitio para crear

9. Se va a programar un procedimiento que se encargue de recoger los valores de los cuadros de texto. Calcular la suma de dichos valores, y luego mostrar la suma en la etiqueta de resultados. Los procedimientos en java tienen prcticamente la misma estructura que en C. Programe lo siguiente:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

24

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

Este es el procedimiento que tienes que introducir en el programa.

10. Si observas el cdigo, es el tpico procedimiento de C, cuya cabecera comienza con void y el nombre que le hayas asignado (en nuestro caso Sumar) void Sumar() { .... } Si estudias las lneas del cdigo, vers que lo que hace es recoger el contenido de los dos cuadros de texto en dos variables de cadena llamadas cad1 y cad2. Luego convierte dichas cadenas en nmeros que almacena en dos variables enteras llamadas a y b. Finalmente calcula la suma en una variable s y presenta el resultado en la etiqueta etiResultado. 11. Hay que destacar que este cdigo no pertenece ahora mismo a ningn evento en concreto, por lo que no tiene efecto ninguno sobre el programa. Ser necesario pues asociar los eventos correspondientes con este procedimiento. 12. Interesa que al pulsar el botn Sumar se ejecute la suma, as pues entre en el evento actionPerformed del botn Sumar y aada la siguiente lnea:
Sumar();

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

25

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Sumar();

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

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

16. Antes de continuar, ejecute el programa, introduzca dos nmeros, y compruebe como se calcula la suma al pulsar el botn Sumar, o al activar la opcin del men CalcularSumar, o al pulsar Enter en el primer cuadro de texto, o al pulsar Enter en el segundo cuadro de texto. En cada uno de los eventos hay una llamada al procedimiento Sumar, que es el que se encarga de realizar la suma.

actionPerformed btnSumar Procedimiento actionPerformed menuSumar

actionPerformed txtNumero1

actionPerformed txtNumero2

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

Pulsar Botn Restar Calcular la resta y mostrar el resultado.

Activar Calcular Restar en el men

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

26

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

Programa este procedimiento.

19. El cdigo de este procedimiento es prcticamente idntico al del procedimiento Sumar, as que no se comentar. 20. Ahora, es necesario que cuando se activen los eventos indicados antes, estos hagan una llamada al procedimiento Restar para que se efecte la resta. As pues, entre en el evento actionPerformed del botn Restar y aada esta lnea de cdigo: Restar(); 21. Igualmente, entre en el evento actionPerformed de la opcin del men Calcular Restar y aada la misma llamada: Restar();

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

actionPerformed btnRestar Procedimiento actionPerformed menuRestar

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

27

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

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

Programa el procedimiento Borrar...

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

25. Ejecuta el programa y prueba su funcionamiento.

CONCLUSIN En java se pueden programar procedimientos al igual que en C. Normalmente, estos procedimientos se programarn debajo del constructor, y tienen la misma estructura que en C. Se puede llamar a un mismo procedimiento desde distintos eventos, evitando as la repeticin de cdigo.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

28

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

PRACTICA 04. A ritmo de Swing


Instrucciones Paso 1: Para empezar la aplicacin vamos a crear un nuevo proyecto al que llamaremos Sesion3. Despus de crearlo nos aparece un proyecto vaco en NetBeans. Ahora vamos a agregar una nueva ventana, para hacer esto debemos hacer click derecho sobre el paquete como se ve en la siguiente foto y seleccionar New -> JFrame Form

Paso 2: Debemos ponerle el nombre de MainFrame. A pesar de que los nombres no son importantes para Java, por convencin se recomienda poner un nombre que exprese para qu funciona este objeto y de qu clase es. Recuerda que las clases son como moldes para crear objetos, al crear un nuevo JFrame estamos diciendole a Java cmo debe de crear los objetos de tipo MainFrame (es decir, estamos creando el molde). Es importante seguir las convenciones porque nos van a permitir saber fcilmente cmo funciona un programa incluso si no lo hicimos nosotros. Al crear el nuevo JFrame aparece la siguiente ventana:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

29

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Paso 3: Ahora vamos a agregar algunos componentes al JFrame. Selecciona un label en la paleta haciendo click y luego agrgalo al JFrame haciendo click sobre esta donde quieres que aparezca. De la misma manera agrega un text field y un button. Al terminar tu ventana debe verse de la siguiente manera:

Ahora vamos a cambiar el nombre de nuestros componentes para que sean ms fciles de identificar. De la misma manera que antes, a pesar de que los nombres no son importantes para Java, por convencin debemos elegir nombres representativos que nos indicen para qu sirve cada uno de los componentes. Adems de eso se utiliza que por convencin las primeras tres letras indiquen el tipo de componente de la siguiente manera: Componente JLabel JButton JTextField JTextArea JPanel JMenu JMenuItem lbl btn txt txt pnl mnu mnuItem Prefijo

De esta manera vamos a seleccionar nombres para nuestros controles. Para cambiar los nombres debes utilizar la ventana Inspector como se ve en el video. Puedes seleccionar un control y presionar F2 para cambiarle el nombre. Utiliza los siguientes nombres para tus controles: Componente JLabel JTextField JButton Nombre lblName txtName btnEnter

De esta manera sabemos que el JLabel y el JButton van a servir para que el usuario ponga su nombre. Paso 4: Ahora lo que vamos a hacer es cambiar el texto de los componentes para que sea ms claro para el usuario, para modificar las propiedades de los objetos debemos utilizar la ventana de propiedades que se encuentra abajo a la derecha como se ve en la siguiente fotografa, para cambiar la propiedad text de nuestros controles:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

30

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Para encontrar ms fcilmente las propiedades podemos seleccionar la caja de propiedades y comenzar a escribir, si hacemos esto aparece la ventana Quick Search que nos permite escribir algo y lo busca por nosotros. Vamos a cambiar el texto de los componentes de la siguiente manera: Componente lblName txtName btnEnter Entrar Texto Nombre:

Nota que borramos el texto de txtName para que aparezca vaco. Por ltimo vamos a agregar eventos. Un evento es la manera en que nuestro cdigo responde a lo que hace el usuario. Agregar eventos utilizando Matisse es muy sencillo, lo nico que debemos hacer es dar click derecho sobre un control de nuestro JFrame y seleccionar el submen events. Ah aparecen todos los eventos a los que puede responder el control que estamos seleccionando. Vamos a hacer que cuando el usuario haga click en el botn btnEnter se muestre un dilogo con su nombre. Para hacer esto debemos dar click derecho sobre el botn, seleccionar el submen events y seleccionar el evento Action -> actionPerformed. Al hacer esto aparece una ventana con cdigo en la que podemos agregar lo que debe realizar nuestro proyecto al hacer click en el botn.

Dentro de esta pantalla vamos a escribir la siguiente lnea: JOptionPane.showMessageDialog(this, "Hola " + txtName.getText()); Recuerda agregar los imports como vimos en la primera sesin para evitar que esta lnea te marque errores. Puedes hacerlo de dos maneras, haciendo click sobre la lamparita que aparece a la izquierda o presionando [Alt + Shift + F]. JOptionPane es una clase especial que nos permite mostrar dilogos, por el momento slo utilizala aunque no entiendas cmo funciona. Como puedes ver al final estamos utilizando algo llamado concatenacin de texto, veamos cmo funciona: "Hola " + "Juan" = "Hola juan" "C" + "mo" + " " + "han" + " " + "estado?" = "Cmo han estado?" Como puedes observar, al utilizar el smbolo ms estamos uniendo las cadenas de texto y creando una nueva cadena que contiene todas las cadenas unidas. Esto es extremadamente til para interactuar con el usuario. La otra parte interesante en ese mtodo es que estamos utilizando el mtodo getText() de nuestro JTextField (llamado txtName). Recuerdas que modificamos la propiedad text para que el JTextField no mostrara nada? Con este mtodo estamos obteniendo el texto que se encuentra en este momento en la caja de texto, que es lo que ha escrito el usuario. Para cada propiedad hay un mtodo llamado getNombre() donde Nombre es el nombre de la propiedad de la que quermeos conocer el valor. Paso 5: Ya casi terminamos de crear nuestra ventana, pero si corres el proyecto en este momento vas a ver que la ventana no aparece. Esto se debe a que todava no hacemos que nuestro JFrame se vuelva visible. Esto lo logramos poniendo la siguiente lnea en el constructor, el mtodo que se llama MainFrame():

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

31

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

Por ltimo debes regresar a la clase Main utilizando el explorador de proyectos y agregar la siguiente lnea en el mtodo main(), recuerda que el mtodo main() es el punto de inicio de la aplicacin, es decir, la primera parte del cdigo que se ejecuta.

Recuerdas esta sintaxis? Lo nico que estamos diciendo es que queremos construir un nuevo (new) objeto de la clase MainFrame (nuestra ventana). Si te fijas estamos llamando el mtodo de la misma manera que se vea en la parte de arriba en el constructor. Corre la aplicacin y comprueba que funciona de manera adecuada.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

32

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 15. EJERCICIO GUIADO. JAVA: PANELES DE DESPLAZAMIENTO Paneles de Desplazamiento Llamaremos paneles de desplazamiento a paneles que contienen elementos tan grandes que no pueden ser mostrados en su totalidad. Estos paneles contienen entonces dos barras de desplazamiento que permiten visualizar el interior del panel de desplazamiento correctamente. Por ejemplo, un panel de desplazamiento podra contener una imagen tan grande que no se viera entera: Los paneles de desplazamiento son objetos del tipo JScrollPane. Ejercicio guiado 1 1. Vamos a practicar con los JScrollPane. Para ello, crea un nuevo proyecto. 2. Aade en el proyecto un JScrollPane. 3. Un JScrollPane, por s mismo, no contiene nada. Es necesario aadir dentro de l el objeto que contendr. Para nuestro ejemplo aadiremos dentro de l una etiqueta (JLabel) 4. El formulario debe tener ahora este aspecto:

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

Observa como tienes un JScrollPane que contiene una etiqueta. 6. Aprovechemos el Inspector para cambiar el nombre a cada objeto. Al JScrollPane le llamaremos scpImagen y a la etiqueta etiImagen.
NETBEANS PROGRAMACION ORIENTADA A OBJETO

33

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

7. Elimina el texto contenido en la etiqueta etiImagen. Solo tienes que borrar el contenido de la propiedad text. 8. Luego introduciremos una imagen dentro de la etiqueta, a travs de la propiedad icon. La imagen la introduciremos desde fichero, y elegiremos la siguiente imagen de tu disco duro: Mis Documentos / Mis Imgenes / Imgenes de Muestra / Nenfares.jpg 9. Esta imagen es tan grande que no se podr ver entera dentro del panel de desplazamiento. Ejecuta el programa y observars el uso de las barras de desplazamiento dentro del panel.

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

34

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO De esta forma, cuando ejecutes el programa, al agrandar la ventana, se agrandar el panel de desplazamiento, vindose mejor la imagen contenida.

11. Ejecuta el programa y comprubalo.

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

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

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

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

35

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 5. Aprovechemos para cambiar el nombre a ambos objetos. Al JScrollPane lo llamaremos scpDatos y al JPanel lo llamaremos panelDatos.

6. Los JPanel son objetos contenedores. Es decir, pueden contener otros objetos como por ejemplo botones, etiquetas, cuadros de texto, etc. Adems, los JPanel pueden ser diseados independientemente de la ventana. Haz doble clic sobre el panelDatos en el Inspector y observa lo que ocurre:

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

8. Para distinguirlo de lo que es en s la ventana, haremos las siguientes cosas con el panel: Cambia el color de fondo y asgnale un color verde. Aade en l una etiqueta con el texto Panel de Datos. Aade varias etiquetas y cuadros de textos correspondientes a los das de la semana. Agranda el panel. El panel debera quedar as. Toma como referencia esta imagen:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

36

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

37

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

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

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

CONCLUSIN Los objetos JScrollPane son paneles de desplazamiento. Estos paneles pueden contener objetos mayores que el propio panel de desplazamiento. Cuando esto sucede, el panel muestra barras de desplazamiento para poder visualizar todo el contenido del panel. Los JScrollPane son ideales para mostrar imgenes, paneles y otros elementos cuyo tamao pueda ser mayor que la propia ventana.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

38

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 18. EJERCICIO GUIADO. JAVA: LAYOUTS

El problema de la distribucin de elementos en las ventanas Uno de los problemas que ms quebraderos de cabeza da al programador es el diseo de las ventanas y la situacin de los distintos componentes en ellas. Para disear ms cmodamente las ventanas, Java proporciona una serie de objetos denominados Layouts, que definen la forma que tendrn los elementos de situarse en las ventanas. As pues, un Layout define de qu forma se colocarn las etiquetas, botones, cuadros de textos y dems componentes en la ventana que diseamos.

Ejercicio guiado Diseo Libre 1. Crea un nuevo proyecto en java. 2. Aade una etiqueta y un botn. Muvelos a la posicin que se indica en la imagen. Deben aparecer las lneas gua de color azul que se muestran:

3. Las lneas azules que aparecen indican con qu otro elemento est relacionado un componente de la ventana. La situacin de un elemento depender siempre de la situacin del otro. Dicho de otra forma, las lneas azules indican las distancias que siempre se respetarn. Observa la siguiente imagen:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

39

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

Tanto el botn como la etiqueta estarn siempre a esta distancia del borde derecho de la ventana

El botn siempre estar a esta distancia de la etiqueta

El botn siempre estar a esta distancia del borde inferior de la ventana

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

Siempre se mantienen las distancias relativas definidas en el diseo aunque el tamao de la ventana cambie.

5. Este comportamiento de los elementos en la ventana viene dado por una opcin del NetBeans llamada Diseo Libre (Free Design) El Diseo Libre permite que los elementos de una ventana mantengan una distribucin relativa da igual el tamao que tenga la ventana. Dicho de otra forma, los elementos se redistribuyen al cambiar el tamao de la ventana. El problema del Diseo Libre es el poco control que se tiene sobre los elementos que se aaden a la ventana. Se puede observar como a veces los elementos no se colocan en la posicin que deseamos o como cambian de tamao de forma inesperada. Todo esto es debido a la necesidad de dichos
NETBEANS PROGRAMACION ORIENTADA A OBJETO

40

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO elementos de mantener unas distancias relativas con otros elementos de la ventana. Cuantos ms elementos tengamos en una ventana, ms difcil ser el colocarlos usando el Diseo Libre. AboluteLayout. Posiciones Absolutas

6. El Diseo Libre es la opcin que est activada por defecto cuando se crea un proyecto en NetBeans. Sin embargo, esta opcin se puede cambiar por distintos Layouts o Distribuciones. 7. En el Inspector de tu proyecto pulsa el botn derecho del ratn sobre el objeto JFrame y activa la opcin Establecer Disposicin AbsoluteLayout.

8. El Inspector tendr la siguiente forma ahora:

Como ves, aparece un objeto dentro del JFrame llamado AbsoluteLayout. Este objeto define otra forma de situar los elementos en la ventana. Concretamente, la distribucin

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

41

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO AbsoluteLayout permite al programador colocar cada elemento donde l quiera, sin restricciones, sin tener en cuenta distancias relativas.

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

10. La ventana de definir una distribucin AbsoluteLayout es la facilidad para colocar cada elemento en la ventana (no tendrs los problemas del Diseo Libre). Sin embargo, la desventaja es que los elementos no mantienen una distribucin relativa respecto al tamao de la ventana. 11. Ejecuta el programa y reduce su ancho. Observa lo que ocurre:

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

Distribucin en lnea. FlowLayout


NETBEANS PROGRAMACION ORIENTADA A OBJETO

42

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 12. Practiquemos ahora con otro tipo de distribucin. Accede al Inspector y pulsa el botn derecho del ratn sobre el objeto JFrame. Activa la opcin Establecer Disposicin FlowLayout.

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

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

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

43

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

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

Distribucin en rejilla. GridLayout

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

44

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 19. Marca el GridLayout y cambia sus propiedades Filas y Columnas. Asigna a la propiedad Filas un 2 y a la propiedad Columnas un 3.

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

Los distintos elementos se adaptarn al espacio que tienen asignado, y cambiarn de tamao. 21. Ya que solo tienes dos elementos en la ventana (una etiqueta y un botn), aade otros cuatro elementos ms (cuatro botones) para observar como se distribuyen en la cuadrcula.

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

45

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 23. Ejecuta el programa y agranda y achica la ventana. Observa como los elementos siempre mantienen su disposicin en rejilla y siempre aparecen dentro de la ventana aunque el tamao de esta vare.

Con un GridLayout los elementos aparecen en filas y columnas.

Siempre aparecen dentro

BorderLayout 24. Otra de las distribuciones posibles es la llamada BorderLayout. Esta distribucin coloca los elementos de la ventana en cinco zonas: i.Zona norte (parte superior de la ventana) ii.Zona sur (parte inferior de la ventana) iii.Zona este (parte derecha de la ventana) iv.Zona oeste (parte izquierda de la ventana) v.Zona centro.

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

46

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

26. Para poder entender el funcionamiento del BorderLayout, se recomienda que el JFrame contenga nicamente 5 botones (elimine los elementos que tiene ahora y aada cinco botones) La ventana tendr un aspecto parecido al siguiente:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

47

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 27. Como se puede observar, cada botn se ha colocado en una zona, y su tamao ha variado hasta ocupar la zona entera. Tenemos un botn en el norte, otro al sur, uno al este, otro al oeste y uno en el centro. El programador no tiene mucho control sobre la disposicin de los elementos en la ventana al usar esta distribucin.

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

Con un GridLayout los elementos aparecen zonas.

Siempre aparecen dentro

CONCLUSIN El diseo de la ventana viene definido por los Layouts o distribuciones. Diseo Libre Esta distribucin viene activada por defecto en el NetBeans, y define una distribucin de componentes en la que se respetan las distancias entre ellos cuando la ventana cambia de tamao. AbsoluteLayout En esta distribucin el programador puede colocar cada elemento en la posicin que desee de la ventana. Los distintos elementos mantienen su posicin aunque la ventana cambie de tamao, lo que puede hacer que si la ventana se reduce de tamao algunos elementos no se vean. FlowLayout En esta distribucin los elementos se colocan uno detrs de otro. Los elementos intentarn estar dentro de la ventana aunque esta se reduzca de tamao. GridLayout Esta distribucin coloca a los elementos en filas y columnas. Los elementos siempre estarn dentro de la ventana aunque esta se reduzca de tamao. BorderLayout Esta distribucin coloca a los elementos en zonas. Los elementos siempre estarn dentro de la ventana aunque esta se reduzca de tamao.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

48

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 19. EJERCICIO GUIADO. JAVA: LAYOUTS Y PANELES

Tcnicas de distribucin de elementos en las ventanas A la hora de disear una ventana se tienen en cuenta dos cosas: La facilidad a la hora de colocar muchos componentes en la ventana. Que dichos componentes estn siempre visibles independientemente del tamao de la ventana.

La distribucin AbsoluteLayout por ejemplo nos da mucha facilidad a la hora de colocar los elementos en la ventana, pero sin embargo los componentes no se adaptan a los cambios de tamao. El Diseo Libre en cambio permite crear ventanas en las que sus componentes se recolocan segn el tamao de estas pero a cambio crece la dificultad del diseo. Para aprovechar las ventajas de los distintos layouts y minimizar sus inconvenientes, es habitual en java crear una estructura de paneles cada uno de ellos con un layout distinto, segn nuestras necesidades. Normalmente, al JFrame se le asigna un layout que lo divida en zonas, como puede ser el BorderLayout o el GridLayout. Luego, dentro de cada una de estas zonas se introduce un panel (objeto JPanel). Y a cada uno de estos paneles se le asigna el layout que ms le convenga al programador (FlowLayout, Diseo Libre, AbsoluteLayout, etc) Finalmente, dentro de cada panel se aaden los componentes de la ventana.
JFrame (BorderLayout o GridLayout)

JPanel 1 (Diseo Libre, AbsoluteLayout o

JPanel 2 (Diseo Libre, AbsoluteLayout o

etc

Componentes

Componentes

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

49

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO Ejercicio guiado

1. Crea un nuevo proyecto en java. Se pretende crear un proyecto con una ventana de diseo complejo. Para ello sigue los siguiente pasos: 2. En primer lugar, asigna un BorderLayout al JFrame:

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

Panel en la zona norte.

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

50

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

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

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

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

51

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

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

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

52

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

8. El Inspector tendr la siguiente forma ahora:

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

53

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 10. Cada panel puede ser diseado de forma individual, simplemente haciendo doble clic sobre l. As pues, empezaremos diseando el panel panelBotonera. Haz doble clic sobre l. 11. En la parte izquierda del NetBeans aparecer nicamente el panelBotonera. Agrndalo para que tenga la siguiente forma:

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

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

54

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

(No nos vamos a preocupar en este ejercicio de los nombres de los componentes) 14. Ahora disea el panel panelVerificacin haciendo doble clic sobre l. 15. Asgnale tambin un layout AbsoluteLayout. 16. Coloca en l cuatro casillas de verificacin. El aspecto del panel al terminar debe ser parecido al siguiente:

Y el Inspector debe tener un estado similar a este:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

55

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

17. Ahora se disear el panelTitulo. Haz doble clic sobre l. 18. En este caso se le aadir un FlowLayout. Recuerda que este layout hace que cada elemento se coloque uno detrs de otro. 19. Aade al panel dos etiquetas como las que siguen. Ponle un borde a cada una:

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

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

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

56

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

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

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

23. A cada una de las divisiones del GridLayout del panelDatos le asignaremos un nuevo panel. Aade al panelDatos cuatro paneles. Esto lo puedes hacer fcilmente haciendo clic con el botn derecho del ratn sobre el panelDatos en el Inspector y eligiendo la opcin Aadir desde paleta Swing JPanel. El aspecto del inspector debera ser como el que sigue, en lo que se refiere al panelDatos:

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 cada celda hay un panel. Puede imaginarse el panelDatos as: panelDatos

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

57

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO PanelEtiqueta1 PanelCuadro1 PanelEtiqueta2 PanelCuadro2

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

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

CONCLUSIN Para el diseo de ventanas muy complejas, ser suelen definir layouts que dividan en zonas el JFrame, como por ejemplo el BorderLayout o el GridLayout. Dentro de cada una de dichas zonas se aade un JPanel, al que se le asigna un AbsoluteLayout, un FlowLayout o se mantiene el Diseo Libre. 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. 20. EJERCICIO GUIADO. JAVA: DILOGOS

Cuadros de Dilogo Un cuadro de dilogo es un cuadro con opciones que aparece normalmente cuando se activa una opcin del men principal del programa.
NETBEANS PROGRAMACION ORIENTADA A OBJETO

58

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO Los cuadros de dilogo tienen forma de ventana aunque no poseen algunas caractersticas de estas. Por ejemplo, no pueden ser minimizados ni maximizados. Los cuadros de dilogo, aparte de las opciones que muestran, suelen contener dos botones tpicos: el botn Aceptar y el botn Cancelar. El primero de ellos da por vlidas las opciones elegidas y cierra el cuadro de dilogo. El segundo simplemente cierra el cuadro de dilogo sin hacer ninguna modificacin. He aqu algunos ejemplos de cuadros de dilogo del programa Word:

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

59

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO Ejercicio guiado

1. Crea un nuevo proyecto en java. 2. Disea el JFrame de forma que la ventana tenga el siguiente aspecto:

Los elementos de la ventana tendrn los siguientes nombres: Cuadro de texto de unidades: txtUnidades. Cuadro de texto de precio: txtPrecio. Etiqueta con borde del total: etiTotal. Botn Calcular: btnCalcular. Botn Configuracin: btnConfiguracion.

3. Se pretende que cuando se pulse el botn Calcular se calcule el total de la venta (esto se har luego) Para hacer el clculo se tendrn en cuenta el IVA y el Descuento a aplicar. Estos dos valores sern variables globales, ya que se usarn en distintos lugares del programa. 4. As pues entra en el cdigo y declara una variable global iva y otra descuento tal como se indica a continuacin (recuerda que las variables globales se colocan justo despus de la lnea donde se define la clase principal public class):

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

60

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

Variables globales

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

Inicializacin de variables globales

6. Estamos ya preparados para programar el botn btnCalcular. Entra en su actionPerformed y all se programar la realizacin del clculo de la siguiente forma:
double double double double double double unidades; precio; total; //total cantiva; //cantidad iva cantdes; //cantidad descuento totalsiniva; //total sin iva

//Recojo los datos de los cuadros de textos (convirtiendolos a nmeros) unidades = Double.parseDouble(txtUnidades.getText()); precio = Double.parseDouble(txtPrecio.getText()); //Calculo el total sin iva, la cantidad de iva y la cantidad de descuento totalsiniva=precio*unidades; cantiva=totalsiniva*iva/100; cantdes=totalsiniva*descuento/100; //Ahora calculo el precio total: total = totalsiniva+cantiva-cantdes; //Coloco el total en la etiqueta: etiTotal.setText(""+total);

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

61

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 7. Puedes ya ejecutar el programa y comprobar que el botn Calcular funciona, aunque el clculo que realiza lo hace con un iva 0 y un descuento 0. 8. A continuacin se programar el botn Configuracin de forma que nos permita decidir qu iva y qu descuento queremos aplicar. Este botn mostrar un CUADRO DE DILOGO que permita al usuario configurar estos datos. 9. Para aadir un cuadro de dilogo al proyecto, se tiene que aadir un objeto del tipo JDialog sobre el JFrame.

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

11. Cmbiale el nombre. Lo llamaremos dialogoConfiguracion. 12. Los dilogos normalmente traen por defecto el layout BorderLayout. Para nuestro ejemplo cambiaremos el layout del JDialog por el Diseo Libre:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

62

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

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

Los elementos del cuadro de dilogo tienen los siguientes nombres: El cuadro de texto del Iva: txtIva. El cuadro de texto del Descuento: txtDescuento. El botn Aceptar: btnAceptar. El botn Cancelar: btnCancelar. Si observas el Inspector debe tener el siguiente aspecto:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

63

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

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

Haces clic sobre Configuracin y aparece el dilogo

16. Para conseguir esto, debes programar el actionPerformed del botn btnConfiguracion de la siguiente forma:
dialogoConfiguracion.setSize(250,200); dialogoConfiguracion.setLocation(100,100); dialogoConfiguracion.setVisible(true); NETBEANS PROGRAMACION ORIENTADA A OBJETO

64

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 17. El cdigo anterior hace lo siguiente: i.A travs del mtodo setSize se asigna un tamao de 250 x 200 al cuadro de dilogo. ii.A travs del mtodo setLocation se determina que el cuadro de dilogo aparecer en la posicin (100, 100) de la pantalla. iii.A travs del mtodo setVisible hacemos que el cuadro de dilogo se muestre.

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

19. Los botones Aceptar y Cancelar del cuadro de dilogo an no hacen nada. As que los programaremos. Empezaremos por el ms sencillo, el botn Cancelar. 20. El botn Cancelar de un cuadro de dilogo simplemente cierra dicho cuadro de dilogo. Para ello, debes aadir el siguiente cdigo en el actionPerformed del botn Cancelar del dilogo:
dialogoConfiguracion.dispose();

El mtodo dispose se usa para cerrar un cuadro de dilogo. Tambin se puede usar con un JFrame para cerrarlo. 21. Ejecuta el programa de nuevo y comprueba el funcionamiento del botn Cancelar del cuadro de dilogo. 22. Ahora se programar el botn Aceptar. Cuando el usuario pulse este botn, se confirmar el valor del iva y del descuento que haya introducido. Es decir, se traspasarn los valores introducidos en los cuadros de texto txtIva y txtDescuento a las variables globales iva y descuento. Una vez que se haya hecho esto, el cuadro de dilogo se debe cerrar.
NETBEANS PROGRAMACION ORIENTADA A OBJETO

65

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 23. Este es el cdigo que hace lo anterior. Debe programarlo en el actionPerformed del botn Aceptar:
iva = Double.parseDouble(txtIva.getText()); descuento=Double.parseDouble(txtDescuento.getText()); dialogoConfiguracion.dispose();

24. Observe el cdigo. Primero se traspasa los valores de los cuadros de texto a las variables globales y luego se cierra el cuadro de dilogo. 25. Compruebe el funcionamiento del programa de la siguiente forma: i. j. k. l. Ejecute el programa. Introduzca 5 unidades y 20 de precio. Si pulsa calcular, el total ser 100. (No hay ni iva ni descuento al empezar el programa) Ahora pulse el botn Configuracin, e introduzca un iva del 16. El descuento djelo a 0. Acepte. m. Ahora vuelva a calcular. Observe como ahora el total es 116, ya que se tiene en cuenta el iva configurado. n. Pruebe a configurar un descuento y vuelva a calcular.

26. Se pretende ahora mejorar un poco el cuadro de dilogo, aadindole un ttulo. Seleccione el cuadro de dilogo en el Inspector y luego busque su propiedad title. En ella escriba Configuracin de iva y descuento. 27. Vuelva a ejecutar el programa. Observe la barra de ttulo del cuadro de dilogo:

28. Ahora se estudiar el concepto de cuadro de dilogo modal y cuadro de dilogo no modal. Un cuadro de dilogo no modal. Es aquel que permite activar la ventana desde la que apareci. Los cuadros de dilogo aadidos a un proyecto son por defecto no modales.

29. Ejecuta el programa y prueba a hacer lo siguiente: a. Pulsa el botn Configurar. Aparecer el cuadro de dilogo. b. Pulsa sobre la ventana.
NETBEANS PROGRAMACION ORIENTADA A OBJETO

66

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

Pulsa sobre la ventana.

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

La ventana se activa colocndose por encima del cuadro de dilogo.

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

67

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

f.

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

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

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

g. Es muy comn, cuando tenemos un cuadro de dilogo no modal, usar la propiedad alwaysOnTop, para que siempre aparezca delante de la ventana. 30. Ahora se estudiar el concepto de cuadro de dilogo modal. Un cuadro de dilogo modal es aquel que no permite que se active otra ventana hasta que este no se haya cerrado.

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

32. Ahora ejecuta el programa comprueba lo siguiente: h. Haz que se visualice el cuadro de dilogo de configuracin.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

68

i.

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO A continuacin intenta activar la ventana haciendo clic sobre ella. Vers como no es posible activarla. Es ms, intenta escribir en sus cuadros de texto. No ser posible hacerlo. (Incluso observars un parpadeo en el cuadro de dilogo avisndote de ello). Esto es debido a que ahora nuestro cuadro de dilogo es modal.
Aunque intentes activar la ventana o escribir en ella, no podrs, ya que el cuadro de dilogo es modal.

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

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

j.

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

CONCLUSIN Los Cuadros de Dilogo son ventanas simplificadas que muestran distintas opciones al usuario. Los objetos JDialog son los que permiten la creacin y uso de cuadros de dilogo en un proyecto java. Para visualizar un JDialog ser necesario llamar a su mtodo setVisible. Tambin son interesantes los mtodos setSize para asignarles un tamao y setLocation para situar el cuadro de dilogo en la pantalla. Para cerrar un JDialog ser necesario invocar a su mtodo dispose. Existen dos tipos de cuadros de dilogo: los modales y no modales. Los cuadros de dilogo modales no permiten que se active otra ventana hasta que el cuadro de dilogo no se haya cerrado.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

69

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

CAPITULO 3. DECISION.
Sentencia if Toma una decisin referente a la accin a ejecutar en un programa dependiendo del resultado (verdadero o falso) de una condicin. La sentencia if nos permite hacer que slo se ejecute una seccin de cdigo. Su estructura es

La condicin es una expresin de comparacin que puede evaluarse como verdadera o como falsa. La condicin siempre debe ir entre parntesis. Cuando se ejecuta la sentencia if, primero se evala la condicin y si es verdadera se ejecuta el cdigo que se encuentra dentro del if. Veamos un ejemplo de la sentencia if: En este caso, si el valor de la variable x es mayor que cero, x se va a incrementar en cinco unidades.

Sentencia if-else Otra estructura de control muy utilizada es el if-else. Al ejecutar una estructura if-else primero se evala la condicin, si es verdadera se ejecuta el cdigo if, si no se ejecuta el cdigo else.

Veamos un ejemplo de la sentencia if-else En este caso si el valor de la variable x es mayor que cero se va a incrementar su valor en cinco unidades, igual que la vez anterior. Pero si su valor no es mayor que cero entonces se va a reducir en cinco unidades.

Sentencia if anidada

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

70

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Existen ocasiones en que tenemos ms de una condicin. Cuando esto sucede podemos utilizar una estructura de if anidados. Al ejecutarse un if anidado primero se revisa la primera condicin, luego la segunda, luego la tercera y as hasta llegar al final. En caso de que no se cumpla ninguna condicin se ejecuta el cdigo else.

Actividad en equipo Crea un programa para comprar dos nmeros e imprimir cul es mayor o si son iguales. Una posible solucin

Sentencia switch La sentencia switch nos permite alterar el curso de un programa mediante el valor de una variable y es muy similar a un if anidado, pero tiene algunas peculiaridades que nos facilitan tareas como crear un men o crear un diccionario. El switch tiene la ventaja de que puede representar algunas condiciones muy complicadas. La sentencia inicia con switch y entre parntesis el nombre de la variable que se debe comparar. Por cada caso debemos escribir case y el valor que debemos comparar. Por ltimo debemos escribir el cdigo que debe ejecutarse y terminar con un break.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

71

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

El cdigo que se va a ejecutar en el switch se ejecutar hasta que se encuentre la palabra break, por lo que podemos hacer que ms de un caso ejecute el mismo cdigo, que es la principal diferencia con el if. El default es equivalente al else.

Para los programas que van a realizar varias acciones diferentes dependiendo del valor de una sola variable entonces es muy recomendable utilizar el switch Se considera que un switch es ms fcil de leer y mantener que un if, por lo que se recomienda su uso pero muchas veces es una fuente de errores en el flujo, en especial cuando no se utilizan los break.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

72

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

PRACTICA 05. Programacin con If


Instrucciones Paso 1: Descarga el esqueleto de la aplicacin que vamos a utilizar en esta sesin. El archivo est en formato zip, por lo que necesitas descomprimirlo en algn directorio (por ejemplo D:\projects). Abre NetBeans y selecciona la opcin abrir proyecto , aparecer un dilogo en el que puedes seleccionar varios archivos, busca la carpeta en la que descomprimiste los archivos (puedes saber si realmente es una carpeta de proyecto porque tendr el y siguiente smbolo: ). Selecciona la carpeta y presiona el botn abrir. Abre la clase

aparecer una ventana con la siguiente interfaz grfica: Paso 2: Corre el programa y verifica la funcionalidad que tiene actualmente. Qu sucede cuando presiono un botn? Qu sucede cuando pongo nmeros enteros en edad? Qu sucede cuando no pongo nmeros en edad? Qu sucede cuando pongo nmeros reales en edad? Para poder entender este comportamiento es necesario analizar el siguiente cdigo:

Recuerda que para poder convertir de un tipo de dato a otro necesitamos hacer un cast. Como el mtodo getText() del JTextField siempre devuelve un String y lo que nosotros necesitamos es un nmero vamos a hacer NETBEANS PROGRAMACION ORIENTADA A OBJETO

73

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
un cast a int utilizando el mtodo Integer.parseInt(). Es muy importante que la declaracin de la variable age se encuentra fuera del try, ya que de esta manera nos aseguramos que el resto del cdigo pueda utilizarla. Tambin estamos viendo una sintaxis nueva para el manejo de errores, por el momento slo debemos saber que en caso de que ocurra un error de formato (es decir, que el nmero no se pueda convertir a int) se va a ejecutar el cdigo que se encuentra dentro del bloque catch. Ms adelante veremos el manejo de errores con ms detenimiento. Paso 3: Selecciona source en la parte superior del IDE, abajo de las pestaas con los nombres de las clases para ver el cdigo de tu ventana. Dentro de los mtodos que vamos a utilizar en este laboratorio hay un mensaje que dice que el mtodo no ha sido implementado, una vez que implementes los mtodos puedes quitar este mensaje.

Vamos a hacer una pausa para entender una clase que nos va a servir mucho durante este laboratorio. La clase JOptionPane tiene un mtodo showMessageDialog() que nos permite mostrar un mensaje. El mtodo recibe dos parmetros en su forma ms sencilla, el primer parmetro es el componente padre, por el momento siempre vamos a utilizar this (que hace una referencia a la ventana actual) y el segundo parmetro es un String con el texto que queremos mostrar. Ahora abre la ventana de ToDo (Window -> ToDo o presionando Ctrl + 6) donde podrs ver lo que hace falta codificar. Primero vamos a resolver el cdigo que va a comentar sobre nuestra edad. Para hacer esto haz doble click sobre el ToDo correspondiente. Ahora agrega el siguiente cdigo y vuelve a probar el programa.

Qu sucede cuando introducimos 13 como edad? Qu sucede cuando introducimos 15 como edad? Qu sucede cuando introducimos 20 como edad? Ahora vamos a ver una propiedad del if que nos va a servir mucho cuando queramos controlar un programa. Escribe el siguiente cdigo:

Qu sucede cuando introducimos 25 como edad? Qu sucede cuando introducimos 14 como edad? Como este comportamiento no es lo que esperbamos vamos a probar un par de casos ms, primero vamos a realizar la validacin completa. Escribe el cdigo que se ve a continuacin:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

74

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

Al correr el programa podemos ver que ya tiene el comportamiento que esperamos, pero hay una manera un poco ms elegante de codificarlo. Recuerda en la presentacin que vimos que puedes utilizar el else if para poner condiciones extras a un if y convertirlo en un if anidado. Ahora copia el siguiente cdigo:

Qu sucede cuando introducimos 25 como edad? Qu sucede cuando introducimos 14 como edad? Lo que est sucediendo es que un if anidado nicamente revisa las condiciones hasta encontrar una que sea verdadera y despus de eso no revisa todas las dems. En algunos programas (como este) ese es el comportamiento esperado, aunque en algunos otros es mejor utilizar varios if's. Regularmente se utiliza esta ltima manera de escribirlo porque es un poco ms fcil de entender que poner las dobles condiciones, pero pueden utilizar la que prefieran. Ahora terminemos de codificar utilizando esta ltima sintaxis (si prefieres puedes utilizar varios if's).

Paso 4: Ahora vamos a hacer el cdigo que calcule el rea de un crculo. En este caso la validacin ser muy sencilla ya que slo debemos validar que el radio sea mayor que cero (ya que no existen distancias negativas). En caso de que el radio no sea mayor que cero vamos a mostrar un mensaje de error. Para hacer esto copia el siguiente cdigo:

Fjate en el mtodo showMessageDialog() de la clase JOptionPane. Como puedes ver el primer parmetro es un this, pero despus viene el siguiente String:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

75

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
"El area del circulo es " + area Lo que estamos haciendo aqui es concatenar un nmero a un String. Como el mtodo showMessageDialog() debe recibir un String como segundo parmetro es necesario que a los nmeros les concatenemos texto utilizando el operador +. Agrega un else para mostrar un mensaje de error en caso de que el radio sea menor o igual a cero y prueba que tu cdigo funcione de manera correcta. Paso 5: Ahora vamos a resolver la ecuacin utilizando la frmula general. Recuerda que la frmula general es:

Aqui debemos realizar dos validaciones. El valor de a debe ser diferente de cero para evitar que la divisin indetermine el resultado y la raz debe ser de un nmero mayor o igual a cero. Para hacer esto vamos a utilizar un and && y adems vamos a utilizar una variable para ayudarnos a escribir menos y a hacer ms claro el cdigo. Escribe el siguiente cdigo:

Como puedes ver estamos utilizando la variable root donde guardamos el valor de lo que se encuentra dentro de la raz. Esto lo hacemos para que al comparar y al sacar la raz no tengamos que volver a escribir la frmula y sea ms fcil de entender, adems de que ya tener el valor guardado y no tener que calcularlo hace que sea un poco ms rpido. En caso de que la raz sea igual o mayor que cero y que a no sea cero vamos a obtener las raices positivas y negativas y mostrar el resultado. Agrega un else para mostrar un mensaje de error en caso de que los datos no sean vlidos. Dentro del else agrega un if para decirle al usuario cul de los datos no fue vlido o si los dos no lo fueron y prueba que tu cdigo funcione de manera correcta. Paso 6: Por ltimo vamos a utilizar un control nuevo llamado JCheckBox que podemos utilizar para hacer que nuestros programas sean ms amigables. El JCheckBox tiene un mtodo importantsimo que nos devuelve si est seleccionado o no. Este mtodo nos va a permitir responder de maneras diferentes utilizando un if. El mtodo se llama isSelected() y nos devuelve verdadero en caso de que s est seleccionado y falso en caso contrario. Recuerda que la condicin de un if debe ser cualquier cosa que evale a verdadero o falso y no es necesario que sea una comparacin. Esto hace que podamos utilizar una variable boolean o el resultado de este mtodo dentro de la condicin directamente de la siguiente manera:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

76

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

Prueba que tu cdigo funcione de manera correcta.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

77

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

PRACTICA 06. Programacin con switch


Instrucciones Paso 1: Descarga el esqueleto de la aplicacin, abre el proyecto en NetBeans, complalo y crrelo. Aparecer una interfaz parecida a la siguiente:

Paso 2: Antes de continuar con el ejercicio veamos un poco ms acerca del manejo estructurado de errores. La sintaxis del try-catch es la siguiente:

En la parte del try debemos poner el cdigo que podra tener errores (por ejempo, hacer el cast de un String a un int). El cdigo se va a ejecutar hasta el final o hasta que ocurra un error. Si ocurre un error entonces se

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

78

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
ejecuta el catch. Sin importar si ocurrieron errores o no siempre se ejecuta el finally (que nos sirve para poder realizar limpieza al final). Podemos ver el comportamiento de manera grfica en el siguiente diagrama:

Podemos hacer un ejemplo en el que hagamos un cast de String a int, en caso de que no se pueda convertir se muestra un mensaje de error.

Como podemos ver en la parte del catch debemos poner el tipo de excepcin que ocurri. La excepcin ms general es Exception, adems de esta hay muchas excepciones que podemos manejar para darle retroalimentacin al usuario de manera ms clara. Por ejemplo: IOException: Ocurre cuando hay un error al leer o escribir un archivo o al leer del teclado. NumberFormatException: Ocurre cuando hay un error al hacer un cast. ArithmeticException: Ocurre cuando hay un error al realizar una operacin (por ejemplo divisin entre cero). Podemos utilizar ms de una clsula catch para manejar excepciones de manera ms precisa o para manejar varios errores diferentes que podran pasar dentro de un mismo cdigo, por ejemplo, si despus de hacer un cast a dos nmeros se intenta hacer una divisin podran ocurrir errores de cast o errores aritmticos de divisin entre cero. Podemos proteger nuestro programa con el siguiente cdigo:

Pero si existen tantas excepciones cmo saber qu excepciones manejar? Por suerte NetBeans tambin nos ayuda en eso al mostrarnos la ayuda en linea de los mtodos. Por ejemplo, al escribir el mtodo parseInt() aparece la siguiente ayuda:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

79

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

Podemos ver que en la parte de hasta abajo aparece que va a aventar NumberFormatException en caso de que el String no contenga un integer, con lo que no slo sabemos qu excepciones podran ocurrir sino que tambin sabemos cundo es posible que ocurran y bajo qu condiciones. Paso 3: Ahora s vuelve a la aplicacin. Abre el cdigo presionando source y en la ventana ToDo busca la parte de pedir la temperatura. Nos dice que la temperatura debe ser un double, por lo que sabemos que vamos a utilizar el cast Double.parseDouble() pero como no estamos seguros que lo que est dentro de la caja de texto sea un nmero real (podran ser letras) debemos de manejar la excepcin mediante un try-catch. Puedes basarte en el siguiente cdigo:

El return al final del catch hace que en caso de que ocurra el error el mtodo termine, es decir, que el cdigo no se siga ejecutando. Ms adelante veremos un poco ms acerca de los mtodos y la programacin modular, pero por el momento nos sirve para que todo el cdigo que pongamos abajo no se ejecute si no tenemos datos vlidos. Paso 4 Para el ejercicio de vocales y consonantes vamos a necesitar saber qu letra seleccion el usuario. El tipo de dato que nos permite representar una letra es el char. Recuerda que el mtodo getText() siempre nos devuelve

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

80

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
un String, por desgracia el String no es de tipo char, as que no podemos realizar la comparacion directamente sino que tenemos que obtener el primer caracter del String (aqui no podemos hacer un cast porque String es un conjunto de caracteres y no puede representarse como un solo caracter). Para poder hacer esto debemos aprender un poco ms acerca de la clase String. Esta clase tiene varios mtodos muy tiles que nos permiten obtener informacin y manipular lo que hemos escrito o lo que ha escrito el usuario. Un mtodo que podemos utilizar para obtener el primer caracter dentro de un String es el mtodo charAt(), que se utiliza de la siguiente manera:

Es muy importante fijarnos que el mtodo charAt() recibe el indice de la letra que quiere, empezando de cero. En el ejemplo anterior devolvera la 'H' (que es la primera letra). Tamben es importante fijarnos que al comparar debemos utilizar la letra entre comillas sencillas y el color cambiar a verde para saber que realmente es un char y no un String. Qu excepciones podran mostrarse cuando mandamos llamar el mtodo charAt()? Otro mtodo importante de la clase String es el mtodo length() que nos permite saber cuntos caracteres tiene un String. Puedes utilizar este mtodo de la siguiente manera:

Paso 5: Utilizando tus conocimientos sobre excepciones, control de flujos con if y switch y operadores realiza los ejercicios de esta sesin que se encuentran marcados con TODO en el cdigo. Los ejercicios son: Mostrar si una letra introducida por el usuario es vocal o consonante Mostrar un mensaje que basndose en la terminacin de una placa diga qu da no circula Mostrar si dados dos nmeros a y b por el usuario, a es divisible entre b Mostrar un mensaje de recomendacin de acuerdo a una temperatura dada por el usuario

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

81

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

PRACTICA 07. Manejo de Componentes 03


1. EJERCICIO GUIADO. JAVA: CUADROS DE VERIFICACIN

1. Realiza un nuevo proyecto. 2. En la ventana principal debes aadir lo siguiente: Un botn Aceptar llamado btnAceptar. Una etiqueta con borde llamada etiResultado.

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

4. Aade tres JCheckBox y cambia el texto de ellos, de forma que aparezca Perro, Gato y Ratn. 5. Debe cambiar el nombre de cada uno de ellos. Se llamarn: chkPerro, chkGato, chkRaton. 6. La ventana tendr el siguiente aspecto cuando termine:

7. El programa debe funcionar de la siguiente forma:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

82

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO Cuando el usuario pulse aceptar, en la etiqueta aparecer un mensaje indicando qu animales han sido seleccionados. Para ello hay que programar el evento actionPerformed del botn Aceptar. En ese evento aada el siguiente cdigo:
String mensaje="Animales elegidos: "; if (chkPerro.isSelected()) { mensaje=mensaje+"Perro "; } if (chkGato.isSelected()) { mensaje=mensaje+"Gato "; } if (chkRaton.isSelected()) { mensaje=mensaje+"Raton "; } etiResultado.setText(mensaje);

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

9. Observa el mtodo isSelected() propio de las casillas de verificacin, permiten saber si una casilla est activada o no. 10. Ejecute el programa. Seleccione por ejemplo las casillas Gato y Ratn. Al pulsar Aceptar el resultado debe ser el siguiente:

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

83

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 2. EJERCICIO GUIADO. JAVA: BOTONES DE OPCIN 1. Realiza un nuevo proyecto. 2. En la ventana principal debes aadir lo siguiente: Un botn Aceptar llamado btnAceptar. Una etiqueta con borde llamada etiResultado.

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

4. Una vez aadido el panel en el JFrame, le pondremos un borde para poder localizarlo fcilmente. Debes hacer lo siguiente: Selecciona el panel que has aadido. Activa la propiedad Border (botn con tres puntos) Busca el tipo de borde llamado TitledBorder (borde con ttulo) y pon el ttulo colores.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

84

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

5. Tu ventana debe quedar ms o menos as:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

85

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 6. Ahora debes aadir tres botones de opcin (botones de radio) dentro del panel. Estos botones son objetos del tipo JRadioButton.

7. Aade tres JRadioButton y cambia el texto de ellos, de forma que aparezca Rojo, Verde y Azul. 8. Debe cambiar el nombre de cada uno de ellos. Se llamarn: optRojo, optVerde, optAzul. 9. La ventana tendr el siguiente aspecto cuando termine:

10. Si ejecuta el programa, observar que pueden seleccionarse varios colores a la vez. Esto no es interesante, ya que los botones de opcin se usan para activar solo una opcin entre varias. 11. Hay que hacer que solo un botn de opcin pueda estar seleccionado a la vez. Para ello, debe aadir un nuevo objeto. Realice los siguientes pasos:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

86

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO Aada un objeto del tipo ButtonGroup al formulario. Atencin! Este objeto es invisible, y no se ver en el formulario, sin embargo, lo podris ver en el Inspector, en la parte de Otros Componentes:

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

87

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

Haz lo mismo con los botones optVerde y optAzul.

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

13. Ahora interesa que la opcin Rojo salga activada desde el principio. Una forma de hacer esto es programando en el Constructor lo siguiente: optRojo.setSelected(true); El mtodo setSelected hace que se pueda activar o desactivar un botn de opcin. Prueba el programa. Observa como la opcin Rojo est activada inicialmente. 14. El programa no est terminado an. Interesa que cuando el usuario pulse el botn Aceptar, en la etiqueta aparezca el color elegido. Para ello, en el actionPerformed del botn Aceptar programe lo siguiente: String mensaje="Color elegido: "; if (optRojo.isSelected()) { mensaje=mensaje+"Rojo"; } else if (optVerde.isSelected()) { mensaje=mensaje+"Verde"; } else if (optAzul.isSelected()) { mensaje=mensaje+"Azul"; } etiResultado.setText(mensaje);

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

88

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 15. Observa el cdigo. En l se hace lo siguiente: Se crea una variable de cadena llamada mensaje. En esa variable se introduce el texto Color elegido: Luego se comprueba que opcin est seleccionada, usando el mtodo isSelected de los botones de opcin. Este mtodo te dice si un botn est seleccionado o no. Segn la opcin que est seleccionada, se aade un texto u otro a la cadena mensaje. Finalmente se muestra la cadena mensaje en la etiqueta etiResultado.

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

CONCLUSIN Los botones de opcin, tambin llamados botones de radio (JRadioButton) se usan cuando quieres que el usuario pueda elegir una opcin de entre varias. Es interesante que los botones de radio aparezcan dentro de un panel JPanel. Se recomienda colocar un borde al panel. Es totalmente necesario aadir un objeto del tipo ButtonGroup, y hacer que los botones de radio pertenezcan a dicho grupo. En caso contrario, ser posible activar varios botones de opcin a la vez.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

89

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 3. EJERCICIO GUIADO. JAVA: CUADROS DE LISTA 1. Realiza un nuevo proyecto. 2. En la ventana principal debes aadir lo siguiente: Un botn Aceptar llamado btnAceptar. Una etiqueta con borde llamada etiResultado.

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

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

90

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 5. Aprovecha para cambiarle el nombre al JList. El nuevo nombre ser lstColores. 6. Si te fijas en el JList, consiste en un cuadro que contiene una serie de Items. Estos elementos pueden ser cambiados a travs de la propiedad Model del JList. 7. Busca la propiedad Model y haz clic en el botn de los tres puntos. Aparecer un cuadro de dilogo parecido al siguiente. Solo tienes que seleccionar los elementos que quieras y pulsar el botn Borrar (Remove) para eliminarlos de la lista. 8. Puedes aadir elementos escribindolos en el cuadro Artculo y luego pulsando el botn Aadir (Add).

9. Debes hacer que la lista sea la siguiente: Rojo Verde Azul 10. Ahora programaremos el actionPerformed del botn Aceptar. Debes introducir el siguiente cdigo:
String mensaje; mensaje="El color seleccionado es: "+lstColores.getSelectedValue().toString(); etiResultado.setText(mensaje);

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

91

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

11. Observa el cdigo: Se crea una variable de cadena llamada mensaje. Y dentro de esta variable se introduce una concatenacin de cadenas. Observa la parte: lstColores.getSelectedValue(), esta parte devuelve el valor seleccionado de la lista. Hay que tener en cuenta que este valor no es una cadena, por eso hay que convertirla a cadena aadiendo .toString(). De esta manera puedes extraer el elemento seleccionado de un cuadro de lista. Luego simplemente ponemos la cadena mensaje dentro de la etiqueta.

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

13. Vamos a mejorar el programa. Puede suceder que el usuario no seleccione ningn valor del cuadro de lista, y sera interesante en este caso que el programa avisara de ello. Cambie el cdigo del botn Aceptar por este otro cdigo:
String mensaje; if (lstColores.getSelectedIndex()==-1) { mensaje="No hay un color seleccionado."; } else { mensaje="El color seleccionado es: "+lstColores.getSelectedValue().toString(); } etiResultado.setText(mensaje);

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

92

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 14. Observa el cdigo: El mtodo getSelectedIndex me dice el ndice del elemento que est seleccionado. Por ejemplo, si est seleccionado el primero el ndice es 0, si est seleccionado el segundo el ndice es 1, etc. Si este mtodo devuelve -1, entonces es seal de que no hay ningn elemento seleccionado. Aprovecho esto para mostrar un mensaje indicando lo sucedido.

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

16. Se podra haber prescindido del botn aceptar si el cdigo anterior se hubiera puesto en el evento mouseClicked del cuadro de lista en vez de en el actionPerformed del botn Aceptar. En este caso, cada vez que se seleccionara un elemento de la lista, automticamente aparecera el mensaje en la etiqueta. Se anima a que realice esta modificacin. CONCLUSIN El objeto JList permite crear cuadros de lista. Estos objetos contienen una serie de elementos que pueden ser seleccionados. A travs del mtodo getSelectedValue se puede obtener el elemento que est seleccionado. (Recuerda convertirlo a cadena con toString) A travs del mtodo getSelectedIndex se puede saber la posicin del elemento seleccionado. Si este ndice es -1, entonces sabremos que no hay ningn elemento seleccionado.
NETBEANS PROGRAMACION ORIENTADA A OBJETO

93

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 4. EJERCICIO GUIADO. JAVA: CUADROS COMBINADOS 1. Realiza un nuevo proyecto. 2. En la ventana principal debes aadir lo siguiente: Una etiqueta con borde llamada etiResultado.

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

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

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

94

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

6. Al igual que pasaba con los cuadros de lista, se pueden eliminar los elementos que contiene el combo y aadir elementos propios. Use los botones Aadir y Eliminar para aadir la siguiente lista de elementos: Rojo Verde Azul 7. Ejecuta el programa y observa el funcionamiento del desplegable...

8. Vamos a hacer que cuando se elija un elemento del desplegable, en la etiqueta aparezca un mensaje indicando el color elegido. Para ello, debes programar el evento actionPerformed del combo y aadir el siguiente cdigo:
NETBEANS PROGRAMACION ORIENTADA A OBJETO

95

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
String mensaje="El color elegido es "; mensaje=mensaje+cboColores.getSelectedItem().toString(); etiResultado.setText(mensaje);

9. Este cdigo hace lo siguiente: Crea una variable de cadena. Concatena dentro de ella el mensaje El color elegido es con el color seleccionado. Observa el mtodo getSelectedItem, se usa para saber el elemento seleccionado del combo. Es necesario convertirlo a texto con toString. Finalmente se coloca el mensaje en la etiqueta.

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

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

96

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 12. Ejecuta el programa y observa como se puede escribir dentro del combo. Al pulsar Enter, el programa funciona igualmente con el texto escrito.

Se escribe aqu y se pulsa enter

CONCLUSIN Los combos son listas desplegables donde se puede elegir una de las opciones propuestas. Los combos pueden funcionar tambin como cuadros de textos, si se activa la opcin editable. A travs del mtodo getSelectedItem se puede extraer la opcin seleccionada o el texto escrito en el combo.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

97

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 5. EJERCICIO GUIADO. JAVA: MODELOS DE CUADRO DE LISTA 1. Realiza un nuevo proyecto. 2. En la ventana principal debes aadir lo siguiente: Una etiqueta con borde llamada etiResultado.

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

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

98

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 5. Aade dos botones al formulario. Uno de ellos tendr el texto Curso 1 y se llamar btnCurso1 y el otro tendr el texto Curso 2 y se llamar btnCurso2.

6. En el evento actionPerformed del botn Curso 1 programa lo siguiente: DefaultListModel modelo = new DefaultListModel(); modelo.addElement("Juan"); modelo.addElement("Mara"); modelo.addElement("Luis"); lstNombres.setModel(modelo);

7. En el evento actionPerformed del botn Curso 2 programa lo siguiente: DefaultListModel modelo = new DefaultListModel(); modelo.addElement("Ana"); modelo.addElement("Marta"); modelo.addElement("Jose"); lstNombres.setModel(modelo);

8. Explicacin de los cdigos anteriores: Lo que hace cada botn es rellenar el cuadro de lista con una serie de nombres. En el caso del botn Curso 1, la lista se rellena con los nombres Juan, Mara y Luis, mientras que en el caso del botn Curso 2, la lista se rellena con los nombres Ana, Marta y Jose. 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. Los modelos de las listas son objetos del tipo DefaultListModel.
PROGRAMACION ORIENTADA A OBJETO


NETBEANS

99

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO Lo que hace el programa es crear un modelo. Luego rellena el modelo con datos, y finalmente asocia el modelo al cuadro de lista. Veamos como se hace todo esto. Primero se crea el modelo, a travs de la siguiente instruccin (ser necesario aadir el import correspondiente, atento a la bombillita):

DefaultListModel modelo = new DefaultListModel(); El modelo tiene un mtodo llamado addElement que permite introducir datos dentro de l. As pues usamos este mtodo para aadir los datos al modelo.

modelo.addElement("Ana"); modelo.addElement("Marta"); modelo.addElement("Jose"); Finalmente asociamos el modelo creado al cuadro de lista de la siguiente forma:

lstNombres.setModel(modelo); As pues, aqu tienes una forma de cambiar el contenido de un cuadro de lista desde el propio programa.

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

Click y cambia el listado.

10. Ahora aade el siguiente cdigo al evento mouseClicked del cuadro de lista:
etiResultado.setText(lstNombres.getSelectedValue().toString());

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

100

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO Esta instruccin hace que al seleccionar un elemento del cuadro de lista ste aparezca en la etiqueta etiResultado. Recuerda que el mtodo getSelectedValue permite recoger el elemento seleccionado (hay que convertirlo a cadena con toString)

11. Ejecuta el programa:

Click y aparece el elemento seleccionado en la etiqueta.

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

CONCLUSIN Un cuadro de lista es un objeto que contiene a su vez otro objeto denominado modelo. El objeto modelo es el que realmente contiene los datos de la lista. Cuadro de lista Modelo Datos

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

101

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

PRACTICA 08. Programacin Modular


Instrucciones Paso 1: Descarga el esqueleto de la aplicacin que vamos a utilizar en esta sesin. Abre NetBeans, complalo y corre el programa. Tendrs una interfaz grfica similar a la siguiente:

Paso 2: Selecciona el botn "a Kilogramos" y haz click derecho. Selecciona events->action->actionPerformed. En el cdigo podemos ver que tenemos que crear un mtodo toKilograms() que recibe como parmetro un valor de tipo double que representa la cantidad de gramos que vamos a convertir y regresa un valor de tipo double que representa la cantidad de kilogramos a la que se convirti. Al crear un mtodo debemos hacernos una serie de preguntas que nos van a permitir saber qu tipo de mtodo queremos llamar: Qu tipo de acceso va a tener el mtodo? Sabemos que el mtodo slo va a ser utilizado dentro de esta misma ventana, por lo que podemos ponerle un tipo de acceso private. Qu tipo de mtodo es? Es un mtodo normal por lo que no debemos poner ninguna palabra clave (como static o abstract). Qu valor de retorno tiene? En este caso nos dicen que el mtodo nos va a devolver un double, pero muchas veces tenemos que pensar qu tipo de dato es el que mejor representa cierto problema. Qu nombre tiene? Nos dicen que el mtodo se va a llamar toKilograms(), es muy importante siempre seleccionar un nombre de mtodo que sea fcil de entender y que nos diga para qu sirve el mtodo. Por ejemplo, el mtodo convert() podra hacer conversiones de cualquier tipo y no es muy preciso, mientras que el mtodo toKilograms() nos dice que va a convertir a kilogramos. En este caso no es muy importante decir que convierte de gramos porque eso lo podemos ver en los parmetros. Qu parmetros recibe? Una vez ms nos dicen que slo recibe un parmetro llamado grams de tipo double que representa cuntos gramos hay que convertir. Una vez que hayamos termiando de decidir esto podemos hacer el encabezado del mtodo, recuerda que siempre el encabezado debe estar en el mismo orden que las preguntas que hicimos. El encabezado para el mtodo quedara de la siguiente manera: Ahora debemos escribir el mtodo en algn lugar que se encuentre adentro de la clase pero que no se encuentre adentro de un mtodo, las flechas en la siguiente imagen marcan lugares donde podra ponerse el mtodo. Podemos utilizar cualquiera de esos lugares, pero se recomienda que utilicemos alguno de los lugares que tienen flecha roja, ya que se encuentran al final de la clase y son fciles de encontrar cuando estamos revisando el cdigo.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

102

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

Despus del encabezado debe ir el cuerpo del mtodo, en este caso el mtodo nos sirve para convertir de gramos a kilogramos, que es algo muy sencillo, por lo que slo debemos poner una lnea en cualquier lugar que est dentro de la clase pero que est fuera de cualquier mtodo que multiplique los gramos por 0.001 de la siguiente manera:

Recuerda que la palabra clave return nos permite indicarle al programa qu va a regresar ese mtodo, es decir, cul va a ser el valor de retorno. En este caso el mtodo va a regresar los gramos multiplicados por 0.001, con lo que los convertimos a kilogramos. Por ltimo mandamos llamar el mtodo toKilograms() para convertir a kilos dentro del cdigo del botn.

Modifica el cdigo para que valide que los gramos sean un nmero positivo. Paso 3: Ahora pasemos al segundo botn. El botn debe convertir la cantidad de gramos a libras, pero no nos dan la equivalencia de gramos a libras directamente sino que nos dan la equivalencia de kilogramos. Por suerte podemos utilizar el mtodo que creamos en el paso anterior y crear un nuevo mtodo que convierta de kilogramos a libras. Contesta las siguientes preguntas en un archivo de texto: Qu tipo de acceso va a tener el mtodo? Qu tipo de mtodo es?

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

103

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Qu valor de retorno tiene? Qu nombre tiene? Qu parmetros recibe? Utilizando tus respuestas podemos ver que el mtodo va a ser similar al siguiente:

Fjate que en este caso el parmetro se llama kilograms. Esto es muy importante ya que nos permite saber qu recibe el mtodo. Es muy importante que nuestros parmetros tengan nombres claros que nos digan qu es lo que recibe el mtodo para que no nos confundamos al llamarlos. Ahora al mandar llamar este mtodo debemos realizar un cambio intermedio utilizando el mtodo anterior. Podramos estar pensando que sera mucho ms lgico crear un mtodo que directamente convirtiera de gramos a libras, pero s tiene sentido que lo hagamos por partes. Muchas veces cuando nos dan los requerimientos del usuario no estn muy claros y los mtodos podran cambiar aunque no cambie la lgica del programa. Por ejemplo, podra ser que al inicio el usuario considere que los resultados son correctos si tienen tres decimales correctos y no es necesario utilizar medidas muy precisas pero al crecer el programa solicita mayor precisin y si no tuvieramos todo dividido por mtodos tendramos que modificar varias frmulas que probablemente tendramos que calcular a mano. Para ejemplos ms complicados esto tiene mucho ms sentido. Por ejemplo, podramos crear un mtodo que leyera todos los usuarios de una base de datos y los ponga en una lista, si la base de datos cambia no necesitamos cambiar todo el programa sino nicamente el mtodo. Ahora utilicemos el mtodo que acabamos de crear para convertir de gramos a libras utilizando el siguiente cdigo:

Como puedes ver no tenemos que hacer muchos cambios del cdigo anterior y en caso de que algn da el rey decida cambiar el valor de las libras entonces podemos realizar slo un cambio al mtodo toPounds() y nuestro programa seguira funcionando de manera correcta. Paso 3: Utilizando los conocimientos sobre mtodos que hemos visto en este ejercicio completa los ltimos dos botones que faltan. Recuerda responder las siguientes preguntas para cada uno de los mtodos que hayas creado y ponerlas en el archivo de texto: Qu tipo de acceso va a tener el mtodo? Qu tipo de mtodo es? Qu valor de retorno tiene? Qu nombre tiene? Qu parmetros recibe?

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

104

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

PRACTICA 09. Programacin Modular Graphics


Instrucciones Paso 1: Corre NetBeans y crea un nuevo proyecto al que llamaras Sesion7. Agrega un JFrame llamado MainFrame. Debers tener una estructura de proyecto similar a la que se ve en la siguiente fotografa:

Paso 2: Crea la siguiente interfaz grfica:

El control de la parte de abajo se llama JTextArea y es un JTextField que puede tener ms de un rengln. Al agregar un JTextArea automaticamente se agrega un JScrollPane que son las barritas de los lados con las que podemos bajar el texto. En el Navigator podemos ver que el JTextArea est dentro de un JScrollPane. Una vez que tengamos todos los controles debemos ponerles los siguientes nombres (recuerda que puedes utilizar F2 para que sea ms fcil cambiarles el nombre):

Recuerda que para que el JFrame se muestre debes poner la lnea setVisible(true); dentro del constructor de la clase, despus de la llamada al mtodo initComponents(). NETBEANS PROGRAMACION ORIENTADA A OBJETO

105

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Una vez que hayas creado la ventana recuerda agregar la lnea new MainFrame() dentro del mtodo main() de la clase Main. Paso 4: Nuestro programa va a calcular el rea de un anillo, que se calcula mediante restando el rea del circulo interno del rea del circulo externo. Para poder hacer esto nuestro programa debe calcular el rea del crculo interno y del crculo externo utilizando el radio. Como esa operacin es repetitiva vamos a ponerla en un mtodo por separado. El mtodo va a llamarse calculateArea(), va a recibir el radio (tipo double) y debe regresar un valor tipo double que representa el rea. En cdigo podramos verlo como el siguiente mtodo:

Paso 5: Ahora s, vamos a crear el mtodo actionPerformed() de btnCalculate. En el modo de diseo haz click derecho sobre el botn y selecciona Events -> Action -> actionPerformed. Dentro del cdigo debemos obtener los valores de los radios, podemos utilizar el siguiente cdigo para lograrlo:

Paso 6: Una vez que tengamos los datos debemos validar que el radio interior sea menor o igual que el radio exterior. Esto podemos lograrlo mediante un if, y slo si son vlidos debemos de calcular las reas y restarlas. El resultado final vamos a mostrarlo en el JTextArea de la parte inferior. En cdigo podramos verlo como lo siguiente:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

106

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Prueba que todo funcione correctamente en tu aplicacin compilando el programa y corrindolo. Hasta este momento debe poder calcular el rea de un anillo y mostrarla en el JTextArea que pusimos para mostrar resultados, tambin debe poder validar errores. Paso 7: Aunque nuestro programa ya cumple con su objetivo muchas veces eso no es suficiente para nuestros clientes que la mayora de las veces quieren algo un poco ms vistoso. En este momento es en el que podemos utilizar Graphics para dar un valor agregado a nuestros programas. Como vimos en el autoestudio podemos utilizar la clase Graphics para pintar sobre un componente, por lo que no podemos pintar sobre un JFrame (tcnicamente s se puede pero no se debe hacer por la implementacin de Java del JFrame). Este componente puede ser cualquier componente de Swing, aunque regularmente se utiliza un JLabel o un JComponent por ser muy sencillos y ligeros. Por lo tanto para poder pintar debemos crear un componente nuevo que se comporte como JComponent, pero que se dibuje de manera diferente. Para poder hacer esto debemos hacer click derecho sobre el paquete sesion7 y seleccionar New -> BeanForm.

Si no se encuentra BeanForm en el men debemos seleccionar New -> File/Folder y dentro de ese men seleccionar BeanForm como se ve en la imagen:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

107

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Nuestro Bean va a llamarse RingBean y su superclase debe ser javax.swing.JComponent como se ve en las siguientes fotografas:

Paso 8: Al terminar aparecer un error de que no puede pintar la forma porque no es un JavaBean. Esto es porque todava no hemos programado cmo debe de pintarse el JComponent y NetBeans todava no lo puede dibujar. Haz click en source y vete al cdigo. Pon el cursor en algn lugar en blanco fuera de un mtodo, pero dentro de la clase y presionar Ctrl+Space para que aparezca el dilogo de autocompletar. Ah debes escribir paintComponent y se seleccionar la entrada que se ve en la fotografa:

Es muy importante que sea paintComponent (sin la s) y que a la derecha diga override. Una vez que lo hayas encontrado presiona enter y se construir automticamente el mtodo paintComponent() que tiene un parmetro de tipo Graphics con el que podemos dibujar sobre el componente. Presiona Alt+Shift+F para resolver las dependencias (Graphics todava no estaba incluido en los imports) y dentro de ese mtodo pon el siguiente cdigo:

La palabra clave this se refiere a este componente. Una vez que creamos la instancia y lo ponemos en la ventana this.getWidth() debe devolvernos el ancho de ese componente dentro de la ventana. Obtenemos el ancho y el alto del componente para garantizar que todava estamos dibujando dentro de l. De acuerdo a tu autoestudio para qu crees que funciona el cdigo anterior? Compila tu programa para revisar que no haya ningn error y para garantizar que el Bean ha sido construido. Ahora debemos agregar nuestro RingBean a la paleta de NetBeans para poder ponerlo en la ventana que NETBEANS PROGRAMACION ORIENTADA A OBJETO

108

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
hicimos anteriormente. Podemos lograr eso haciendo click derecho sobre el Bean en el explorador de proyectos, seleccionando Tools -> Add to Palette.

En la pantalla que aparece seleccionamos la carpeta de Beans y regresamos a MainFrame en modo de diseo. Podemos ver que en la paleta dentro de la seccin de Beans ha aparecido nuestro Bean, as que ahora podemos agregarlo a la ventana.

Agrega el componente a la ventana. Si en el tiempo de diseo parece que tu Bean todava no tiene forma no te preocupes, lo que pasa es que NetBeans no vuelve a leer los Beans sino hasta volver a empezar. Esto es un error en el que estn trabajando los programadores de NetBeans, pero no afecta tu proyecto. Despus de agregar el RingBean cambile el nombre a ring de la misma manera que lo haras con otros componentes. Compila y corre el programa y podrs ver una ventana similar a la siguiente (dependiendo del lugar en que pusiste tu control):

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

109

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Nuestro control ya est dibujando un rectngulo, pero ahora lo que queremos hacer es que dibuje los anillos interior y exterior. Para poder hacer esto es necesario modificar RingBean. Primero vamos a crear un par de variables que guarden los valores de los radios, despus debemos crear un mtodo que reciba los radios que se deben dibujar y despus manden dibujar utilizando estos datos. Copia el siguiente cdigo dentro de RingBean:

En este cdigo vamos a ver varias cosas interesantes. Primero que nada fjate que las variables tienen el modificador private para que otros objetos no puedan acceder a sus variables ms ntimas. Esto es por algo llamado encapsulacin que vamos a ver mucho ms a profundiad al tocar el tema de programacin orientada a objetos. Adems es importante notar que las variables son de tipo int, porque Graphics no puede manejar los tipos de dato double. En el mtodo setRadius() podemos ver que utilizamos la palabra clave this para referirnos a la variable del objeto, a diferencia de la variable pasada como parmetro, esto tambin es un comportamiento que analizaremos ms detalladamente al ver programacin orientada a objetos. En pocas palabras: this.innerRadius == innerRadius de la clase innerRadius == innerRadius el parmetro Por ltimo podemos ver el mtodo repaint() que le dice al componente que ha sucedido algo que amerita que vuelva a pintarse. Este mtodo se encarga de revisar qu fue lo que sucedi y llamar los mtodos adecuados para volver a dibujar el componente. Una vez que hemos echo esto debemos modificar el mtodo paintComponent() para que utilice estos valores y dibuje dos crculos en lugar del rectngulo que dibuja actualmente. Podemos lograr esto mediante el siguiente cdigo:

Este mtodo puede parecer un poco complicado. Podemos ver que primero calculamos el centro del componente (dividiendo el ancho entre dos y el largo entre dos). Una vez que hemos echo eso vamos a poner el punto inicial en el centro menos el radio (con esto estamos garantizando que el centro del crculo est a la mitad de la ventana porque el crculo mide dos veces el radio) y por ltimo estoy poniendo el ancho y alto como el doble del radio. Podemos verlo grficamente:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

110

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Por ltimo slo debemos mandar llamar el mtodo setRadius() dentro del actionPerformed del botn btnCalculate. Podemos hacerlo de la siguiente manera:

Adems de los mtodos drawX (como drawRect(), drawOval()), la clase Graphics tambin tiene mtodos fillX (como fillRect() y fillOval()). Estos mtodos dibujan una figura que est rellena de color. Para poder cambiar el color del pincel que utilizamos para pintar sobre el bean puedes utilizar el mtodo setColor() de la clase Graphics (es decir, lo utilizas g.setColor(Color.GREEN), revisa el men de autocompletar de NetBeans para saber algunos otros colores que puedes utilizar).

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

111

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

CAPITULO 4. CICLOS.
While El while es una sentencia que ejecuta un bloque de instrucciones cero o ms veces dependiendo de una condicin. Su sintaxis es: while(condicion) { // codigo } Donde condicion es una expresin que puede evaluarse a verdadero o falso (de la misma manera que funciona un if). Fjate que despus del parntesis del while no va un punto y coma. El while va a repetir el cdigo que se encuentre entre llaves mientras la condicin siga siendo verdadera. Las instrucciones se ejecutan de manera secuencial siempre de arriba hacia abajo siempre y cuando la condicin sea verdadera (o distinta de cero). Si la condicin se evala como falsa al llegar al while por primera ves las instrucciones no se ejecutan. Ejemplo Revisa el siguiente cdigo

Qu imprimira, entiendes cmo funciona? El cdigo va a imprimir

Otro ejemplo El siguiente cdigo es muy similar al anterior puedes ver en qu son diferentes?

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

112

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Qu suceder cuando se ejecute el cdigo anterior? El programa se cicla, es decir, nunca puede salir del ciclo y continua ejecutndose indefinidamente. Esto sucede porque la variable de control i nunca se incrementa. Control de ciclos Una gran parte de los ciclos que vamos a utilizar utilizan algo llamado contador. Un contador es una variable que se va acumulando hasta llegar a un valor tope, en el que se realiza la ltima iteracin del ciclo. Es decir, si queremos crear un ciclo que vaya desde el uno hasta el diez debemos iniciar nuestro contador en uno y continuar ejecutando mientras sea menor o igual a diez (o iniciarla en cero y contar mientras sea menor que diez. Como veremos ms adelante, esto ltimo es lo que se hace normalmente). Do while Ya estuvimos utilizando el ciclo while para realizar una misma accin varias veces, pero adems de este ciclo hay otros dos ciclos que nos son muy tiles a la hora de programar. El ciclo do while permite repetir la ejecucin de su cdigo mientras una condicin sea verdadera. La diferencia entre este ciclo y el while radica en el momento en que se evala la condicin. En el ciclo while la condicin se evala al principio, mientras que en el ciclo do while la condicin se evala al final. Como la condicin se revisa al final, despus de haber ejecutado el cdigo entonces garantizamos que el cdigo se ejecuta una o ms veces. En la estructura while, como la condicin se revisa antes de ejecutar el cdigo es posible que no se ejecute nunca. La sintaxis del do while es: do { // codigo } while(condicion); // fijate en el ; El do while tiene la siguiente secuencia de ejecucin: Se ejecuta el cdigo del do while Se revisa la condicin Si la condicin es verdadera se regresa al primer punto Si la condicin es falsa ejecuta la siguiente lnea de cdigo del programa El do while se utilizaba principalmente para crear mens en las aplicaciones de lnea de comandos. Ahora se utiliza con frecuencia para inicializar variables o en la lectura de cierto tipo de archivos de texto. For Como pudiste ver, muchas veces utilizamos ciclos para realizar una accin un nmero de veces conocido (contar hasta 10). El while es un ciclo que nos permite hacer esto, sin embargo no es muy natural (tenemos que declarar un contador y no podemos olvidar aumentarlo). Adems de los ciclos que hemos visto hasta ahora existe un tercer ciclo muy poderoso llamado for. El ciclo for es una estructura de ciclo donde la repeticin est definido precisamente con un contador, por esto nos permite encapsular en una sola instruccin todo el cdigo del contador. La sintaxis del for es la siguiente: NETBEANS PROGRAMACION ORIENTADA A OBJETO

113

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
for (inicializacion; condicion; incremento){ // codigo } La ejecucin del for sucede de la siguiente manera: Se inicializan las variables en la seccin de inicializacion Se evala la condicion Si el resultado es verdadero se ejecuta el cdigo y al final se ejecuta el incremento Si el resultado es falso se termina la ejecucin del ciclo y se contina con la siguiente lnea del programa. El ciclo while y el ciclo for pueden ser intercambiados con facilidad, podemos verlo con el siguiente ejemplo:

Comparacin de ciclos While Do while For

Uso

Cuando no sabemos el nmero de iteraciones 0 o ms veces

Cuando no sabemos el nmero de iteraciones 1 o ms veces Mostrar un men, mostrar mensajes de error mientras el usuario no seleccione una opcin vlida Poco frecuente

Cuando s sabemos el nmero de iteraciones

Nmero de ejecuciones

0 o ms veces

Aplicacin

Cuando la condicin de terminacin no es numrica, por ejemplo, una funcin boolean, tambin es til para lectura de archivos

Contar nmeros, recorrer estructuras de datos (veremos esto ms adelante)

Frecuencia de uso

Frecuente

Muy frecuente

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

114

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

PRACTICA 10.Ejercicios con Ciclos


Instrucciones Paso 1: Responder las preguntas y ejercicios en negritas utilizando ciclos. Ejercicio 1

Qu hace el cdigo anterior? Ejercicio 2

Cuntas veces se ejecutar el cdigo anterior? Cul ser el valor final de x? Ejercicio 3

Qu hace el cdigo anterior? Por qu? Ejercicio 4 Escribe un cdigo que imprima 100 veces "Hola mundo" Ejercicio 5 Escribe la funcin isPrime(int n) que recibe un nmero y debe devolver verdadero o falso dependiendo si el nmero es primo o no. NOTA: Puedes saber si un nmero es primo revisando si todos los nmreos entre 2 y el nmero no son divisibles.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

115

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

PRACTICA 11. Programacin con Ciclos.


Instrucciones

Paso 1: Descarga el esqueleto de la aplicacin. Abre el proyecto en NetBeans, complalo y crrelo para verificar que todo funcione correctamente. Deber aparecer una pantalla similar a la siguiente:

Selecciona el botn del factorial y da click derecho. Dentro del men selecciona events -> action -> actionPerformed. Para poder resolver este problema debemos calcular el factorial de un nmero. Para calcular el factorial debemos multiplicar todos los nmeros desde el uno hasta el nmero del que queremos calcular el factorial. Para hacer esto con un ciclo debemos utilizar una variable especial para guardar el resultado, a la que podemos llamar factorial. Este tipo de variables se conocen como acumuladores y nos permiten guardar resultados intermedios. Los acumuladores son muy utilizados en los ciclos ya que nos permiten realizar operaciones sobre los valores que vamos calculando. Como vamos a acumular un valor sobre esta variable es muy importante iniciarla con un valor. El nmero con el que la empezamos vara dependiendo de la situacin, pero regularmente se selecciona 1 o 0. Como en este caso vamos a realizar multiplicaciones necesitamos empezar con 1 porque si no siempre multiplicaramos por 0. Adems de utilizar un acumulador vamos a utilizar un contador para llevar la cuenta desde el nmero uno hasta el nmero n. En cada iteracin del ciclo vamos a multiplicar el nmero actual por el nmero que llevamos acumulado. En cdigo estamos hablando de lo siguiente: NETBEANS PROGRAMACION ORIENTADA A OBJETO

116

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

Nota: Es muy importante que agregues el incremento al contador, porque de no hacerlo el ciclo jams terminara y el programa se va a trabar. En caso de que corras un programa y se cicle puedes utilizar NetBeans para cancelar la ejecucin. A la izquierda del IDE hay una opcin que dice runtime. Dentro de runtime puedes ver todos los procesos que se estn ejecutando en NetBeans y puedes cancelar cualquier haciendo click derecho y seleccionando Terminate Task como se ve en la fotografa:

Compila tu programa y verifica que funcione de manera correcta. Una vez que hayas probado que funciona bien haz click derecho en el segundo botn y selecciona events -> action -> actionPerformed para comenzar a hacer la serie de nmeros hasta n. Dentro del cdigo podemos ver que debemos escribir todos los nmeros desde el 1 hasta n. Esto es muy sencillo, slo debemos irlos guardando en un String e imprimir el String al final.

Compila y corre el programa anterior. Al utilizar este nuevo cdigo notars algo extrao en el resultado. Tiene una coma de ms, esto es porque todos los elementos desde 1 hasta n les estamos dando el mismo tratamiento. Muchas veces en los ciclos tenemos un caso especial al principio o al final, por lo que debemos modificar nuestros ciclos para que terminen antes o empiecen despus. En el cdigo significara quitar la ltima ocurrencia del while (es decir, cuando curr == n) y agregar el codigo al final que solamente agregue el ltimo nmero a la serie, es decir:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

117

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

Compila y corre tu programa para ver que funcione de manera correcta. Al terminar de revisarlo haz click derecho sobre el botn de secuencia de pares y por analoga realiza la serie de pares que debe iniciar en 2 y terminar con el par ms cercano a n (o n en caso de que sea par). Recuerda que en este caso el contador no va a iniciar en uno como en el caso anterior ya que el primer nmero a imprimir es dos. Tambin recuerda que puedes aumentar el contador de dos en dos. Una vez que hayas probado ese mtodo vamos a continuar con el mtodo que imprime una secuencia desde n hasta m. Este mtodo es muy similar a los que hemos manejado hasta ahora. La nica diferencia es que ahora los valores de inicio y final son variables. Tomando esto en cuenta podemos hacer el siguiente cdigo:

Como ya nos dimos cuenta de que los tres mtodos son muy similares entonces nos hemos dado cuenta de que tenemos una oportunidad de modular. Podemos generalizar el problema como un mtodo que recibe tres parmetros (que son los nicos valores que cambian), el inicio de la serie, el final de la serie y el incremento. El mtodo debe validar que el final de la serie sea mayor que el inicio de la serie, y debe lanzar una excepcin en caso de que no sea as. El programa debe mostrar una ventana de error en caso de que esto suceda. El mtodo debe devolver un String con la serie generada. Utilizando tus conocimentos sobre mtodos crea el mtodo String buildSequence(int start, int end, int increment) como acabamos de discutirlo. Despus cambia los mtodos actionPerformed() de tus botones para que utilicen este mtodo. Como puedes ver con este ejemplo, modular puede ahorrarnos muchas lneas de cdigo si pensamos en dnde podemos reutilizar un mtodo. Una vez que hayas terminado el mtodo y probado tu aplicacin vamos a terminar de hacer el ltimo mtodo que falta. En este mtodo debemos obtener la potencia de un nmero utilizando ciclos. Selecciona el botn x^y y presiona click derecho, en el men selecciona events -> action -> actionPerformed. Para poder calcualr la potencia debemos hacer un ciclo que cuente y veces y en cada vuelta multiplique un acumulador por la variable x. Es decir:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

118

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

Compila y corre tu programa. Verifica que todos los botones funcionen de manera adecuada.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

119

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

PRACTICA 12. Tarea: Multiplicacin y Divisin


Instrucciones

Paso 1: Crea un programa de interfaz grfica que tenga dos JLabel con sus respectivos JTextField y dos JButton. Los JLabel deben llamarse lblA y lblB, los JTextField txtA y txtB, los JButton btnMult y btnDiv.

Paso 2: Al presionar btnMult debe calcularse al multiplicacin a * b y debe mostrarse el resultado. El programa nicamente puede utilizar el operador matemtico de suma (+). NO puede utilizar multiplicacin (*). Tip: Utiliza ciclos para sumar varias veces un nmero.

Paso 3: Al presionar btnDiv debe calcularse la divisin entera a / b y debe mostrarse el resultado. El programa nicamene puede utilizar el operador matemtico de resta (-). NO puede utilizar la divisin (/).

Tip: Utiliza ciclos para restar varias veces b del nmero a. Cuando el restante sea menor que b ya no se puede dividir.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

120

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

PRACTICA 13. Programacin con Ciclos


Instrucciones Paso 1: Descarga el esqueleto de la aplicacin que vamos a utilizar en esta sesin y abre el proyecto en NetBeans. Ahora compila y corre la aplicacin. Aparecer una pantalla gris con tres divisiones (que tienen controles aunque no estn pintados). Al terminar la aplicacin tendremos una interfaz grfica similar a la siguiente:

En esta aplicacin vamos a utilizar Graphics y lo que hemos aprendido de ciclos para crear estas tres figuras. Primero empecemos con el tablero de ajedrez. Como podemos ver el tablero de ajedrez es una figura muy sencilla compuesta de 64 cuadros ordenados en una cuadrcula de 8 x 8. Vamos a analizar un poco ms a fondo cmo vamos a hacer esto:

Nuestro tablero est formado por cuadros de 25 pixeles cada uno. Eso significa que la esquina superior izquierda (el origen) de el quinto cuadro de la primera fila sera (4 x 25, 0) es decir (100, 0), el sexto cuadro estara en (5 x 25, 0) o (125, 0). Aqui podemos ver un patrn que es muy improtante porque es la base con la que vamos a crear nuestro ciclo. Veamos qu sucede para el quinto cuadro de la sexta fila (4 x 25, 5 x 25) o

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

121

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
(100, 125). Como podemos ver todas las posiciones estn en base a ((columna - 1) x 25, (fila - 1) x 25). Para evitar estar restando a las columnas y las filas podemos utilizar un ndice que empiece de cero en lugar de uno. Lo siguiente que debemos determinar es cules son los lmites de nuestro ciclo. Podramos hacer un ciclo que cuente hasta el 64 y que utilice una divisin y su mdulo para obtener el nmero de fila y columna respectivamente. Podemos verlo con el siguiente cdigo:

NOTA: Es muy importante que no olvides agregar el incremento hasta el final (square++). En caso de que lo hagas, tu programa se va a congelar y va a comenzar a utilizar muchsimos recursos para pintar. Peor an, podra ser que NetBeans intentara dibujar el componente y se quedara atorado por siempre en el ciclo, por lo que tendras que cerrar la aplicacin y perderas tu trabajo. En caso de que corras un programa que tenga un ciclo sin fin puedes utilizar la ventana de runtime como se ve en la imagen (la ventana runtime est junto a la ventana de Projects y en caso de que no se vea puedes utilizar Window -> Runtime o Ctrl+5 para que aparezca):

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

122

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Fjate en el if. Lo que estamos haciendo es ver qu color haba en la celda anterior y pintar la nueva celda con un color diferente. Esto nos sirve para hacer los cuadros blancos y negros alternados. Ahora compila y corre el programa y vers la siguiente imagen

Esto sucede porque los cuadros no siempre deben cambiar de color (como lo estamos haciendo en nuestro programa) sino que al cambiar de fila utilizan el mismo color que antes (si el ltimo de la fila anterior era negro el primero de la fila actual tambin es negro). Podemos revisar con un if si estamos cambiando de fila (cuando col es igual a cero, significa que estamos en una fila nueva). El if puede ser como el siguiente:

Vuelve a probar tu programa y ahora deber dibujar el tablero de manera correcta (en realidad casi correcta, el tablero tiene un cuadrado negro en la esquina inferior derecha y debera ser blanco, puedes cambiar el color con el que empezamos a pintar para corregir esto). Como puedes ver, puedes utilizar el mdulo y la divisin como operaciones complementarias al utilizar ciclos, aunque este enfoque no es muy utilizado. Ms adelante veremos una manera un poco ms sencilla de lograr esto mismo. Una vez que hayas probado tu programa contina con el ejercicio del gusano

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

123

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

Aqui hay varias cosas importantes que tomar en cuenta. Primero que nada, las partes del cuerpo van a estar alternando su posicin vertical entre 0 y 5. Puedes observar que todas las partes del cuerpo nones van a estar arriba, mientras que las pares van a estar abajo, podemos utilizar un if que revise si la parte del cuerpo es non o par y la ponga en la posicin en y que le corresponde. Tambin podemos ver que la cabeza es diferente de las dems partes del cuerpo, por lo que debemos pintarla por separado y fuera de un ciclo. Por ltimo debemos definir cmo va a ser el ciclo que utilicemos para pintar todas las partes del cuerpo. La primera parte despus de la cabeza (primera parte del cuerpo) va a estar en la posicin 1 x 10, la segunda parte va a estar en la posicin 2 x 10, la tercera parte va a estar en la posicin 3 x 10. Ah est el patrn que necesitamos para empezar a pintar. Tomando esto en cuenta podemos utilizar un ciclo que empiece desde 1 (fjate que la primera parte tiene un 1, a diferencia del problema anterior porque aqu la cabeza es diferente). Tomando en cuenta estas consideraciones podemos programar el siguiente cdigo:

NOTA: Recuerda que es muy importante aumentar el acumulador con la lnea pieces++. Fjate en cmo vamos a dibujar 40 piezas empezando el contador (pieces) en 1 y repitiendo el ciclo mientras que pieces sea menor o igual a cuarenta. Tambin fjate que utilizamos una variable y que representa la posicin en y en que vamos a dibujar y el if se va a encargar de cambiarla de 0 a 5 y viceversa segn sea necesario.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

124

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Compila y corre tu cdigo asegurndote de que se dibuje el gusano correctamente. Por ltimo vamos a dibujar el camin.

En teora es muy similar al gusano, slo que ahora en lugar de tener un nmero fijo de piezas del cuerpo tenemos un nmero variable que se encuentra guardado en la variable boxes. Otro detalle importante es que las cajas van separadas unas de otras, por lo que tendremos que poner un poco de separacin.

Como podemos ver el mtodo es practicamente igual que el anterior, pero cambiamos un poco la manera de dibujar los controles. Compila tu aplicacin y correla para probar que funcione adecuadamente. Cambia el nmero de cajas que tiene el camin utilizando la caja de texto (introduce el nmero y presiona enter). Comprime tu carpeta de trabajo y mndala por correo.

Solucin de Ciclos

Paso 1: Responder las preguntas y ejercicios en negritas utilizando ciclos.

Ejercicio 1

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

125

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

Qu imprime el programa anterior?

Ejercicio 2

Qu valor tiene x al terminar el cdigo anterior? Qu valor tiene i? Ejercicio 3

Este ejercicio es un poco ms complicado. El objetivo es decir qu debera decir en lugar de los ... que se encuentran en el System.out.println(). Fjate en el ciclo. Qu est revisando el ciclo? Qu es n, qu es i? Cmo cambia el valor de n, cmo cambia el valor de i? (haz una tabla que te muestre el valor en cada iteracin) Qu significa n % i? Qu debera imprimir el programa en lugar de los ...?

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

126

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Ejercicio 4 MaguSoft est atravesando un periodo muy difcil debido a leyes restrictivas que no le permiten trabajar con la impunidad que al dueo le gustara. Para resolver este problema Magus ha decidido lanzarse como gobernador. Basndose en recientes sucesos en Florida, Magus decidi contratar a un programador para que hiciera un programa de votaciones, el programador logr resolver la mitad del problema con el siguiente cdigo:

Hasta ahora hemos utilizado el mtodo showMessageDialog() de la clase JOptionPane para mostrar dilogos de informacin en que mostramos un mensaje al usuario, pero tambin podemos utilizar el mtodo showConfirmDialog() nos permite mostrar un dilogo de confirmacin en el que se guarda la opcin que seleccion el usuario en una variable de tipo int. Ms adelante podemos utilizar algunas constantes de la clase JOptionPane para saber qu opcin seleccion el usuario. Escribe el cdigo Qu hace el cdigo? El problema es que en las elecciones todas las personas seleccionaron la opcin no, por lo que Magus qued con cero votos. El programador anterior fue catsigado con la pena de excomunin y ahora te han contratado a ti para resolver este inconveniente. Tu tarea consiste en utilizar un ciclo para obligar a las personas a seleccionar la opcin s. El programa debe mostrar la ventana de seleccin hasta que el usuario decida presionar el botn s.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

127

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

PRACTICA 14. Programacin con Ciclos FOR


Paso 1: Descarga el esqueleto de la aplicacin. Abre el proyecto en NetBeans, complalo y crrelo para verificar que todo funcione correctametne. Deber aparecer una pantalla similar a la siguiente:

Utilizando este esqueleto vamos a implementar las mismas funciones que implementamos en ese laboratorio pero ahora en lugar de utilizar el while vamos a utilizar el for. Primero que nada selecciona el botn de elevar a una potencia (x^y) y ve al cdigo. Si recuerdas, en el laboratorio pasado tenamos un cdigo similar al siguiente:

Para poder pasar eso a un ciclo for tendramos que utilizar el siguiente cdigo:

Como puedes ver, de todas maneras tenemos el acumulador y el cdigo dentro del ciclo es casi igual, lo nico que cambia es que en el cdigo del for ponemos todo el manejo del contador en una misma lnea, por lo que la

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

128

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
mayora de las veces es ms sencillo de entender. Utilizando el mtodo de ejemplo convierte todos los ciclos de la sesin de while a ciclos for. Recuerda crear un mtodo para las series de nmeros.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

129

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

PRACTICA 15. Manejo de Componentes 03


6. EJERCICIO GUIADO. JAVA: MODELOS DE CUADRO DE LISTA 1. Realiza un nuevo proyecto. 2. En la ventana principal debes aadir lo siguiente: Un combo llamado cboNumeros. Un botn Pares llamado btnPares. Un botn Impares llamado btnImpares. Una etiqueta con borde llamada etiResultado.

3. Elimina todos los elementos que contenga el combo. Recuerda, debes usar la propiedad model del combo para cambiar sus elementos. 4. Despus de haber hecho todo esto, tu ventana debe quedar ms o menos as:

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


int i; DefaultComboBoxModel modelo = new DefaultComboBoxModel(); for (i=0;i<10;i+=2) { modelo.addElement("N "+i); } cboNumeros.setModel(modelo);

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

130

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO Al igual que pasa con los cuadros de lista, los combos tienen un objeto modelo que es el que realmente contiene los datos. En el caso de los combos, para crear un objeto modelo se usar esta instruccin:
DefaultComboBoxModel modelo = new DefaultComboBoxModel();

A continuacin, se usa el objeto modelo creado y se rellena de datos. Concretamente, se rellena con los nmeros pares comprendidos entre 0 y 10. Observa el uso de la propiedad addElement para aadir un elemento al modelo del combo. Se ha usado un bucle for para hacer la introduccin de datos en el modelo ms fcil. Finalmente, se asocia el modelo al combo a travs de la siguiente lnea, con lo que el combo aparece relleno con los elementos del modelo:

cboNumeros.setModel(modelo);

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

Se pulsa y se rellena automticamente

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


int i; DefaultComboBoxModel modelo = new DefaultComboBoxModel(); for (i=1;i<10;i+=2) { modelo.addElement("N "+i); } cboNumeros.setModel(modelo);

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

131

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 10. Finalmente se programar el actionPerformed del combo para que al seleccionar un elemento este aparezca en la etiqueta. Esto se hace con una simple instruccin:
etiResultado.setText(cboNumeros.getSelectedItem().toString());

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

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

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

CONCLUSIN Un combo, al igual que los cuadros de lista, es un objeto que contiene a su vez otro objeto denominado modelo. El objeto modelo es el que realmente contiene los datos del combo. Combo Modelo Datos

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

132

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 7. EJERCICIO GUIADO. JAVA: TOGGLEBUTTONS 1. Realiza un nuevo proyecto. 2. Crears una ventana como la que sigue teniendo en cuenta lo siguiente:

1. Se aadir una etiqueta con el texto Precio Base. No hace falta cambiarle su nombre. 2. Se aadir un cuadro de texto llamado txtPrecioBase. 3. Se crear un botn Calcular, llamado btnCalcular. 4. Se crear una etiqueta vaca y con borde llamada etiTotal. Use la propiedad font de esta etiqueta para hacer que el texto tenga un mayor tamao.

Debes aadir tambin tres botones, con el texto Instalacin, Formacin y Alimentacin BD respectivamente. Estos botones no son botones normales, son botones del tipo JToggleButton. Usa este tipo de objeto para crearlos.
NETBEANS PROGRAMACION ORIENTADA A OBJETO

133

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO Estos botones, se diferencian de los botones normales en que se quedan pulsados cuando se hace un clic sobre ellos, y no vuelven a su estado normal hasta que no se vuelve a hacer clic sobre ellos. Los tres botones se llamarn respectivamente: tbtnInstalacion, tbtnFormacion, tbtnAlimentacionBD. Aade finalmente tres etiquetas conteniendo los nmeros 40, 200, 200. La primera se llamar etiPrecioInstalacion, la segunda etiPrecioFormacion y la tercera etiPrecioAlimentacionBD.

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

Observa como al pulsar los JToggledButton estos se quedan pulsados.

Si se vuelven a activar se despulsan.

4. Se pretende que el programa funcione de la siguiente forma: El usuario introducir un precio base para el servicio que se vende. A continuacin, si el cliente quiere la instalacin, activar el botn Instalacin. Si el cliente quiere la formacin, activar el botn Formacin. Si el cliente quiere la Alimentacin de Base de Datos, activar el botn Alimentacin BD. Ten en cuenta que el cliente puede querer una o varias de las opciones indicadas. Finalmente se pulsar el botn calcular y se calcular el precio total. Este precio se calcula de la siguiente forma: Precio Total = Precio Base + Precio Extras. El precio de los Extras depender de las opciones elegidas por el usuario. Por ejemplo, si el usuario quiere Instalacin y Formacin, los extras costarn 240 euros.
NETBEANS PROGRAMACION ORIENTADA A OBJETO

134

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 5. As pues, se programar el actionPerformed del botn Calcular de la siguiente forma:
double double double double precio_base; precio_instal; //precio instalacin precio_for; //precio formacion precio_ali; //precio alimentacion

//Recojo datos desde la ventana: precio_base = Double.parseDouble(txtPrecioBase.getText()); precio_instal = Double.parseDouble(etiPrecioInstalacion.getText()); precio_for = Double.parseDouble(etiPrecioFormacion.getText()); precio_ali = Double.parseDouble(etiPrecioAlimentacionBD.getText()); //Ahora que tengo los datos, puedo hacer clculos. //Al precio base se le van aadiendo precio de extras //segn estn o no activados los JToggleButtons double precio_total; precio_total = precio_base; if (tbtnInstalacion.isSelected()) { //Si se seleccion instalacin precio_total = precio_total+precio_instal; } if (tbtnFormacion.isSelected()) { //Si se seleccion formacin precio_total = precio_total+precio_for; } if (tbtnAlimentacionBD.isSelected()) { //Si se seleccion Alimentacin BD precio_total = precio_total+precio_ali; }

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

6. Veamos una explicacin del cdigo: o Primero se crean variables doubles (ya que se admitirn decimales) para poder hacer los clculos. Se extraern los datos de la ventana y se almacenarn en dichas variables. Para ello, hay que convertir desde cadena a double:

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

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

double precio_total; precio_total = precio_base;

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

135

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO A continuacin se le suma al precio_total los precios de los extras si el botn correspondiente est seleccionado. Esto se hace a travs de if. Por ejemplo, para sumar el extra por instalacin:

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

Esto significa: Si el botn instalacin est seleccionado, aade al precio total el precio por instalacin Observa el uso del mtodo isSelected para saber si el botn tbtnInstalacion ha sido seleccionado. Finalmente el resultado se muestra en la etiqueta de total.

7. Comprueba el funcionamiento del programa

Introduce una cantidad (usa el punto para los decimales)

Selecciona los extras que desees.

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

Esta lnea usa el mtodo setSelected para activar al botn tbtnInstalacin. Comprueba esto ejecutando el programa.
NETBEANS PROGRAMACION ORIENTADA A OBJETO

136

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

CONCLUSIN Los JToggleButton son botones que pueden quedarse pulsados. A travs del mtodo isSelected podemos saber si un JToggleButton est seleccionado. Tambin puedes usar el mtodo setSelected para seleccionar o no un botn de este tipo. Realmente, estos botones no suelen ser muy usados, ya que pueden ser sustituidos por Cuadros de Verificacin (JCheckBox) que son ms conocidos.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

137

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 8. EJERCICIO GUIADO. JAVA: SLIDERS

Introduccin a los JSliders La clase JSlider permite crear objetos como el siguiente:

Estos elementos tienen un pequeo recuadro que se puede arrastrar a derecha o izquierda. Segn la posicin del recuadro, el JSlider tendr un valor concreto. El JSlider se puede configurar para que muestre los distintos valores que puede tomar:

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

El valor que tiene un JSlider es el valor al que apunta el recuadro del JSlider. En la imagen anterior, el JSlider tiene un valor de 85. Se ver a continuacin las caractersticas ms interesantes de los JSlider y como programarlos.

Ejercicio guiado 1. Crea un nuevo proyecto. 2. Aade en l un JSLider. Su nombre ser slDeslizador.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

138

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 3. Aade una etiqueta con borde. Su nombre ser etiValor. 4. La ventana tendr el siguiente aspecto:

5. Un JSlider tiene un valor mnimo y un valor mximo. El valor mnimo es el valor que tiene cuando el recuadro est pegado a la parte izquierda, mientras que el valor mximo es el valor que tiene cuando el recuadro est pegado a la parte derecha. El valor mnimo y mximo del JSlider se puede cambiar. Busca las propiedades maximum y minimum del JSlider y asigna los siguientes valores: Mximo: 500 Mnimo: 100

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

139

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 7. Se puede mejorar el JSlider definiendo unas divisiones (medidas) Por ejemplo, haremos que cada 50 unidades aparezca una divisin. Para ello use la propiedad majorTickSpacing y asigne un 50.

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

Medidas cada 50 unidades

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

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

140

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 11. Bien. Ahora se pretende que cuando el usuario arrastre el deslizador, en la etiqueta aparezca el valor correspondiente. Para ello tendr que programar el evento stateChanged del JSlider. El evento stateChanged sucede cuando el usuario arrastra el recuadro del deslizador. En este evento programe lo siguiente: etiValor.setText("El valor es: "+slDeslizador.getValue()); 12. Ejecute el programa y observe lo que sucede cuando arrastra el deslizador. 13. La explicacin del cdigo es la siguiente: a. El mtodo getValue del deslizador nos devuelve el valor que tiene actualmente el deslizador. b. Este valor es concatenado a la cadena El valor es: y es mostrado en la etiqueta a travs del conocido setText.

Movemos aqu.

Y aparece el valor

14. A continuacin se mencionan otras propiedades interesantes de los JSlider que puedes probar por tu cuenta: orientation Permite cambiar la orientacin del JSlider. Podras por ejemplo hacer que el JSlider estuviera en vertical. minorTickSpacing Permite asignar subdivisiones a las divisiones ya asignadas. Prueba por ejemplo a asignar un 10 a esta propiedad y ejecuta el programa. Observa las divisiones del JSlider. snapToTicks Cuando esta propiedad est activada, no podrs colocar el deslizador entre dos divisiones. Es decir, el deslizador siempre estar situado sobre una de las divisiones. Prueba a activarla. paintTrack Esta propiedad permite pintar o no la lnea sobre la que se desliza el JSlider. Prueba a desactivarla.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

141

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO CONCLUSIN Los JSliders son objetos deslizadores. Permiten elegir un valor arrastrando un pequeo recuadro de derecha a izquierda o viceversa. El valor de un JSliders puede ser obtenido a travs de su mtodo getValue. Si quieres programar el cambio (el arrastre) en el deslizador, tienes que programar el evento llamado stateChanged.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

142

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 9. EJERCICIO GUIADO. JAVA: SPINNER Introduccin a los JSpinner La clase JSpinner permite crear cuadros como el siguiente:

Son elementos muy comunes en los programas. A travs de los dos botones triangulares se puede hacer que el valor del cuadro aumente o disminuya. Tambin se puede escribir directamente un valor dentro del cuadro. Ejercicio guiado 1. Crea un nuevo proyecto. 2. Aade en l un JSpinner. Su nombre ser spiValor.

3. Aade una etiqueta con borde. Su nombre ser etiValor. 4. La ventana tendr el siguiente aspecto:

5. Interesa que cuando cambie el JSpinner (ya sea porque se pulsaron los botones triangulares o porque se escribi dentro) aparezca el valor correspondiente dentro de la etiqueta. Para ello, tendr que programar el evento stateChanged del JSpinner. En el evento stateChanged introduzca el siguiente cdigo:
etiValor.setText("El valor es: "+spiValor.getValue().toString());

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

143

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 6. Como puedes observar, lo que hace el programa es recoger el valor que tiene el JSpinner a travs del mtodo getValue y luego se lo asigna a la etiqueta con el clsico setText. (Es muy parecido a los deslizadores) Debes tener en cuenta que el valor devuelto no es un nmero ni una cadena, as que en el ejemplo se ha usado el mtodo toString() para convertirlo a una cadena. 7. Prueba el programa y observa su funcionamiento:
El usuario modifica el valor del JSpinner...

8. Observa como los valores del JSpinner aumentan o disminuyen en 1. Por otro lado, no parece haber un lmite para los valores del JSpinner. La pregunta ahora es: Se puede modificar el contenido del JSpinner de forma que tenga unos valores concretos? La respuesta es s. Veamos como hacerlo. 9. Entra dentro del cdigo del programa y, dentro del constructor, aade este cdigo debajo de initComponents:
SpinnerNumberModel nm = new SpinnerNumberModel(); nm.setMaximum(10); nm.setMinimum(0); spiValor.setModel(nm);

10. Este cdigo hace lo siguiente: a. El JSpinner, al igual que los JList y los JComboBox, es un objeto que contiene otro objeto modelo, y es el objeto modelo el que contiene los nmeros visualizados en el JSpinner. b. En el cdigo anterior se crea un modelo para el JSpinner, se definen los valores que contendr, y luego se asigna al JSpinner. Estudiemos las lneas del cdigo. c. La primera lnea crea un modelo llamado nm. Los modelos de los JSpinner son del tipo SpinnerNumberModel. Necesitars incluir el import correspondiente (atento a la bombilla) d. En la segunda lnea se define como valor mximo del modelo el 10, a travs de un mtodo llamado setMaximum. e. En la tercera lnea se define como valor mnimo del modelo el 0, a travs de un mtodo llamado setMinimum. f. Finalmente se asigna el modelo creado al JSpinner. g. Este cdigo, en definitiva, har que el JSpinner muestre los valores comprendidos entre 0 y 10.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

144

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 11. Prueba el programa y observa los valores que puede tomar el JSpinner.

Ahora los valores estn comprendidos entre 0 y 10

12. Vamos a aadir otra mejora. Cambie el cdigo del constructor por este otro. (Observa que solo se ha aadido una lnea):
SpinnerNumberModel nm = new SpinnerNumberModel(); nm.setMaximum(10); nm.setMinimum(0); nm.setStepSize(2); spiValor.setModel(nm);

13. La lnea aadida es:


nm.setStepSize(2);

Esta lnea usa un mtodo del modelo del JSpinner que permite definir el valor de cambio del JSPinner. Dicho de otra forma, esta lnea hace que los valores del JSpinner salten de 2 en 2. 14. Ejecuta el programa de nuevo y observa como cambian los valores del JSpinner. 15. El modelo del JSpinner tiene tambin un mtodo llamado setValue que permite asignar un valor inicial al modelo. Pruebe a usar este mtodo para hacer que el JSpinner muestre desde el principio el valor 4. CONCLUSIN Los JSpinners son objetos que permiten seleccionar un nmero, ya sea escribindolo en el recuadro, o bien a travs de dos botones triangulares que permiten aumentar o disminuir el valor actual. Los JSpinners son objetos con modelo. Es decir, este objeto contiene a su vez otro objeto modelo que es el que realmente contiene los datos. Datos Modelo JSpinner

Para definir el contenido del JSpinner es necesario crear un modelo del tipo SpinnerNumberModel. Se le asigna al modelo los nmeros deseados, y finalmente se une el modelo con el JSpinner. El objeto modelo del JSpinner permite definir el valor mnimo y el valor mximo, as como el intervalo de aumento de los valores.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

145

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 10. EJERCICIO GUIADO. JAVA: SCROLLBARS

Introduccin a las JscrollBars (Barras de desplazamiento) La clase JScrollBar permite crear barras de desplazamiento independientes, como la que se muestra a continuacin:

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

Valor mnimo

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

Decrementa el valor poco a poco (incremento unitario)

Incrementa el valor poco a poco (incremento unitario)

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

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

Al pulsar directamente sobre la barra se incremente en mayor cantidad (incremento en bloque)

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

146

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO Ejercicio guiado 2. Para comprender mejor el funcionamiento de las barras de desplazamiento se crear un proyecto nuevo. 3. Aade en el proyecto una barra de desplazamiento (JScrollBar) y llmala desValor.

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

5. Aade tambin una etiqueta con borde y llmala etiValor. 6. La ventana debe quedar ms o menos as:

7. Interesa que cuando el usuario cambie de alguna manera la barra de desplazamiento, en la etiqueta aparezca el valor de la barra. Para ello, se debe programar el evento AdjustmentValueChanged de la barra de desplazamiento. En este evento programa lo siguiente:
etiValor.setText("El valor es: "+desValor.getValue());

8. Como ves, se coloca en la etiqueta el valor de la barra. El valor de la barra se obtiene con el mtodo getValue. Ejecuta el programa para ver su funcionamiento.
Pulsa aqu y observa como el valor cambia poco a poco

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

147

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

Pero si pulsas aqu el valor cambia en mayor cantidad

9. Sigamos estudiando el programa. Se pide que cambies las siguientes propiedades de tu barra: Minimum Permite asignar el valor mnimo de la barra. Escribe un 50 Maximum Permite asignar el valor mximo de la barra. Escribe un 150

UnitIncrement Permite cambiar el incremento unitario. Escribe un 2.

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

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

148

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 10. Ejecuta ahora el programa y comprueba su funcionamiento:
Si pulsas aqu, el valor se incrementa de 2 en 2, ya que el incremento unitario se configur en 2.

Si pulsas aqu, el valor se incrementa de 20 en 20, ya que el incremento en bloque es de 20.

Si llevas la barra de desplazamiento al mnimo, su valor ser de 50, ya que se configur as con la propiedad minimum

Observa lo que sucede cuando llevas la barra de desplazamiento al mximo: aparece un valor de 145, cuando el valor mximo que asignamos fue de 150 por qu?

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

149

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 11. Tal como se ha indicado anteriormente, pasa algo raro con la barra de desplazamiento cuando esta est al mximo. Se esperaba que alcanzara el valor 150, y sin embargo, el valor mximo alcanzado fue de 145. La explicacin es la siguiente:
Valor mximo (150) *

5 Valor de la barra (145) **

***

* Nuestra barra tiene un valor mximo de 150. ** Sin embargo, el valor de la barra viene indicado por el lado izquierdo del recuadro interno. *** Como el recuadro interno tiene un ancho definido a travs de la propiedad VisibleAmount, el valor mximo que la barra puede alcanzar es de: Valor = ValorMximo Ancho del recuadro. Es decir, Valor alcanzable = 150 5 = 145

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

CONCLUSIN Las JScrollBars son barras de desplazamiento independientes. Al igual que los JSliders, las JScrollBars tienen un valor concreto, que puede ser obtenido a travs del mtodo getValue. Entre las caractersticas programables de una barra de desplazamiento, tenemos las siguientes: - Valor mnimo (propiedad Minimum) - Valor mximo (propiedad Maximum) - Incremento unitario (propiedad UnitIncrement) - Incremento en bloque (propiedad BlockIncrement) - Tamao del recuadro de la barra (propiedad VisibleAmount)

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

150

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 11. EJERCICIO GUIADO. JAVA: BARRA DE MENUS

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

Ejercicio guiado 1. Veamos como aadir una barra de mens a nuestras aplicaciones. En primer lugar, crea un proyecto con el NetBeans. 2. Aade a tu ventana un objeto JMenuBar

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

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

5. Aprovecha el Inspector para cambiar el nombre al objeto JMenuBar. Llmalo barraMenus. 6. Cambia tambin el nombre al objeto JMenu. Asgnale el nombre menuArchivo. El Inspector tendr el siguiente aspecto:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

151

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

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

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

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

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

152

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

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

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

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

14. Ya tenemos creada la barra de mens (JMenuBar) con sus opciones principales (JMenu). Ahora se tendrn que definir las opciones contenidas en cada opcin principal. Por ejemplo, crearemos las opciones contenidas en el men Archivo. 15. Haz clic con el botn derecho sobre el objeto menuArchivo y activa la opcin Aadir JMenuItem.

Los JMenuItem son objetos que representan las opciones contenidas en los mens desplegables de la barra de mens.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

153

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 16. Aade un JMenuItem ms al menuArchivo y luego cambia el nombre a ambos. Sus nombres sern menuItemAbrir y menuItemGuardar. El aspecto del Inspector ser el siguiente:

17. Usa ahora la propiedad Text de ambos JMenuItem para asignarles un texto. El primero tendr el texto Abrir y el segundo el texto Guardar. 18. Ya podemos ejecutar el programa para ver que es lo que se ha conseguido. Use el men:

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

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

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

154

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 20. Aada un nuevo JMenuItem al men Archivo y ponle el nombre menuSalir. El texto de esta opcin ser Salir (use su propiedad text) El aspecto del Inspector ser el siguiente:

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

Observa el efecto que produce el separador.

22. Un JMenu representa las opciones principales de la barra de mens. A su vez, un JMenu contiene JMenuItem, que son las opciones contenidas en cada opcin principal, y que se ven cuando se despliega el men. Sin embargo, un JMenu puede contener a otros JMenu, que a su vez contendrn varios JMenuItem. Usando el botn derecho del ratn y la opcin Aadir, aade un JMenu dentro de menuEdicion:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

155

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 23. Llama al nuevo JMenu menuColores y asignale el texto Colores.

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

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

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

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

156

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 27. Marque en el inspector el objeto menuItemRojo y acceda a su evento ActionPerformed. Dentro de l programe este sencillo cdigo: this.getContentPane().setBackground(Color.RED); Este cdigo cambia el color de fondo de la ventana a rojo. 28. Compruebe el funcionamiento de la opcin Rojo del men ejecutando el programa. 29. Programa tu mismo las opciones Verde y Azul.

CONCLUSIN Las barras de mens son un conjunto de objetos de distinto tipo que se contienen unos a los otros: La barra en s est representada por un objeto del tipo JMenuBar. La barra contiene opciones principales, representadas por objetos JMenu. Las opciones principales contienen opciones que aparecen al desplegarse el men. Esta opciones son objetos del tipo JMenuItem. Un JMenu tambin puede contener otros JMenu, que a su vez contendrn JMenuItems. Tambin puede aadir separadores (JSeparator) que permiten visualizar mejor las opciones dentro de un men.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

157

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 12 EJERCICIO GUIADO. JAVA: BARRA DE HERRAMIENTAS

Barras de herramientas Una barra de herramientas es bsicamente un contenedor de botones y otros elementos propios de la ventana. A travs de estos botones se pueden activar de forma rpida las opciones del programa, las cuales suelen estar tambin incluidas dentro de la barra de mens. Ejercicio guiado 1. Veamos como aadir una barra de herramientas a nuestras aplicaciones. En primer lugar, crea un proyecto con el NetBeans. 2. Aade a tu ventana un objeto JmenuBar (una barra de mens) 3. En la parte superior de tu ventana aparecer esto:

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

158

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 5. Las barras de herramientas son simples contenedoras de objetos. Dentro de ellas se pueden colocar botones, combos, etiquetas, etc. Normalmente, las barras de herramientas contienen botones. As que aade cuatro botones (JButton) dentro de la barra. Solo tienes que colocarlos dentro de ella.

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

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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

159

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 8. Cambia el texto de los botones. Estos contendrn el texto: Uno, Dos, Tres y Cuatro. 9. Ejecuta el programa y observa el resultado.

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

11. Solo como demostracin de esto ltimo, entra en el actionPerformed del primer botn y programa esto:
JOptionPane.showMessageDialog(null,"Activaste el botn uno");

Luego ejecuta el programa y comprueba el funcionamiento del botn.

12. Los botones de la barra de herramientas normalmente no contienen texto, sino que contienen un icono que representa la funcin que realiza. La forma de colocar un icono dentro de un botn es a travs de su propiedad icon. 13. A travs de la propiedad icon de un botn podr seleccionar un fichero de imagen que contenga la imagen a mostrar en el botn. 14. Activa la propiedad icon del primer botn. Luego elige la opcin Fichero y pulsa el botn Seleccionar Fichero para buscar un fichero con imagen. Nota: Busca un fichero de imagen que sea del tipo .gif o .jpg. Nota: Procura que la imagen sea pequea. Nota: Se recomienda buscar imgenes .gif en Internet para practicar.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

160

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

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

CONCLUSIN Las barras de herramientas son simplemente contenedores de objetos. Normalmente botones. Los elementos de la barra de herramientas se manejan de la misma forma que si no estuvieran dentro de la barra. Lo normal es hacer que los botones de la barra no tengan texto y tengan iconos asociados.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

161

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 13 EJERCICIO GUIADO. JAVA: MENUS EMERGENTES

El evento mouseClicked El evento mouseClicked es capaz de capturar un clic del ratn sobre un determinado elemento de la ventana. Este evento recibe como parmetro un objeto del tipo MouseEvent, y gracias a l se puede conseguir informacin como la siguiente: Qu botn del ratn fue pulsado. Cuantas veces (clic, doble clic, etc) En qu coordenadas fue pulsado el botn. Etc.

Se puede usar esta informacin para saber por ejemplo si se puls el botn derecho del ratn, y sacar en este caso un men contextual en pantalla. En este ejercicio guiado se estudiarn las posibilidades del evento mouseClicked y se aplicarn a la creacin y visualizacin de mens contextuales (o emergentes)

Ejercicio guiado 1. Crea un nuevo proyecto. 2. No hace falta que aada nada a la ventana. 3. Programaremos la pulsacin del ratn sobre el formulario, as que haga clic sobre el formulario y active el evento mouseClicked. 4. Observe el cdigo del evento:
private void formMouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: }

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

5. Dentro del evento programe lo siguiente:


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

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

162

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO 6. Ejecuta el programa y haz clic sobre el formulario con el botn derecho, con el izquierdo y con el central. Observa el resultado. 7. Ahora quizs puedas comprender el cdigo anterior. En l, se usa el mtodo getButton del objeto evt para saber qu botn se puls. El mtodo getButton devuelve un entero que puede ser 1, 2 o 3 segn el botn pulsado. 8. Se puede aprovechar el mtodo getButton para controlar la pulsacin del botn derecho del ratn y as sacar un men contextual. Pero antes, es necesario crear el men. 9. Agrega a tu formulario un objeto del tipo JPopupMenu. Estos objetos definen mens emergentes. 10. Los objetos JPopupMenu 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. Llmalo menuEmergente. 12. Los mens emergentes se crean igual que las opciones de mens normales, aadiendo con el botn derecho del ratn objetos JMenuItem. 13. Aada al men emergente tres JMenuItem, y asgneles los siguientes nombres a cada uno: menuRojo, menuVerde, menuAzul. El inspector debera tener el siguiente aspecto:

14. Tienes que cambiar la propiedad text de cada opcin del men. Recuerda que esta propiedad define lo que aparece en el men. Asignars los siguientes textos: Rojo, Verde y Azul. 15. El men emergente ya est construido. Ahora tenemos que hacer que aparezca cuando el usuario pulse el botn derecho del ratn sobre el formulario. Para ello, entraremos de nuevo en el evento mouseClicked del formulario y cambiaremos su cdigo por el siguiente:
menuEmergente.show(this,evt.getX(),evt.getY());

16. Este cdigo significa lo siguiente: El mtodo show le da la orden al menuEmergente para que se muestre. El mtodo show recibe tres elementos: por un lado la ventana donde acta (this) Por otro lado la posicin x donde debe mostrarse el men. Esta posicin es aquella donde se puls el ratn, y se puede conseguir gracias al mtodo getX del objeto evt.
PROGRAMACION ORIENTADA A OBJETO

NETBEANS

163

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO Por ltimo se necesita la posicin y. Esta posicin se puede conseguir gracias al mtodo getY del objeto evt. Es decir, decidimos mostrar el men emergente justo en las coordenadas donde se hizo clic.

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 opcin suceda algo, solo hay que activar el mtodo actionPerformed del JMenuItem correspondiente. Por ejemplo, active el actionPerformed del menuRojo y dentro programe lo siguiente:
this.getContentPane().setBackground(Color.RED);

19. Ejecuta el programa y comprueba lo que sucede al pulsar la opcin Rojo del men contextual. CONCLUSIN Los mens contextuales son objetos del tipo JPopupMenu. Estos objetos contienen JMenuItem al igual que las opciones de men normales. Cuando se asigna un JPopupMenu a un formulario, no aparece sobre la ventana, pero s en el inspector. Para hacer que aparezca el men emergente, es necesario programar el evento mouseClicked del objeto sobre el que quiera que aparezca el me. Tendr que usar el mtodo show del men emergente para mostrar dicho men.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

164

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

PRACTICA 16. No Strings Attached


Paso 1: Descarga el esqueleto de la aplicacin. Abre el proyecto en NetBeans, complalo y crrelo para verificar que todo funcione correctamente. Deber aparecer una pantalla similar a la siguiente:

Paso 2:

La empresa MaguSoft ha desarrollado un moderno scanner para obtener una cadena de cromosomas que consiste de los caracteres 'X' y 'Y'. Los ms brillantes cientficos han analizado miles de cadenas de caracteres, pero han llegado a la conclusin de que es un trabajo repetitivo y complicado que no es merecedor de sus intelectos. En vista de esto han decidido contratarte para desarrollar un sistema que analice una cadena de caracteres que representa la cadena de cromosomas y que cuentes el nmero de 'X' y el nmero de 'Y' que se encuentran en la cadena. Los cientficos te informan que el sexo de un individuo puede ser determinado mediante esta cadena obteniendo el nmero de X y de Y y comparndolos mediante las siguientes dos reglas: #Y >= #X: El indidivuo es del sexo masculino #Y < #X: El individuo es del sexo femenino Otro problema serio que enfrentan los cientficos es que el scanner regresa mucha basura en las cadenas de caracteres por lo que necesitan una manera de limpiar las cadenas. Las cadenas de caracteres nicamente deben contener los caracteres 'X' y 'Y', todos los dems caracteres deben ser descartados. Para poder resolver el primer problema vamos a crear tres mtodos, uno que regrese el nmero de X que tiene la cadena, uno que regrese el nmero de Y que tiene la cadena y un ltimo mtodo que utilice estos dos para devolver un String con el sexo correspondiente. Para poder recorrer una cadena caracter por caracter utilizamos

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

165

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
el mtodo charAt(int index) de la clase String, que nos devuelve el caracter que se encuentra en la posicin index del String (el ndice empieza en 0). Como el ndice empieza en cero sucede una cosa curiosa, el String "hola" tiene un largo de 4, pero el ndice de la letra h es 0 y de la letra a es 3, por lo que el ciclo que creamos siempre debe ir desde cero hasta el largo del String menos uno (o lo que es lo mismo, debe correr mientras sea menor que el largo). Tomando esto en cuenta vamos a crear el siguiente mtodo:

Basndote en este mtodo puedes crear el mtodo getY(String chromosomes) que debe contar el nmero de 'Y' que tiene la cadena de caracteres recibida como parmetro. Con estos dos mtodos tambin podrs crear el mtodo getSex(String chromosomes) que debe utilizar los dos mtodos creados anteriormente y devolver "Hombre" o "Mujer" de acuerdo al nmero de cromosomas X y cromosomas Y de la cadena. En el
actionPerformed() del botn debes mandar llamar este ltimo mtodo y mostrar el resutlado en un message dialog. El segundo problema es similar, pero tiene un detalle muy importante. Hay que recordar que un String es inmutable, por lo que no podemos utilizar un mtodo que remueva los caracteres que sobran sino debemos ir revisando cada caracter y agregarlos a otro String en el que guardemos slo el resultado con caracteres vlidos.

Paso 3:

En el siguiente ejercicio vamos a obtener una cadena de caracteres y contar el nmero de veces que se repite un caracter. Como puedes imaginarte este mtodo es muy similar a getX() o getY(), pero en este caso el

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

166

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
mtodo debe ser ms general. Adems es importante realizar algunas validaciones, como que el segundo JTextField no tenga ms que un solo caracter. Para poder obtener el nmero de caracteres que tiene una cadena puedes utilizar el mtodo length(), con lo que podras saber si contiene un solo caracter. Despus puedes utilizar el mtodo charAt() para obtener el caracter que est en la primera posicin (recuerda que el ndice empieza de 0) y crear un mtodo genrico count(String s, char c) que cuente el nmero de veces que aparece el caracter pasado como parmetro en el String pasado como parmetro.

Paso 4:

Adems de los mtodos que hemos utilizado hasta el momento, Java cuenta con muchos mtodos especiales de utilera, con los que podemos crear un String nuevo con ciertas caractersticas especiales basndonos en otro String. Un ejemplo de estos mtodos es el mtodo toUpperCase() que nos devuelve un String igual que el String que manda a llamar el mtodo pero con todas las minsculas cambiadas por sus equivalentes en maysculas. Sabiendo esto podemos construir el mtodo que cambia a maysculas:

Por ltimo cuenta el nmero de vocales que tiene el String utilizando el mtodo que creamos en el paso 3 y muestralo en un message dialog.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

167

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

PRACTICA 17. Cmo nos arreglamos?


Instrucciones Paso 1: Crea un nuevo programa de Java que tenga una ventana llamada MainFrame. Recuerda agregar la lnea setVisible(true) en el constructor de la ventana y llamar el constructor desde el mtodo main(). En esta ventana agrega cinco JButton y un JTextField como se ve en la siguiente imagen:

Lo primero que debemos hacer es crear un arreglo que tenga alcance global en toda la clase, para hacer esto debemos declararlo debajo de la lnea en que declaramos la clase de la siguiente manera:

Una vez que ya declaramos un arreglo que podemos utilizar en toda la clase vamos a implementar los mtodos de arreglos de este laboratorio. El primer mtodo que vamos a crear es un mtodo que imprima un arreglo. Este mtodo nos va a devolver una representacin en String del arreglo que pasamos como parmetro. Para lograr esto debemos recorrer todas las posiciones del arreglo e ir guardando los valores en un String, que es el que vamos a devolver. El mtodo puede ser similar al siguiente:

Una vez que tenemos este mtodo vamos a empezar a codificar los botones, el primer botn debe de iniciar el arreglo con diez posiciones y despus poner valores aleatorios entre cero y cien en cada una de las posiciones del arreglo. Para hacer esto vamos a utilizar la clase Random de Java que nos permite obtener nmeros NETBEANS PROGRAMACION ORIENTADA A OBJETO

168

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
aleatorios y vamos a recorrer el arreglo poniendo un nmero aleatorio en cada posicin. Para hacer esto puedes utilizar un cdigo similar al siguiente:

Paso 2: Con estos dos mtodos ya podemos crear todos los dems. Para obtener el nmero mayor del arreglo debemos ir revisando casilla por casilla viendo si el nmero que tiene la casilla es ms grande o ms chico que el nmero ms grande que habamos revisado hasta ese entonces. Aqu debemos pensar en un par de cosas. Primero que nada debemos darnos cuenta de que es muy importante el valor con el que iniciamos nuestro mximo del arreglo. Regularmente se utiliza el valor mnimo que se puede encontrar en el arreglo. Por ejemplo, como nuestro arreglo contiene nmeros del cero al cien utilizaramos el cero. Esto se hace para que garanticemos que cualquier nmero que est en el arreglo es mayor o igual que el nmero actual. Despus debemos tomar en cuenta que debemos realizar una comparacin para ver si el nmero del arreglo es mayor que el que habamos guardado como mximo del arreglo (como se ve en la animacin). Esto en cdigo podemos verlo de la siguiente manera:

Por analoga implementa el mtodo para encontrar el menor del arreglo. NETBEANS PROGRAMACION ORIENTADA A OBJETO

169

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO
Paso 3: Ahora vamos a crear un nuevo mtodo que nos permita obtener la suma de todas las posiciones del arreglo. De la misma manera que hemos hecho hasta ahora vamos a recorrer el arreglo sumando todos los valores que estn guardados y vamos a imprimir ese nmero. Esto podemos lograrlo de la siguiente manera:

Para obtener el promedio de un arreglo debes obtener la suma de todos los valores del arreglo y despus debes dividirlo entre el nmero de elementos que tiene el arreglo. Recuerda que existen mtodos que te permiten saber el tamao de un arreglo. Utilizando estos conocimientos y por analoga implementa el mtodo que imprime el promedio de todos los elementos del arreglo. Recuerda que la divisin de enteros trunca el resultado y no tiene decimales, por lo que vas a necesitar hacer un cast a double antes de poder realizar la divisin. Tarea: Funciones con arreglos Instrucciones Paso 1: Crea un programa en Java que tenga una ventana MainFrame similar a la que utilizamos en el laboratorio de arreglos en la cual hallan cuatro JButton y un JTextField. Los botones debern realizar las siguientes operaciones: Iniciar el arreglo con veinte valores aleatorios y mostrarlo en el JTextField Contar el nmero de valores impares dentro del arreglo y desplegarlo. Por ejemplo, en el arreglo [1, 5, 3, 2, 4] deber mostrar "Hay 3 valores impares en el arreglo". Obtener la suma de los valores pares del arreglo y desplegarla. Por ejemplo, en el arreglo [1, 5, 3, 2, 4] deber mostrar "La suma de los valores pares es: 6". Mostrar dos dialogos de input en los que se pregunten dos valores numricos X y Y. Despus deber sustituir todos los valores del arreglo que sean iguales a X por Y. Es decir, si el arreglo es [1, 5, 3, 2, 4], X es igual a 5 y Y es igual a 7 deber mostrar: "1 7 3 2 4". Para mostrar un dialogo de input puedes utilizar el siguiente cdigo:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

170

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

PRACTICA 18. Welcome to the Matrix


Instrucciones Paso 1: Descarga el esqueleto de la aplicacin. Abre el proyecto en NetBeans, complalo y crrelo para verificar que todo funcione correctametne. Deber aparecer una pantalla similar a la siguiente:

La ventana cuenta con un JPanel que tiene varios JTextField, estos JTextField estn configurados para actualizar automaticamente una matriz que se llama matrix y est declarada como variable global, con esta matriz es con la que vamos a trabajar todo el resto del proyecto. Ahora haz click derecho sobre el botn suma y despus actions -> actionPerformed para ir al cdigo de la suma. Para poder obtener la suma de una matriz debemos de ir avanzando por todas las posiciones del arreglo, esto podemos lograrlo con dos ciclos for de la siguiente manera:

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

171

INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

En el cdigo anterior hay una cosa interesante que es preciso entender para poder saber cmo funcionan las matrices. En el segundo for podemos ver la instruccin matrix[i].length que quiere decir que obtenga el largo del arreglo en la posicin i de la matriz. Como cada una de las posiciones del arreglo contienen arreglos utilizamos el for de afuera para recorrer el arreglo principal y con el for de adentro recorremos los arreglos que estn contenidos dentro. Esto quiere decir que podemos tratar matrix[0] como si fuera un arreglo normal, por ejemplo, para mandarlo como parmetro de una funcin, tambin quiere decir que los arreglos no necesariamente son rectangulares sino que pueden tener diferente nmero de columnas en cada fila. Como puedes ver recorrer matrices es muy similar a recorrer arreglos la principal diferencia es que utilizamos dos ciclos for para recorrer el arreglo de afuera y el arreglo de adentro. Si tuvieramos una matriz de tres dimensiones querra decir que tenemos un arreglo que contiene arreglos que contienen arreglos, por lo que tendramos que utilizar tres ciclos para recorrerlos. Ahora vamos a crear el mtodo que obtiene el valor absoluto. El valor absoluto de un nmero es el valor numrico de un nmero sin tomar en cuenta su signo. Y est definido como la siguiente funcin:

Tomando esto en cuenta podemos recorrer toda la matriz y si el nmero en la posicin i,j es menor que cero entonces le cambiamos el signo de la siguiente manera:

Al final mandamos llamar printMatrix() que va a poner los valores nuevos de la matriz en los JTextField que se muestran en la interfaz grfica. Por analoga con el ejercicio de la suma de matrices y los valores absolutos, as como los ejercicios de arreglos contesta los dems ejercicios del laboratorio. Comprime tu carpeta de trabajo y mndala por correo.

NETBEANS

PROGRAMACION ORIENTADA A OBJETO

172

Anda mungkin juga menyukai