primer corte netbeans

173
INGENIERIA DE TELECOMUNICACIONES UNIDADES TECNOLOGICAS DE SANTANDER DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO NETBEANS PROGRAMACION ORIENTADA A OBJETO PROGRAMACION ORIENTADA A OBJETOS CON JAVA E IDE NETBEANS UNIDADES TECNOLOGICAS DE SANTADER. INGENIERIA EN TELECOMUNICACIONES

Upload: jymmy21

Post on 14-Aug-2015

332 views

Category:

Documents


14 download

TRANSCRIPT

Page 1: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO

PROGRAMACION ORIENTADA A

OBJETOS CON JAVA E IDE

NETBEANS

UNIDADES TECNOLOGICAS DE SANTADER.

INGENIERIA EN TELECOMUNICACIONES

Page 2: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO

TABLA DE CONTENIDO

CAPITULO 1 INTRODUCCION. 2

PRACTICA 01. Cómo mandar un proyecto 4

CAPITULO 2. INICIACIÓN EN NETBEANS 5

PRACTICA 02. Programación con Variables 14

PRACTICA 03. Manejo de Componentes 01 16

PRACTICA 04. A ritmo de Swing 29

CAPITULO 3. DECISION. 70

PRACTICA 05. Programación con If 73

PRACTICA 06. Programación con switch 78

PRACTICA 07. Manejo de Componentes 03 82

PRACTICA 08. Programación Modular 102

PRACTICA 09. Programación Modular Graphics 105

CAPITULO 4. CICLOS. 112

PRACTICA 10.Ejercicios con Ciclos 115

PRACTICA 11. Programación con Ciclos. 116

PRACTICA 12. Tarea: Multiplicación y División 120

PRACTICA 13. Programación con Ciclos 121

PRACTICA 14. Programación con Ciclos FOR 128

PRACTICA 15. Manejo de Componentes 03 130

PRACTICA 16. No Strings Attached 165

PRACTICA 17. ¿Cómo nos arreglamos? 168

PRACTICA 18. Welcome to the Matrix 171

Page 3: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 2

CAPITULO 1 INTRODUCCION.

Introducción a Lenguajes de Programación

¿Qué son?

� Lenguajes de programación: Herramienta utilizada para escribir programas

� Programa: Conjunto de instrucciones que se ejecutan en una computadora

� Categorías de los lenguajes de programación: � Máquina

� Bajo Nivel (Ensamblador)

� Alto Nivel (Java, C++)

Lenguaje Máquina � 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 programación � Lenguaje de Bajo Nivel:

� Simplifican el proceso de programación.

� Dependen de la arquitectura del procesador.

� Se escriben instrucciones utilizando código alfabéticos conocidos como nemotécnicos.

� Ejemplo: � MOV AX 3

� ADD AX 7

� SUB AX 2

� Lenguajes de alto nivel: � Buscan abstraer la complejidad y permiten introducir código con instrucciones más 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 términos útiles � Compilador: Traduce las instrucciones de un lenguaje de alto nivel a lenguaje máquina.

� Código fuente: Texto que define el comportamiento del programa.

� Compilación: Es el acto de pasar el código fuente a código máquina.

� Código ejecutable: Forma final que toma el programa, es el código que la computadora puede leer y

entender.

Page 4: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 3

Interpretados vs. Compilados � Existen tres tendencias en cuanto a compilación:

� Lenguajes interpretados: El código es leído línea por línea y ejecutado conforme se va leyendo.

Estos programas son lentos porque deben leerse y convertirse a código máquina al correr, pero

tienen la ventaja de que pueden utilizarse en muchas plataformas diferentes porque no

dependen de la máquina. Ejemplos: Perl, PHP y la mayoría de los lenguajes Web.

� Lenguajes compilados: Se convierte el código a código máquina y después se ejecuta. Estos

programas son más rápidos porque no deben ser interpretados, pero pierden flexibilidad porque

dependen de la arquitectura del procesador. Ejemplos: C, C++.

� Compilación intermedia: ¿Qué podemos hacer si queremos tener la flexibilidad de poder correr

en cualquier plataforma, pero no queremos perder la velocidad de la compilación? Podemos

compilar el código a un lenguaje intermedio llamado bytecode y crear una máquina virtual que

pueda traducir el bytecode a código máquina para cada arquitectura diferente. Ejemplos: Java y

toda la plataforma .Net.

Programación orientada a objetos � Es un paradigma de programación 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 programación orientada a objetos todo es un objeto que fue creado de un molde, llamado clase.

Page 5: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 4

PRACTICA 01. Cómo mandar un proyecto Paso 1: Al crear un nuevo proyecto es importante que veas en qué carpeta va a ir. En el diálogo de creación de un nuevo proyecto puedes ver la carpeta en donde indica la fotografía:

Esta carpeta (D:\projects\Prueba) es la carpeta del proyecto. Dentro de ella encontramos toda la información 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 aplicación de Java directamente � nbproject: contiene información 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 cómo construir la aplicación � manifest.mf: es un archivo necesario para el .jar ejecutable de Java, le indica a la máquina virtual cómo

correr el programa Una vez que te encuentres en esta carpeta deberás borrar las carpetas build y dist (ya que regularmente son las más grandes y son muy fáciles de reproducir). Una vez que hayas hecho esto comprime la carpeta del proyecto (D:\projects\Prueba) y ese archivo es el que debes mandar.

Page 6: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 5

CAPITULO 2. INICIACIÓN EN NETBEANS

Variables, Operadores y Constantes

Componentes de un programa

� Identificadores:

� Para poder identificar las variables, constantes y métodos de un programa utilizamos

identificadores.

� Los identificadores son combinaciones de letras, números y algunos signos especiales.

� Ejemplos: pi, matricula, vocales, x, i

� Variables:

� Son identificadores cuyos valores pueden cambiar durante la ejecución del programa. Nos sirven

para guardar valores que queremos utilizar más tarde (muchas veces la información que nos da

el usuario).

� Ejemplos:

int x = 0;

� Constantes:

� Son identificadores que tienen un valor constante durante toda la ejecución 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;

� Instrucción:

� Una instrucción es una unidad ejecutable de código, regularmente controlan el flujo de

ejecución (qué sucede primero).

� Ejemplos: if ... else; while ...

� Declaración 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:

� Numéricos: int, double

� Texto: char, String

� Ejemplos:

� int i = 0;

� double distancia;

� String nick = "Magus"

� Operadores:

� Son símbolos que indican cómo son manipulados los datos. Pueden ser de varios tipos, los más

comunes son:

Page 7: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 6

� Aritméticos (+, -, *, /, etc.)

� Lógicos (&, |, !)

� Relacionales (<, >, ==)

� De asignación (=)

� Ejemplos:

� a = a + b;

� if (lloviendo || quiereLlover)

llevarParaguas = true;

� if (b > 0)

b = sqrt(b);

Operadores aritméticos

Operador Función

+ Suma

Permite sumar números enteros o reales.

- Resta

Permite restar números enteros o reales.

* Multiplicación

Permite multiplicar números enteros o reales.

/ División

Si los dos operadores son números enteros entonces el resultado siempre es un número entero (5 / 3 = 1)

Si cualquiera de los operadores es un número real entonces el resultado es un número real (5.0 / 3 = 1.666)

% Módulo

Nos devuelve el residuo de la división

(4 % 3 = 1, 5 % 3 = 2, 6 % 3 = 0)

Page 8: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 7

Operadores lógicos

Operador Función

&& AND Lógico

Devuelve el valor lógico verdadero si ambos operandos son verdadero

Ejemplo:

if (esBI && tieneProyecto) trabajaTodaLaNoche();

|| OR Lógico

Devuelve el valor lógico verdadero si cualquier operando es verdadero

Ejemplo:

if (tengoDinero || puedoPedirPrestado) comprar();

! NOT Lógico

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 Función

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

Page 9: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 8

Operadores de asignación

Operador Función

= Asignación Simple

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

+= Asignación 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.

-= Asignación 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.

*= Asignación con multiplicación

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.

/= Asignación con división

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 Función

++ 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 después realiza las demás 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 asignación de valores funciona de la misma manera que el incremento.

Page 10: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 9

Prioridades de operadores

Tipos de datos

Nombre Representa Rango Tamaño

byte Número entero -128 a 127 8 bits

short Número entero -32768 a 32767 16 bits

int Número entero -2,147,483,648 a 2,147,483,647 32 bits

long Número entero -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807

64 bits

float Número real 3.4×10-38 a 3.4×1038 32 bits

double Número real 1.7×10-308 a 1.7×10308 64 bits

boolean Booleano Verdadero o falso 1 bit

char Letra \u0000 a \uFFFF

(cualquier carácter de Unicode)

16 bits

Page 11: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 10

Clase String

� Además 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 mayúscula porque

es clase.

� Ejemplo: String nombre = "Magus";

¿Qué es una variable?

� Es un espacio en memoria que nos permite guardar información.

� El tamaño de este espacio en memoria varía dependiendo de la información que que quieras guardar

ahí.

� No es lo mismo guardar un número pequeño que pueda variar entre el 1 y el 10 que guardar el total de

ventas de una compañía internacional.

Variables

Variable Qué Almacena

edad Un número entero

sueldoSemanal Un número con decimales

numeroArticulo Un número entero

totalVentas Un número con decimales

nombreAlumno Una cadena de caracteres

esAzul Un valor booleano (verdadero o falso)

Utilizando variables

� Para poder asignar un valor a una variable es necesario que la variable esté declarada.

� La declaración se hace con la instrucción:

� tipo nombre [= valor];

� Para asignar un valor a una variable utilizamos la instrucción:

� nombre = valor;

� Después podemos utilizar la variable con su nombre.

Page 12: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 11

¿Qué hace el código 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 aritméticos

� Las variables nos sirven para guardar valores que vamos a modificar más adelante utilizando operadores

aritméticos o métodos.

� y = x + 5;

� x++;

� y += 5;

� ¿Recuerdas cómo funcionan los operadores de asignación?

� y += 5 podría escribirse como y = y + 5;

� ¿Recuerdas qué hacía el operador incremento?

� x++; podría escribirse como x += 1; ó x = x + 1;

Actividad Individual

� Cuáles son los valores de las variables al terminarse de ejecutar el siguiente código:

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

posición afecta el resultado, veamos un ejemplo:

Page 13: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 12

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 división entera!)

� 11

Actividad Individual

� Cuáles serían 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

Page 14: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 13

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 implícito y casting explícito.

Casting implícito

� También llamado promoción numérica, sucede cuando un tipo de dato con menor jerarquía es

promovido a un tipo de dato con mayor jerarquía.

� La jerarquía de operadores es la siguiente:

byte->short->int->long->float->double

� En el siguiente código y tiene mayor jerarquía y por lo tanto x va a tener un cast implícito de int

a double.

� Fíjate que el tipo de dato de x no cambia.

Casting implícito

� Otro momento en el que ocurre un casting implícito es al momento de la asignación

� double y = 2 * (12 / 7);

� Podríamos pensar que el resultado es 3.42, pero no estaríamos en lo correcto porque el casting

ocurre hasta el momento de la asignación

El resultado que nos va a dar es 2.0

Casting Explícito

� Algunas veces queremos forzar a una variable a tomar un tipo de dato con mayor jerarquía, por

ejemplo:

� En ese código 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 Explícito. Este operador es el nombre de un tipo de

dato entre paréntesis, por ejemplo:

� y = (double) x;

� El siguiente código 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 operación, y por lo tanto y va a tomar el valor que deseamos:

Page 15: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 14

PRACTICA 02. Programación con Variables Instrucciones Paso 1: Descarga el esqueleto de la aplicación que vamos a utilizar en esta sesión. El archivo está en formato zip, por lo que necesitas descomprimirlo en algún directorio (por ejemplo D:\projects). Abre NetBeans y selecciona la

opción abrir proyecto , aparecerá un diálogo 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 símbolo: ). Selecciona la carpeta y presiona el botón abrir. Al terminarse de cargar el proyecto abre el archivo Main.java, debe aparecer una ventana con el código del programa. Presiona el botón de compilar

(o F11). En la ventana de compilación deben aparecerte varios mensajes de compilación y debe terminar en BUILD SUCCESSFUL. Esto quiere decir que nuestra aplicación compiló de manera adecuada y estamos listos

para correrla. Presiona el botón correr (o presiona F6). Debe aparecer una ventana como la siguiente.

Pon algunos números y prueba la funcionalidad del programa. Como podrás haber notado todos los resultados muestran un cero, porque todavía no están implementadas las funciones que van a mostrar el resultado correcto. Por el momento cierra la aplicación. Paso 2: Ahora vamos a agregar la funcionalidad del programa. Para saber dónde es preciso editar el código 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:

Page 16: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 15

Aquí podemos ver lo que falta por hacer en el proyecto. Selecciona la primera línea del To Do (la que dice Cambiar el código para que sume...) y haz doble click para ir a la sección de código que es preciso editar. Cambia el código de la siguiente manera (es necesario modificar la línea 103):

Además de los operadores aritméticos que ya conoces en este laboratorio utilizamos el operador lógico AND. Como pudiste ver en la presentación el operador lógico AND tiene la propiedad de que devuelve verdadero si y sólo 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 lógicos que hemos visto hasta ahora (&&, ||, !) sólo se pueden utilizar con valores booleanos, pero al utilizarlos con valores numéricos tienen propiedades que son muy útiles en algunos casos (cuando necesitamos optimizar el código). Veamos cómo funciona el operador lógico AND cuando lo aplicamos a un número entero:

Valor Decimal Valor Binario

12 1100

10 1010

12 & 10 1000

Como puedes ver, los operadores lógicos operan a nivel de bits en los valores enteros. Para evitar que los operadores lógicos 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 Enteros Booleanos

AND & &&

OR | ||

NOT ~ !

Como en la calculadora vamos a utilizar valores enteros debes de utilizar el AND para valores enteros, sin embargo la mayoría de las veces vamos a utilizar el AND para valores booleanos porque la fuerza de las operaciones lógicas están 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 analogía al ejercicio de la suma y utilizando los conocimientos que tienes sobre operadores termina de construir los métodos que se te solicitan.

Page 17: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 16

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 según 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 añade un paquete llamado paqueteParking. Y finalmente añade un JFrame llamado Parking. El aspecto de tu proyecto será el siguiente:

2. Tu clase principal es la clase Parking. 3. Se pretende hacer un pequeño programa que controle los coches que van entrando y van

saliendo de un parking. En todo momento el programa debe decir cuantos coches hay dentro del parking. Para ello debes crear una ventana como la que sigue:

Clase Principal

Page 18: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 17

4. Esta ventana contiene lo siguiente:

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

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

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

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

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

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

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

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

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

public class

Page 19: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 18

Seguida del nombre de tu clase principal “Parking”. Debajo de dicha línea es donde se programarán las propiedades de la clase (las variables globales)

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

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

Aquí se declaran las variables globales, también llamadas propiedades de la clase.

Inicialización de la propiedad coches.

Declaración de una variable global int llamada coches.

Page 20: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 19

Inicializamos a cero ya que se supone que cuando arranca el programa no hay ningún 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 pulsación del botón “Entró un coche”. Acceda a su evento actionPerformed y programe esto: coches=coches+1; etiCoches.setText(“”+coches); Como ves, se le añade a la variable coches uno más y luego se coloca su valor actual en la etiqueta.

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

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

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

}

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

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

Page 21: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 20

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

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

15. Finalmente se programará el botón Reiniciar. Este botón, al ser pulsado, debe colocar la

propiedad coches a cero. Programa dentro de su actionPerformed lo siguiente:

coches=0; etiCoches.setText(“0”); Simplemente introduzco el valor cero en la variable global y actualizo la etiqueta.

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

CONCLUSIÓN Las variables globales, también llamadas propiedade s de la clase, son variables que pueden ser usadas desde cualquier evento del programa. Est as variables mantienen su valor hasta que otro evento lo modifique. Las variables globales se declaran justo después de la línea public class. La inicialización de estas variables se realiza en el constructor.

Al pulsar aquí aumentas en uno la propiedad coches.

Al pulsar aquí disminuyes en uno

Page 22: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 21

EJERCICIO GUIADO. JAVA: CENTRALIZAR CÓDIGO El problema de la repetición de código Es muy habitual en Java que varios eventos tengan que ejecutar el mismo código. En este caso se plantea la necesidad de “copiar y pegar” ese código en los distintos eventos a programar: Esta es una mala forma de programación, ya que se necesitara modificar el código, sería necesario realizar la modificación en cada copia del código. Es muy fácil que haya olvidos y aparezcan errores en el programa que luego son muy difíciles de localizar. Lo mejor es que el código que tenga que ser ejecutado desde distintos eventos aparezca solo una vez, y sea llamado desde cada evento: Veamos algunos ejemplos en los que el código se puede repetir y como evitar esta repetición. 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:

Evento 1

Evento 2

Evento 3

Código A

Código A

Código A

Evento 1

Evento 2

Evento 3

Código A

Page 23: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 22

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

Esta ventana contiene los siguientes elementos:

- Una barra de menús a la que puede llamar menuBarra. - La barra de menús contiene un JMenu con el texto “Calcular” y que se puede llamar

menuCalcular - El menuCalcular contendrá tres JMenuItem, llamados respectivamente: menuSumar,

menuRestar, menuBorrar y con los textos “Sumar”, “Restar” y “Borrar”. - Una etiqueta con el texto “Número 1”. (no importa su nombre) - Una etiqueta con el texto “Número 2”. (no importa su nombre) - Un cuadro de texto con un 0 y con el nombre txtNumero1. - Un cuadro de texto con un 0 y con el nombre txtNumero2. - Una etiqueta con el nombre etiResultado. - Un botón “Sumar” con el nombre btnSumar. - Un botón “Restar” con el nombre btnRestar. - Un botón “Borrar” con el nombre btnBorrar. 3. Aquí puedes ver la ventana en ejecución con el menú “Calcular” desplegado:

Page 24: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 23

4. El objetivo de programa es el siguiente:

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

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

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

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

Pulsar Botón Sumar

Activar Calcular – Sumar en el menú

Pulsar enter en el primer cuadro de texto

Calcular la suma y mostrarla en la etiqueta de resultado

Pulsar enter en el segundo cuadro de texto

Page 25: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 24

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

8. Un buen sitio para programar tus procedimientos puede ser debajo del constructor. Puedes

distinguir fácilmente al constructor porque tiene el mismo nombre que la clase que estás programando, o dicho de otro modo, tiene el mismo nombre que la ventana que estás programando: VentanaCalculos.

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 prácticamente la misma estructura que en C. Programe lo siguiente:

Este es el constructor

Este es un buen sitio para crear

Page 26: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 25

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

void Sumar() { .... }

Si estudias las líneas del código, verás que lo que hace es recoger el contenido de los dos cuadros de texto en dos variables de cadena llamadas cad1 y cad2. Luego convierte dichas cadenas en números que almacena en dos variables enteras llamadas a y b. Finalmente calcula la suma en una variable s y presenta el resultado en la etiqueta etiResultado.

11. Hay que destacar que este código no pertenece ahora mismo a ningún evento en concreto,

por lo que no tiene efecto ninguno sobre el programa. Será necesario pues asociar los eventos correspondientes con este procedimiento.

12. Interesa que al pulsar el botón “Sumar” se ejecute la suma, así pues entre en el evento

actionPerformed del botón “Sumar” y añada la siguiente línea:

Sumar();

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

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

Page 27: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 26

Sumar(); 14. También se quiere que al pulsar la tecla enter en el cuadro de texto del número 1 se ejecute la

suma. Por lo tanto, en el evento actionPerformed del cuadro de texto txtNumero1 hay que añadir la siguiente línea:

Sumar();

15. Y como también se quiere que al pulsar la tecla enter en el cuadro de texto del número 2 se

ejecute la suma, también habrá que introducir en su actionPerformed la siguiente línea:

Sumar();

16. Antes de continuar, ejecute el programa, introduzca dos números, y compruebe como se calcula la suma al pulsar el botón Sumar, o al activar la opción del menú Calcular–Sumar, o al pulsar Enter en el primer cuadro de texto, o al pulsar Enter en el segundo cuadro de texto.

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

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

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

actionPerformed btnSumar

actionPerformed menuSumar

actionPerformed txtNumero1

Procedimiento

actionPerformed txtNumero2

Pulsar Botón Restar

Activar Calcular – Restar en el menú Calcular la resta y mostrar el resultado.

Page 28: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 27

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

20. Ahora, es necesario que cuando se activen los eventos indicados antes, estos hagan una

llamada al procedimiento Restar para que se efectúe la resta. Así pues, entre en el evento actionPerformed del botón “Restar” y añada esta línea de código:

Restar();

21. Igualmente, entre en el evento actionPerformed de la opción del menú “Calcular – Restar” y

añada la misma llamada:

Restar();

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

Programa este procedimiento.

actionPerformed btnRestar

actionPerformed menuRestar Procedimiento

Page 29: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 28

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

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

Borrar();

25. Ejecuta el programa y prueba su funcionamiento.

CONCLUSIÓN En java se pueden programar procedimientos al igual que en C. Normalmente, estos procedimientos se programarán debajo del constructo r, y tienen la misma estructura que en C. Se puede llamar a un mismo procedimiento desde dist intos eventos, evitando así la repetición de código.

Programa el procedimiento Borrar...

Page 30: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 29

PRACTICA 04. A ritmo de Swing Instrucciones Paso 1: Para empezar la aplicación vamos a crear un nuevo proyecto al que llamaremos Sesion3. Después de crearlo nos aparece un proyecto vacío 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 convención 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 cómo 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 fácilmente cómo funciona un programa incluso si no lo hicimos nosotros. Al crear el nuevo JFrame aparece la siguiente ventana:

Page 31: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 30

Paso 3: Ahora vamos a agregar algunos componentes al JFrame. Selecciona un label en la paleta haciendo click y luego agrégalo 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 más fáciles de identificar. De la misma manera que antes, a pesar de que los nombres no son importantes para Java, por convención debemos elegir nombres representativos que nos indicen para qué sirve cada uno de los componentes. Además de eso se utiliza que por convención las primeras tres letras indiquen el tipo de componente de la siguiente manera:

Componente Prefijo

JLabel lbl

JButton btn

JTextField txt

JTextArea txt

JPanel pnl

JMenu mnu

JMenuItem mnuItem

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 Nombre

JLabel lblName

JTextField txtName

JButton 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 más 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 fotografía, para cambiar la propiedad text de nuestros controles:

Page 32: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 31

Para encontrar más fácilmente 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 Texto

lblName Nombre:

txtName

btnEnter Entrar

Nota que borramos el texto de txtName para que aparezca vacío. Por último vamos a agregar eventos. Un evento es la manera en que nuestro código 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 botón btnEnter se muestre un diálogo con su nombre. Para hacer esto debemos dar click derecho sobre el botón, seleccionar el submenú events y seleccionar el evento Action -> actionPerformed. Al hacer esto aparece una ventana con código en la que podemos agregar lo que debe realizar nuestro proyecto al hacer click en el botón.

Dentro de esta pantalla vamos a escribir la siguiente línea: JOptionPane.showMessageDialog(this, "Hola " + txtName.getText()); Recuerda agregar los imports como vimos en la primera sesión para evitar que esta línea 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 diálogos, por el momento sólo utilizala aunque no entiendas cómo funciona. Como puedes ver al final estamos utilizando algo llamado concatenación de texto, veamos cómo funciona: "Hola " + "Juan" = "Hola juan" "Có" + "mo" + " " + "han" + " " + "estado?" = "Cómo han estado?" Como puedes observar, al utilizar el símbolo más 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 método es que estamos utilizando el método getText() de nuestro JTextField (llamado txtName). ¿Recuerdas que modificamos la propiedad text para que el JTextField no mostrara nada? Con este método 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 método 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 todavía no hacemos que nuestro JFrame se vuelva visible. Esto lo logramos poniendo la siguiente línea en el constructor, el método que se llama MainFrame():

Page 33: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 32

Por último debes regresar a la clase Main utilizando el explorador de proyectos y agregar la siguiente línea en el método main(), recuerda que el método main() es el punto de inicio de la aplicación, es decir, la primera parte del código 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 método de la misma manera que se veía en la parte de arriba en el constructor. Corre la aplicación y comprueba que funciona de manera adecuada.

Page 34: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 33

15. EJERCICIO GUIADO. JAVA: PANELES DE DESPLAZAMIEN TO Paneles de Desplazamiento Llamaremos paneles de desplazamiento a paneles que contienen elementos tan grandes que no pueden ser mostrados en su totalidad. Estos paneles contienen entonces dos barras de desplazamiento que permiten visualizar el interior del panel de desplazamiento correctamente. Por ejemplo, un panel de desplazamiento podría contener una imagen tan grande que no se viera entera: Los paneles de desplazamiento son objetos del tipo JScrollPane. Ejercicio guiado 1

1. Vamos a practicar con los JScrollPane. Para ello, crea un nuevo proyecto. 2. Añade en el proyecto un JScrollPane.

3. Un JScrollPane, por sí mismo, no contiene nada. Es necesario añadir dentro de él el objeto

que contendrá. Para nuestro ejemplo añadiremos dentro de él una etiqueta (JLabel)

4. El formulario debe tener ahora este aspecto:

5. Si observas el Inspector verás claramente la distribución 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.

Page 35: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 34

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 través de la propiedad icon. La

imagen la introduciremos desde fichero, y elegiremos la siguiente imagen de tu disco duro:

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

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

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

Page 36: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 35

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

11. Ejecuta el programa y compruébalo.

Ejercicio guiado 2 Los JScrollPane no solo están diseñados para contener imágenes. Pueden contener cualquier otro elemento. Vamos a ver, con otro proyecto de ejemplo, otro uso de los JScrollPane.

1. Crea un nuevo proyecto. 2. Añade a la ventana una etiqueta con el texto “Ejemplo 2 de JScrollPane” y un JScrollPane de

forma que esté asociado a los límites de la ventana. Observa la imagen:

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

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

Page 37: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 36

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

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

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

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

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

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

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

Page 38: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 37

Es muy interesante que observes el Inspector. En él podrás observar la distribución de los objetos en la ventana. Podrás ver como el JFrame contiene un JScrollPane (scpDatos) que a su vez contiene un JPanel (panelDatos) que a su vez contiene una serie de etiquetas y cuadros de textos a los que aún no les hemos asignado un nombre:

Page 39: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 38

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

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

10. Ejecuta el programa para entender esto último.

CONCLUSIÓN Los objetos JScrollPane son paneles de desplazamien to. Estos paneles pueden contener objetos mayores que el propio panel de desplazamien to. Cuando esto sucede, el panel muestra barras de desplazamiento para poder visuali zar todo el contenido del panel. Los JScrollPane son ideales para mostrar imágenes, paneles y otros elementos cuyo tamaño pueda ser mayor que la propia ventana.

Page 40: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 39

18. EJERCICIO GUIADO. JAVA: LAYOUTS El problema de la distribución de elementos en las ventanas Uno de los problemas que más quebraderos de cabeza da al programador es el diseño de las ventanas y la situación de los distintos componentes en ellas. Para diseñar más cómodamente las ventanas, Java proporciona una serie de objetos denominados Layouts, que definen la forma que tendrán los elementos de situarse en las ventanas. Así pues, un Layout define de qué forma se colocarán las etiquetas, botones, cuadros de textos y demás componentes en la ventana que diseñamos. Ejercicio guiado “Diseño Libre”

1. Crea un nuevo proyecto en java.

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

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

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

Page 41: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 40

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

5. Este comportamiento de los elementos en la ventana viene dado por una opción del NetBeans

llamada Diseño Libre (Free Design)

El Diseño Libre permite que los elementos de una ventana mantengan una distribución relativa da igual el tamaño que tenga la ventana. Dicho de otra forma, los elementos se redistribuyen al cambiar el tamaño de la ventana. El problema del Diseño Libre es el poco control que se tiene sobre los elementos que se añaden a la ventana. Se puede observar como a veces los elementos no se colocan en la posición que deseamos o como cambian de tamaño de forma inesperada. Todo esto es debido a la necesidad de dichos

Tanto el botón como la etiqueta estarán siempre a esta distancia del borde derecho de la ventana…

El botón siempre estará a esta distancia de la etiqueta…

El botón siempre estará a esta distancia del borde inferior de la ventana…

Siempre se mantienen las distancias relativas definidas en el diseño aunque el tamaño de la ventana cambie.

Page 42: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 41

elementos de mantener unas distancias relativas con otros elementos de la ventana. Cuantos más elementos tengamos en una ventana, más difícil será el colocarlos usando el Diseño Libre.

“AboluteLayout. Posiciones Absolutas”

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

7. En el Inspector de tu proyecto pulsa el botón derecho del ratón sobre el objeto JFrame y activa

la opción Establecer Disposición – AbsoluteLayout.

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 distribución

Page 43: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 42

AbsoluteLayout permite al programador colocar cada elemento donde él quiera, sin restricciones, sin tener en cuenta distancias relativas.

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

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

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

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

“Distribución en línea. FlowLayout”

Page 44: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 43

12. Practiquemos ahora con otro tipo de distribución. Accede al Inspector y pulsa el botón derecho

del ratón sobre el objeto JFrame. Activa la opción Establecer Disposición – FlowLayout.

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

14. Observa la ventana. Los elementos se han colocado uno detrás de otro. Se han colocado “en

línea”. 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, podrás acceder a sus propiedades (los layout

son objetos como los demás) Una de las propiedades del FlowLayout se llama alineación y permite que los elementos estén alineados a la izquierda, derecha o centro. El FlowLayout tiene una alineación centro por defecto.

Page 45: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 44

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

“Distribución en rejilla. GridLayout”

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

18. Cambia el layout del JFrame por un GridLayout:

En el FlowLayout, los elementos intentan siempre estar dentro de la ventana, aunque esta se cambie de tamaño…

Page 46: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 45

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

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

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

Page 47: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 46

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

“BorderLayout”

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

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

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

Con un GridLayout los elementos aparecen en filas y columnas.

Siempre aparecen dentro

Page 48: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 47

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

La ventana tendrá un aspecto parecido al siguiente:

Page 49: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 48

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

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

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

CONCLUSIÓN El diseño de la ventana viene definido por los Layo uts o distribuciones. Diseño Libre – Esta distribución viene activada por defecto en el NetBeans, y define una distribución de componentes en la que se respetan l as distancias entre ellos cuando la ventana cambia de tamaño. AbsoluteLayout – En esta distribución el programador puede coloca r cada elemento en la posición que desee de la ventana. Los distintos ele mentos mantienen su posición aunque la ventana cambie de tamaño, lo que puede hacer que si la ventana se reduce de tamaño algunos elementos no se vean. FlowLayout – En esta distribución los elementos se colocan un o detrás de otro. Los elementos intentarán estar dentro de la ventana aunque esta s e reduzca de tamaño. GridLayout – Esta distribución coloca a los elementos en fila s y columnas. Los elementos siempre estarán dentro de la ventana aunque esta se reduzca de tamaño. BorderLayout – Esta distribución coloca a los elementos en zona s. Los elementos siempre estarán dentro de la ventana aunque esta se reduzca de tamaño.

Con un GridLayout los elementos aparecen zonas.

Siempre aparecen dentro

Page 50: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 49

19. EJERCICIO GUIADO. JAVA: LAYOUTS Y PANELES Técnicas de distribución de elementos en las ventan as A la hora de diseñar una ventana se tienen en cuenta dos cosas:

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

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

JFrame

(BorderLayout o GridLayout)

JPanel 1

(Diseño Libre, AbsoluteLayout o

JPanel 2

(Diseño Libre, AbsoluteLayout o

Componentes Componentes

etc…

Page 51: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 50

Ejercicio guiado

1. Crea un nuevo proyecto en java.

Se pretende crear un proyecto con una ventana de diseño 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 añade un panel (JPanel) a la zona

norte de la ventana.

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

programa.

Panel en la zona norte.

Page 52: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 51

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

6. Añade un nuevo panel en la parte sur de la ventana. Su nombre será panelEstado.

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

Page 53: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 52

7. Si el panel no se coloca en el sitio deseado, se puede seleccionar en el Inspector y activar su

propiedad Dirección, e indicar la zona donde se quiere colocar:

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

Page 54: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 53

8. El Inspector tendrá la siguiente forma ahora:

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

Page 55: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 54

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

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

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

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

Page 56: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 55

(No nos vamos a preocupar en este ejercicio de los nombres de los componentes) 14. Ahora diseña el panel panelVerificación haciendo doble clic sobre él. 15. Asígnale también un layout AbsoluteLayout.

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

al siguiente:

Y el Inspector debe tener un estado similar a este:

Page 57: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 56

17. Ahora se diseñará el panelTitulo. Haz doble clic sobre él. 18. En este caso se le añadirá un FlowLayout. Recuerda que este layout hace que cada elemento

se coloque uno detrás de otro.

19. Añade al panel dos etiquetas como las que siguen. Ponle un borde a cada una:

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

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

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

Page 58: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 57

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

un GridLayout.

22. Marca el GridLayout y asígnale 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. Añade al panelDatos cuatro paneles. Esto lo puedes hacer fácilmente haciendo clic con el botón derecho del ratón sobre el panelDatos en el Inspector y eligiendo la opción Añadir desde paleta – Swing – JPanel.

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

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

Page 59: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 58

PanelEtiqueta1 PanelCuadro1

PanelEtiqueta2 PanelCuadro2

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

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

CONCLUSIÓN Para el diseño de ventanas muy complejas, ser suele n definir layouts que dividan en zonas el JFrame, como por ejemplo el BorderLayout o el GridL ayout. Dentro de cada una de dichas zonas se añade un JPan el, al que se le asigna un AbsoluteLayout, un FlowLayout o se mantiene el Dise ño Libre. Es posible asignar a un panel un layout de zonas, c omo el GridLayout, y, a su vez, introducir en él nuevos paneles, y así sucesivamente. 20. EJERCICIO GUIADO. JAVA: DIÁLOGOS Cuadros de Diálogo Un cuadro de diálogo es un cuadro con opciones que aparece normalmente cuando se activa una opción del menú principal del programa.

Page 60: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 59

Los cuadros de diálogo tienen forma de ventana aunque no poseen algunas características de estas. Por ejemplo, no pueden ser minimizados ni maximizados. Los cuadros de diálogo, aparte de las opciones que muestran, suelen contener dos botones típicos: el botón Aceptar y el botón Cancelar. El primero de ellos da por válidas las opciones elegidas y cierra el cuadro de diálogo. El segundo simplemente cierra el cuadro de diálogo sin hacer ninguna modificación. He aquí algunos ejemplos de cuadros de diálogo del programa Word:

Para crear cuadros de diálogo en Java, se usa un tipo de objetos llamado JDialog. Estos objetos pueden ser diseñados como si fueran ventanas, aunque representan realmente cuadros de diálogo.

Page 61: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 60

Ejercicio guiado

1. Crea un nuevo proyecto en java.

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

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

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

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

4. Así pues entra en el código y declara una variable global iva y otra descuento tal como se

indica a continuación (recuerda que las variables globales se colocan justo después de la línea donde se define la clase principal public class):

Page 62: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 61

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

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

double unidades;

double precio; double total; //total double cantiva; //cantidad iva double cantdes; //cantidad descuento double totalsiniva; //total sin iva //Recojo los datos de los cuadros de textos (convirtiendolos a números) unidades = Double.parseDouble(txtUnidades.g etText()); precio = Double.parseDouble(txtPrecio.getTe xt()); //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);

Variables globales

Inicialización de variables globales

Page 63: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 62

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

8. A continuación se programará el botón Configuración de forma que nos permita decidir qué iva

y qué descuento queremos aplicar. Este botón mostrará un CUADRO DE DIÁLOGO que permita al usuario configurar estos datos.

9. Para añadir un cuadro de diálogo al proyecto, se tiene que añadir 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 menús contextuales o los JFileChooser. Observa tu inspector, allí verás el JDialog que has añadido:

11. Cámbiale el nombre. Lo llamaremos dialogoConfiguracion. 12. Los diálogos normalmente traen por defecto el layout BorderLayout. Para nuestro ejemplo

cambiaremos el layout del JDialog por el Diseño Libre:

Page 64: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 63

13. Los JDialog se pueden diseñar independientemente, al igual que los JPanel. Solo tienes que hacer doble clic sobre el dialogoConfiguracion (en el inspector) y este aparecerá en el centro de la ventana.

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

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

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

Si observas el Inspector debe tener el siguiente aspecto:

Page 65: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 64

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

16. Para conseguir esto, debes programar el actionPerformed del botón btnConfiguracion de la

siguiente forma:

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

Haces clic sobre Configuración y aparece el diálogo

Page 66: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 65

17. El código anterior hace lo siguiente:

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

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

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

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

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

20. El botón Cancelar de un cuadro de diálogo simplemente cierra dicho cuadro de diálogo. Para

ello, debes añadir el siguiente código en el actionPerformed del botón Cancelar del diálogo:

dialogoConfiguracion.dispose();

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

21. Ejecuta el programa de nuevo y comprueba el funcionamiento del botón Cancelar del cuadro

de diálogo.

22. Ahora se programará el botón Aceptar. Cuando el usuario pulse este botón, se confirmará el valor del iva y del descuento que haya introducido. Es decir, se traspasarán los valores introducidos en los cuadros de texto txtIva y txtDescuento a las variables globales iva y descuento.

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

Page 67: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 66

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

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

descuento=Double.parseDouble(txtDescuento.g etText()); dialogoConfiguracion.dispose();

24. Observe el código. Primero se traspasa los valores de los cuadros de texto a las variables

globales y luego se cierra el cuadro de diálogo. 25. Compruebe el funcionamiento del programa de la siguiente forma:

i. Ejecute el programa. j. Introduzca 5 unidades y 20 de precio. k. Si pulsa calcular, el total será 100. (No hay ni iva ni descuento al empezar el programa) l. Ahora pulse el botón Configuración, e introduzca un iva del 16. El descuento déjelo 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 diálogo, añadiéndole un título. Seleccione el cuadro de diálogo en el Inspector y luego busque su propiedad title. En ella escriba “Configuración de iva y descuento”.

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

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

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

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

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

Page 68: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 67

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

d. Esto es posible gracias a que el cuadro de diálogo es no modal. e. A veces, puede ser interesante que se active la ventana pero que el cuadro de diálogo

siga delante de ella. Para conseguir esto, es necesario activar la propiedad del cuadro de diálogo llamada alwaysOnTop. Activa esta propiedad:

Pulsa sobre la ventana.

La ventana se activa colocándose por encima del cuadro de diálogo.

Page 69: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 68

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

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

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

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

31. Para convertir nuestro cuadro de diálogo en modal, será necesario que lo selecciones en el

inspector y busques la propiedad modal. Debes activar esta propiedad.

32. Ahora ejecuta el programa comprueba lo siguiente:

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

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

Por otro lado, el cuadro de diálogo sigue mostrándose delante de la ventana. Esto es

Page 70: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 69

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

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

CONCLUSIÓN Los Cuadros de Diálogo son ventanas simplificadas q ue muestran distintas opciones al usuario. Los objetos JDialog son los que permiten la creació n y uso de cuadros de diálogo en un proyecto java. Para visualizar un JDialog será necesario llamar a su método setVisible. También son interesantes los métodos setSize para asignarles un tamaño y setLocation para situar el cuadro de diálogo en la pantalla. Para cerrar un JDialog será necesario invocar a su método dispose. Existen dos tipos de cuadros de diálogo: los modale s y no modales. Los cuadros de diálogo modales no permiten que se a ctive otra ventana hasta que el cuadro de diálogo no se haya cerrado.

Aunque intentes activar la ventana o escribir en ella, no podrás, ya que el cuadro de diálogo es modal.

Incluso verás un parpadeo en el cuadro de diálogo cuando intentas activar la otra ventana.

Se podría decir que un cuadro de diálogo modal es un acaparador, y que no te deja usar otro elemento hasta que no acabes con él.

Page 71: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 70

CAPITULO 3. DECISION. Sentencia if � Toma una decisión referente a la acción a ejecutar en un programa dependiendo del resultado

(verdadero o falso) de una condición.

� La sentencia if nos permite hacer que sólo se ejecute una sección de código.

� Su estructura es

� La condición es una expresión de comparación que puede evaluarse como verdadera o como falsa.

� La condición siempre debe ir entre paréntesis.

� Cuando se ejecuta la sentencia if, primero se evalúa la condición y si es verdadera se ejecuta el código

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 evalúa

la condición, si es verdadera se ejecuta el código if, si no se ejecuta el código 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

Page 72: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 71

� Existen ocasiones en que tenemos más de una condición. Cuando esto sucede podemos utilizar una

estructura de if anidados.

� Al ejecutarse un if anidado primero se revisa la primera condición, luego la segunda, luego la tercera y

así hasta llegar al final. En caso de que no se cumpla ninguna condición se ejecuta el código else.

Actividad en equipo � Crea un programa para comprar dos números e imprimir cuál es mayor o si son iguales.

Una posible solución

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 paréntesis 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 código que debe ejecutarse y terminar con un break.

Page 73: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 72

� El código que se va a ejecutar en el switch se ejecutará hasta que se encuentre la palabra break, por lo

que podemos hacer que más de un caso ejecute el mismo código, 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 más fácil 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.

Page 74: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 73

PRACTICA 05. Programación con If Instrucciones Paso 1: Descarga el esqueleto de la aplicación que vamos a utilizar en esta sesión. El archivo está en formato zip, por lo que necesitas descomprimirlo en algún directorio (por ejemplo D:\projects). Abre NetBeans y selecciona la

opción abrir proyecto , aparecerá un diálogo 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 símbolo: ). Selecciona la carpeta y presiona el botón abrir. Abre la clase y

aparecerá una ventana con la siguiente interfaz gráfica:

Paso 2: Corre el programa y verifica la funcionalidad que tiene actualmente. � ¿Qué sucede cuando presiono un botón? � ¿Qué sucede cuando pongo números enteros en edad? � ¿Qué sucede cuando no pongo números en edad? � ¿Qué sucede cuando pongo números reales en edad? Para poder entender este comportamiento es necesario analizar el siguiente código:

Recuerda que para poder convertir de un tipo de dato a otro necesitamos hacer un cast. Como el método getText() del JTextField siempre devuelve un String y lo que nosotros necesitamos es un número vamos a hacer

Page 75: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 74

un cast a int utilizando el método Integer.parseInt(). Es muy importante que la declaración de la variable age se encuentra fuera del try, ya que de esta manera nos aseguramos que el resto del código pueda utilizarla. También estamos viendo una sintaxis nueva para el manejo de errores, por el momento sólo debemos saber que en caso de que ocurra un error de formato (es decir, que el número no se pueda convertir a int) se va a ejecutar el código que se encuentra dentro del bloque catch. Más adelante veremos el manejo de errores con más detenimiento. Paso 3: Selecciona source en la parte superior del IDE, abajo de las pestañas con los nombres de las clases para ver el código de tu ventana. Dentro de los métodos que vamos a utilizar en este laboratorio hay un mensaje que dice que el método no ha sido implementado, una vez que implementes los métodos 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 método showMessageDialog() que nos permite mostrar un mensaje. El método recibe dos parámetros en su forma más sencilla, el primer parámetro es el componente padre, por el momento siempre vamos a utilizar this (que hace una referencia a la ventana actual) y el segundo parámetro es un String con el texto que queremos mostrar. Ahora abre la ventana de ToDo (Window -> ToDo o presionando Ctrl + 6) donde podrás ver lo que hace falta codificar. Primero vamos a resolver el código que va a comentar sobre nuestra edad. Para hacer esto haz doble click sobre el ToDo correspondiente. Ahora agrega el siguiente código 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 código:

� ¿Qué sucede cuando introducimos 25 como edad? � ¿Qué sucede cuando introducimos 14 como edad? Como este comportamiento no es lo que esperábamos vamos a probar un par de casos más, primero vamos a realizar la validación completa. Escribe el código que se ve a continuación:

Page 76: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 75

Al correr el programa podemos ver que ya tiene el comportamiento que esperamos, pero hay una manera un poco más elegante de codificarlo. Recuerda en la presentación 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 código:

• ¿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 después de eso no revisa todas las demás. 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 más fácil 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 código que calcule el área de un círculo. En este caso la validación será muy sencilla ya que sólo 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 código:

Fíjate en el método showMessageDialog() de la clase JOptionPane. Como puedes ver el primer parámetro es un this, pero después viene el siguiente String:

Page 77: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 76

"El area del circulo es " + area Lo que estamos haciendo aqui es concatenar un número a un String. Como el método showMessageDialog() debe recibir un String como segundo parámetro es necesario que a los números 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 código funcione de manera correcta. Paso 5: Ahora vamos a resolver la ecuación utilizando la fórmula general. Recuerda que la fórmula general es:

Aqui debemos realizar dos validaciones. El valor de a debe ser diferente de cero para evitar que la división indetermine el resultado y la raíz debe ser de un número mayor o igual a cero. Para hacer esto vamos a utilizar un and && y además vamos a utilizar una variable para ayudarnos a escribir menos y a hacer más claro el código. Escribe el siguiente código:

Como puedes ver estamos utilizando la variable root donde guardamos el valor de lo que se encuentra dentro de la raíz. Esto lo hacemos para que al comparar y al sacar la raíz no tengamos que volver a escribir la fórmula y sea más fácil de entender, además de que ya tener el valor guardado y no tener que calcularlo hace que sea un poco más rápido. En caso de que la raíz 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 válidos. Dentro del else agrega un if para decirle al usuario cuál de los datos no fue válido o si los dos no lo fueron y prueba que tu código 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 más amigables. El JCheckBox tiene un método importantísimo que nos devuelve si está seleccionado o no. Este método nos va a permitir responder de maneras diferentes utilizando un if. El método se llama isSelected() y nos devuelve verdadero en caso de que sí esté seleccionado y falso en caso contrario. Recuerda que la condición de un if debe ser cualquier cosa que evalúe a verdadero o falso y no es necesario que sea una comparación. Esto hace que podamos utilizar una variable boolean o el resultado de este método dentro de la condición directamente de la siguiente manera:

Page 78: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 77

Prueba que tu código funcione de manera correcta.

Page 79: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 78

PRACTICA 06. Programación con switch Instrucciones Paso 1: Descarga el esqueleto de la aplicación, abre el proyecto en NetBeans, compílalo y córrelo. Aparecerá una interfaz parecida a la siguiente:

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

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

Page 80: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 79

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 gráfica 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 excepción que ocurrió. La excepción más general es Exception, además de esta hay muchas excepciones que podemos manejar para darle retroalimentación al usuario de manera más 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 operación (por ejemplo división entre cero). Podemos utilizar más de una clásula catch para manejar excepciones de manera más precisa o para manejar varios errores diferentes que podrían pasar dentro de un mismo código, por ejemplo, si después de hacer un cast a dos números se intenta hacer una división podrían ocurrir errores de cast o errores aritméticos de división entre cero. Podemos proteger nuestro programa con el siguiente código:

Pero si existen tantas excepciones ¿cómo saber qué excepciones manejar? Por suerte NetBeans también nos ayuda en eso al mostrarnos la ayuda en linea de los métodos. Por ejemplo, al escribir el método parseInt() aparece la siguiente ayuda:

Page 81: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 80

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 sólo sabemos qué excepciones podrían ocurrir sino que también sabemos cuándo es posible que ocurran y bajo qué condiciones. Paso 3: Ahora sí vuelve a la aplicación. Abre el código 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 número real (podrían ser letras) debemos de manejar la excepción mediante un try-catch. Puedes basarte en el siguiente código:

El return al final del catch hace que en caso de que ocurra el error el método termine, es decir, que el código no se siga ejecutando. Más adelante veremos un poco más acerca de los métodos y la programación modular, pero por el momento nos sirve para que todo el código que pongamos abajo no se ejecute si no tenemos datos válidos. 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 método getText() siempre nos devuelve

Page 82: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 81

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 más acerca de la clase String. Esta clase tiene varios métodos muy útiles que nos permiten obtener información y manipular lo que hemos escrito o lo que ha escrito el usuario. Un método que podemos utilizar para obtener el primer caracter dentro de un String es el método charAt(), que se utiliza de la siguiente manera:

Es muy importante fijarnos que el método charAt() recibe el indice de la letra que quiere, empezando de cero. En el ejemplo anterior devolvería la 'H' (que es la primera letra). Tambíen 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 podrían mostrarse cuando mandamos llamar el método charAt()? Otro método importante de la clase String es el método length() que nos permite saber cuántos caracteres tiene un String. Puedes utilizar este método 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 sesión que se encuentran marcados con TODO en el código. Los ejercicios son: � Mostrar si una letra introducida por el usuario es vocal o consonante � Mostrar un mensaje que basándose en la terminación de una placa diga qué día no circula � Mostrar si dados dos números a y b por el usuario, a es divisible entre b � Mostrar un mensaje de recomendación de acuerdo a una temperatura dada por el usuario

Page 83: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 82

PRACTICA 07. Manejo de Componentes 03 1. EJERCICIO GUIADO. JAVA: CUADROS DE VERIFICACIÓN

1. Realiza un nuevo proyecto. 2. En la ventana principal debes añadir lo siguiente:

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

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

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

“Ratón”.

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

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

7. El programa debe funcionar de la siguiente forma:

Page 84: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 83

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

String mensaje="Animales elegidos: "; if (chkPerro.isSelected()) { mensaje=mensaje+"Perro "; } if (chkGato.isSelected()) { mensaje=mensaje+"Gato "; } if (chkRaton.isSelected()) { mensaje=mensaje+"Raton "; } etiResultado.setText(mensaje);

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

• 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 verificación chkPerro. Si es así

concateno a la cadena mensaje la palabra “Perro”. • Luego compruebo si está seleccionada la casilla de verificación chkGato y hago lo

mismo. • Lo mismo con la casilla chkRaton. • Finalmente presento la cadena mensaje en la etiqueta etiResultado.

9. Observa el método isSelected() propio de las casillas de verificación, permiten saber si una

casilla está activada o no. 10. Ejecute el programa. Seleccione por ejemplo las casillas Gato y Ratón. Al pulsar Aceptar el

resultado debe ser el siguiente:

CONCLUSIÓN Los cuadros de verificación (JCheckBox) se usan cua ndo quieres seleccionar varias opciones.

Page 85: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 84

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

1. Realiza un nuevo proyecto. 2. En la ventana principal debes añadir lo siguiente:

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

3. Añade un panel. Un panel es una zona rectangular que puede contener elementos (botones,

etiquetas, etc) La forma de poner un panel es a través del objeto JPanel.

4. Una vez añadido el panel en el JFrame, le pondremos un borde para poder localizarlo

fácilmente. Debes hacer lo siguiente:

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

Page 86: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 85

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

Page 87: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 86

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

7. Añade 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 llamarán: optRojo, optVerde, optAzul.

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

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

11. Hay que hacer que solo un botón de opción pueda estar seleccionado a la vez. Para ello, debe

añadir un nuevo objeto. Realice los siguientes pasos:

Page 88: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 87

• Añada un objeto del tipo ButtonGroup al formulario. ¡Atención! Este objeto es invisible, y no se verá en el formulario, sin embargo, lo podréis ver en el Inspector, en la parte de “Otros Componentes”:

• 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 botón de opción optRojo y cambia su propiedad buttonGroup, indicando

que pertenece al grupo colores (observa la imagen):

Page 89: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 88

• Haz lo mismo con los botones optVerde y optAzul.

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

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

optRojo.setSelected(true);

El método setSelected hace que se pueda activar o desactivar un botón de opción. Prueba el programa. Observa como la opción Rojo está activada inicialmente.

14. El programa no está terminado aún. Interesa que cuando el usuario pulse el botón Aceptar, en

la etiqueta aparezca el color elegido. Para ello, en el actionPerformed del botón Aceptar programe lo siguiente:

String mensaje="Color elegido: ";

if (optRojo.isSelected()) { mensaje=mensaje+"Rojo"; } else if (optVerde.isSelected()) { mensaje=mensaje+"Verde"; } else if (optAzul.isSelected()) { mensaje=mensaje+"Azul"; } etiResultado.setText(mensaje);

Page 90: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 89

15. Observa el código. 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 opción está seleccionada, usando el método isSelected de

los botones de opción. Este método te dice si un botón está seleccionado o no. • Según la opción que esté seleccionada, se añade 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:

CONCLUSIÓN Los botones de opción, también llamados botones de radio (JRadioButton) se usan cuando quieres que el usuario pueda elegir una opción de e ntre varias. Es interesante que los botones de radio aparezcan d entro de un panel JPanel. Se recomienda colocar un borde al panel. Es totalmente necesario añadir un objeto del tipo B uttonGroup, y hacer que los botones de radio pertenezcan a dicho grupo. En caso contrario, será posible activar varios botones de opción a la vez.

Page 91: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 90

3. EJERCICIO GUIADO. JAVA: CUADROS DE LISTA

1. Realiza un nuevo proyecto. 2. En la ventana principal debes añadir lo siguiente:

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

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

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

Page 92: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 91

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 través de la propiedad Model del JList.

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

8. Puedes añadir elementos escribiéndolos en el cuadro Artículo y luego pulsando el botón

“Añadir” (Add).

9. Debes hacer que la lista sea la siguiente:

Rojo Verde Azul

10. Ahora programaremos el actionPerformed del botón Aceptar. Debes introducir el siguiente

código:

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

Page 93: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 92

11. Observa el código:

• Se crea una variable de cadena llamada mensaje. • Y dentro de esta variable se introduce una concatenación 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 añadiendo .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 ningún valor del cuadro de lista, y sería interesante en este caso que el programa avisara de ello. Cambie el código del botón Aceptar por este otro código:

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

Page 94: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 93

14. Observa el código:

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

seleccionado. • Aprovecho esto para mostrar un mensaje indicando lo sucedido.

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

el siguiente:

16. Se podría haber prescindido del botón aceptar si el código anterior se hubiera puesto en el evento mouseClicked del cuadro de lista en vez de en el actionPerformed del botón Aceptar. En este caso, cada vez que se seleccionara un elemento de la lista, automáticamente aparecería el mensaje en la etiqueta.

Se anima a que realice esta modificación.

CONCLUSIÓN El objeto JList permite crear cuadros de lista. Est os objetos contienen una serie de elementos que pueden ser seleccionados. A través del método getSelectedValue se puede obten er el elemento que está seleccionado. (Recuerda convertirlo a cadena con toString) A través del método getSelectedIndex se puede saber la posición del elemento seleccionado. Si este índice es -1, entonces sabremos que no hay ningún elemento seleccionado.

Page 95: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 94

4. EJERCICIO GUIADO. JAVA: CUADROS COMBINADOS

1. Realiza un nuevo proyecto. 2. En la ventana principal debes añadir lo siguiente:

• Una etiqueta con borde llamada etiResultado.

3. Añade un cuadro combinado (combo). Los cuadros combinados son objetos del tipo

JComboBox. Básicamente, un combo es una lista desplegable.

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

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

Page 96: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 95

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

Rojo Verde Azul

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 añadir el siguiente código:

Page 97: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 96

String mensaje="El color elegido es "; mensaje=mensaje+cboColores.getSelectedItem().toStri ng(); etiResultado.setText(mensaje);

9. Este código hace lo siguiente:

• Crea una variable de cadena. • Concatena dentro de ella el mensaje “El color elegido es” con el color seleccionado. • Observa el método 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 también como cuadros de texto. Es decir, pueden permitir que se escriba texto dentro de ellos. Para hacer esto, basta con cambiar su propiedad “editable” y activarla.

Page 98: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 97

12. Ejecuta el programa y observa como se puede escribir dentro del combo. Al pulsar Enter, el

programa funciona igualmente con el texto escrito.

CONCLUSIÓN Los combos son listas desplegables donde se puede e legir una de las opciones propuestas. Los combos pueden funcionar también como cuadros de textos, si se activa la opción editable. A través del método getSelectedItem se puede extrae r la opción seleccionada o el texto escrito en el combo.

Se escribe aquí y se pulsa enter

Page 99: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 98

5. EJERCICIO GUIADO. JAVA: MODELOS DE CUADRO DE LIS TA

1. Realiza un nuevo proyecto. 2. En la ventana principal debes añadir lo siguiente:

• Una etiqueta con borde llamada etiResultado.

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

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

Page 100: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 99

5. Añade dos botones al formulario. Uno de ellos tendrá el texto “Curso 1” y se llamará btnCurso1 y el otro tendrá el texto “Curso 2” y se llamará btnCurso2.

6. En el evento actionPerformed del botón “Curso 1” programa lo siguiente: DefaultListModel modelo = new DefaultListModel(); modelo.addElement("Juan"); modelo.addElement("María"); modelo.addElement("Luis"); lstNombres.setModel(modelo);

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

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

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

• Lo que hace cada botón es rellenar el cuadro de lista con una serie de nombres. En el caso del botón “Curso 1”, la lista se rellena con los nombres Juan, María y Luis, mientras que en el caso del botón “Curso 2”, la lista se rellena con los nombres Ana, Marta y Jose.

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

Page 101: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 100

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

DefaultListModel modelo = new DefaultListModel();

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

modelo.addElement("Ana"); modelo.addElement("Marta"); 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 botón cambia el contenido de la lista:

10. Ahora añade el siguiente código al evento mouseClicked del cuadro de lista: etiResultado.setText(lstNombres.getSelectedValue(). toString());

Click y cambia el listado.

Page 102: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 101

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

11. Ejecuta el programa:

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

CONCLUSIÓN Un cuadro de lista es un objeto que contiene a su v ez 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 cambia r el contenido de la lista en cualquier momento.

Click y aparece el elemento seleccionado en la etiqueta.

Page 103: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 102

PRACTICA 08. Programación Modular Instrucciones Paso 1: Descarga el esqueleto de la aplicación que vamos a utilizar en esta sesión. Abre NetBeans, compílalo y corre el programa. Tendrás una interfaz gráfica similar a la siguiente:

Paso 2: Selecciona el botón "a Kilogramos" y haz click derecho. Selecciona events->action->actionPerformed. En el código podemos ver que tenemos que crear un método toKilograms() que recibe como parámetro 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 método debemos hacernos una serie de preguntas que nos van a permitir saber qué tipo de método queremos llamar: � ¿Qué tipo de acceso va a tener el método? Sabemos que el método sólo va a ser utilizado dentro de

esta misma ventana, por lo que podemos ponerle un tipo de acceso private. � ¿Qué tipo de método es? Es un método 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 método 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 método se va a llamar toKilograms(), es muy importante siempre

seleccionar un nombre de método que sea fácil de entender y que nos diga para qué sirve el método. Por ejemplo, el método convert() podría hacer conversiones de cualquier tipo y no es muy preciso, mientras que el método 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 parámetros.

� ¿Qué parámetros recibe? Una vez más nos dicen que sólo recibe un parámetro llamado grams de tipo double que representa cuántos gramos hay que convertir.

Una vez que hayamos termiando de decidir esto podemos hacer el encabezado del método, recuerda que siempre el encabezado debe estar en el mismo orden que las preguntas que hicimos. El encabezado para el método quedaría de la siguiente manera: Ahora debemos escribir el método en algún lugar que se encuentre adentro de la clase pero que no se encuentre adentro de un método, las flechas en la siguiente imagen marcan lugares donde podría ponerse el método. 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 fáciles de encontrar cuando estamos revisando el código.

Page 104: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 103

Después del encabezado debe ir el cuerpo del método, en este caso el método nos sirve para convertir de gramos a kilogramos, que es algo muy sencillo, por lo que sólo debemos poner una línea en cualquier lugar que esté dentro de la clase pero que esté fuera de cualquier método 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 método, es decir, cuál va a ser el valor de retorno. En este caso el método va a regresar los gramos multiplicados por 0.001, con lo que los convertimos a kilogramos. Por último mandamos llamar el método toKilograms() para convertir a kilos dentro del código del botón.

Modifica el código para que valide que los gramos sean un número positivo. Paso 3: Ahora pasemos al segundo botón. El botón 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 método que creamos en el paso anterior y crear un nuevo método que convierta de kilogramos a libras. Contesta las siguientes preguntas en un archivo de texto: � ¿Qué tipo de acceso va a tener el método? � ¿Qué tipo de método es?

Page 105: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 104

� ¿Qué valor de retorno tiene? � ¿Qué nombre tiene? � ¿Qué parámetros recibe? Utilizando tus respuestas podemos ver que el método va a ser similar al siguiente:

Fíjate que en este caso el parámetro se llama kilograms. Esto es muy importante ya que nos permite saber qué recibe el método. Es muy importante que nuestros parámetros tengan nombres claros que nos digan qué es lo que recibe el método para que no nos confundamos al llamarlos. Ahora al mandar llamar este método debemos realizar un cambio intermedio utilizando el método anterior. Podríamos estar pensando que sería mucho más lógico crear un método 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 están muy claros y los métodos podrían cambiar aunque no cambie la lógica del programa. Por ejemplo, podría 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 precisión y si no tuvieramos todo dividido por métodos tendríamos que modificar varias fórmulas que probablemente tendríamos que calcular a mano. Para ejemplos más complicados esto tiene mucho más sentido. Por ejemplo, podríamos crear un método 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 método. Ahora utilicemos el método que acabamos de crear para convertir de gramos a libras utilizando el siguiente código:

Como puedes ver no tenemos que hacer muchos cambios del código anterior y en caso de que algún día el rey decida cambiar el valor de las libras entonces podemos realizar sólo un cambio al método toPounds() y nuestro programa seguiría funcionando de manera correcta. Paso 3: Utilizando los conocimientos sobre métodos que hemos visto en este ejercicio completa los últimos dos botones que faltan. Recuerda responder las siguientes preguntas para cada uno de los métodos que hayas creado y ponerlas en el archivo de texto: � ¿Qué tipo de acceso va a tener el método? � ¿Qué tipo de método es? � ¿Qué valor de retorno tiene? � ¿Qué nombre tiene? � ¿Qué parámetros recibe?

Page 106: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 105

PRACTICA 09. Programación Modular Graphics Instrucciones Paso 1: Corre NetBeans y crea un nuevo proyecto al que llamaras Sesion7. Agrega un JFrame llamado MainFrame. Deberás tener una estructura de proyecto similar a la que se ve en la siguiente fotografía:

Paso 2: Crea la siguiente interfaz gráfica:

El control de la parte de abajo se llama JTextArea y es un JTextField que puede tener más de un renglón. 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 más fácil cambiarles el nombre):

Recuerda que para que el JFrame se muestre debes poner la línea setVisible(true); dentro del constructor de la clase, después de la llamada al método initComponents().

Page 107: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 106

Una vez que hayas creado la ventana recuerda agregar la línea new MainFrame() dentro del método 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 círculo interno y del círculo externo utilizando el radio. Como esa operación es repetitiva vamos a ponerla en un método por separado. El método va a llamarse calculateArea(), va a recibir el radio (tipo double) y debe regresar un valor tipo double que representa el área. En código podríamos verlo como el siguiente método:

Paso 5: Ahora sí, vamos a crear el método actionPerformed() de btnCalculate. En el modo de diseño haz click derecho sobre el botón y selecciona Events -> Action -> actionPerformed. Dentro del código debemos obtener los valores de los radios, podemos utilizar el siguiente código 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 sólo si son válidos debemos de calcular las áreas y restarlas. El resultado final vamos a mostrarlo en el JTextArea de la parte inferior. En código podríamos verlo como lo siguiente:

Page 108: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 107

Prueba que todo funcione correctamente en tu aplicación compilando el programa y corriéndolo. Hasta este momento debe poder calcular el área de un anillo y mostrarla en el JTextArea que pusimos para mostrar resultados, también 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 mayoría de las veces quieren algo un poco más 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 (técnicamente sí se puede pero no se debe hacer por la implementación 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:

Page 109: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 108

Nuestro Bean va a llamarse RingBean y su superclase debe ser javax.swing.JComponent como se ve en las siguientes fotografías:

Paso 8: Al terminar aparecerá un error de que no puede pintar la forma porque no es un JavaBean. Esto es porque todavía no hemos programado cómo debe de pintarse el JComponent y NetBeans todavía no lo puede dibujar. Haz click en source y vete al código. Pon el cursor en algún lugar en blanco fuera de un método, pero dentro de la clase y presionar Ctrl+Space para que aparezca el diálogo de autocompletar. Ahí debes escribir paintComponent y se seleccionará la entrada que se ve en la fotografía:

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á automáticamente el método paintComponent() que tiene un parámetro de tipo Graphics con el que podemos dibujar sobre el componente. Presiona Alt+Shift+F para resolver las dependencias (Graphics todavía no estaba incluido en los imports) y dentro de ese método pon el siguiente código:

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 todavía estamos dibujando dentro de él. � De acuerdo a tu autoestudio ¿para qué crees que funciona el código anterior? Compila tu programa para revisar que no haya ningún 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

Page 110: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 109

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 diseño. Podemos ver que en la paleta dentro de la sección 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 diseño parece que tu Bean todavía 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 están trabajando los programadores de NetBeans, pero no afecta tu proyecto. Después de agregar el RingBean cambiále el nombre a ring de la misma manera que lo harías con otros componentes. Compila y corre el programa y podrás ver una ventana similar a la siguiente (dependiendo del lugar en que pusiste tu control):

Page 111: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 110

Nuestro control ya está dibujando un rectángulo, 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, después debemos crear un método que reciba los radios que se deben dibujar y después manden dibujar utilizando estos datos. Copia el siguiente código dentro de RingBean:

En este código vamos a ver varias cosas interesantes. Primero que nada fíjate que las variables tienen el modificador private para que otros objetos no puedan acceder a sus variables más íntimas. Esto es por algo llamado encapsulación que vamos a ver mucho más a profundiad al tocar el tema de programación orientada a objetos. Además es importante notar que las variables son de tipo int, porque Graphics no puede manejar los tipos de dato double. En el método setRadius() podemos ver que utilizamos la palabra clave this para referirnos a la variable del objeto, a diferencia de la variable pasada como parámetro, esto también es un comportamiento que analizaremos más detalladamente al ver programación orientada a objetos. En pocas palabras: � this.innerRadius == innerRadius de la clase � innerRadius == innerRadius el parámetro Por último podemos ver el método repaint() que le dice al componente que ha sucedido algo que amerita que vuelva a pintarse. Este método se encarga de revisar qué fue lo que sucedió y llamar los métodos adecuados para volver a dibujar el componente. Una vez que hemos echo esto debemos modificar el método paintComponent() para que utilice estos valores y dibuje dos círculos en lugar del rectángulo que dibuja actualmente. Podemos lograr esto mediante el siguiente código:

Este método 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 círculo esté a la mitad de la ventana porque el círculo mide dos veces el radio) y por último estoy poniendo el ancho y alto como el doble del radio. Podemos verlo gráficamente:

Page 112: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 111

Por último sólo debemos mandar llamar el método setRadius() dentro del actionPerformed del botón btnCalculate. Podemos hacerlo de la siguiente manera:

Además de los métodos drawX (como drawRect(), drawOval()), la clase Graphics también tiene métodos fillX (como fillRect() y fillOval()). Estos métodos 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 método 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).

Page 113: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 112

CAPITULO 4. CICLOS. While � El while es una sentencia que ejecuta un bloque de instrucciones cero o más veces dependiendo de una

condición.

� Su sintaxis es:

while(condicion) { // codigo } � Donde condicion es una expresión que puede evaluarse a verdadero o falso (de la misma manera que

funciona un if).

� Fíjate que después del paréntesis del while no va un punto y coma.

� El while va a repetir el código que se encuentre entre llaves mientras la condición siga siendo

verdadera.

� Las instrucciones se ejecutan de manera secuencial siempre de arriba hacia abajo siempre y cuando la

condición sea verdadera (o distinta de cero).

� Si la condición se evalúa como falsa al llegar al while por primera ves las instrucciones no se ejecutan.

Ejemplo � Revisa el siguiente código

� ¿Qué imprimiría, entiendes cómo funciona?

� El código va a imprimir

Otro ejemplo � El siguiente código es muy similar al anterior ¿puedes ver en qué son diferentes?

Page 114: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 113

� ¿Qué sucederá cuando se ejecute el código anterior?

� El programa se “cicla”, es decir, nunca puede salir del ciclo y continua ejecutándose

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 iteración 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 más adelante, esto último es lo que se hace

normalmente).

Do while � Ya estuvimos utilizando el ciclo while para realizar una misma acción varias veces, pero además de este

ciclo hay otros dos ciclos que nos son muy útiles a la hora de programar.

� El ciclo do while permite repetir la ejecución de su código mientras una condición sea verdadera. La

diferencia entre este ciclo y el while radica en el momento en que se evalúa la condición.

� En el ciclo while la condición se evalúa al principio, mientras que en el ciclo do while la condición se

evalúa al final.

� Como la condición se revisa al final, después de haber ejecutado el código entonces garantizamos que

el código se ejecuta una o más veces.

� En la estructura while, como la condición se revisa antes de ejecutar el código 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 ejecución:

� Se ejecuta el código del do while

� Se revisa la condición

� Si la condición es verdadera se regresa al primer punto

� Si la condición es falsa ejecuta la siguiente línea de código del programa

� El do while se utilizaba principalmente para crear menús en las aplicaciones de línea 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 acción un número 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).

� Además 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 repetición está definido precisamente con un contador,

por esto nos permite encapsular en una sola instrucción todo el código del contador.

� La sintaxis del for es la siguiente:

Page 115: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 114

for (inicializacion; condicion; incremento){ // codigo } � La ejecución del for sucede de la siguiente manera:

� Se inicializan las variables en la sección de inicializacion

� Se evalúa la condicion

� Si el resultado es verdadero se ejecuta el código y al final se ejecuta el incremento

� Si el resultado es falso se termina la ejecución del ciclo y se continúa con la siguiente

línea del programa.

� El ciclo while y el ciclo for pueden ser intercambiados con facilidad, podemos verlo con el siguiente

ejemplo:

Comparación de ciclos

While Do while For

Uso

Cuando no sabemos el número de iteraciones

Cuando no sabemos el número de iteraciones

Cuando sí sabemos el número de iteraciones

Número de ejecuciones

0 o más veces 1 o más veces

0 o más veces

Aplicación

Cuando la condición de terminación no es numérica, por ejemplo, una función boolean, también es útil para lectura de archivos

Mostrar un menú, mostrar mensajes de error mientras el usuario no seleccione una opción válida

Contar números, recorrer estructuras de datos (veremos esto más adelante)

Frecuencia de uso

Frecuente Poco frecuente

Muy frecuente

Page 116: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 115

PRACTICA 10.Ejercicios con Ciclos Instrucciones Paso 1: Responder las preguntas y ejercicios en negritas utilizando ciclos. Ejercicio 1

¿Qué hace el código anterior? Ejercicio 2

¿Cuántas veces se ejecutará el código anterior? ¿Cuál será el valor final de x? Ejercicio 3

¿Qué hace el código anterior? ¿Por qué? Ejercicio 4

Escribe un código que imprima 100 veces "Hola mundo"

Ejercicio 5

Escribe la función isPrime(int n) que recibe un número y debe devolver verdadero o falso dependiendo si el

número es primo o no. NOTA: Puedes saber si un número es primo revisando si todos los númreos entre 2 y el

número no son divisibles.

Page 117: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 116

PRACTICA 11. Programación con Ciclos.

Instrucciones

Paso 1:

Descarga el esqueleto de la aplicación. Abre el proyecto en NetBeans, compílalo y córrelo para verificar que todo

funcione correctamente. Deberá aparecer una pantalla similar a la siguiente:

Selecciona el botón del factorial y da click derecho. Dentro del menú selecciona events -> action ->

actionPerformed. Para poder resolver este problema debemos calcular el factorial de un número. Para calcular el

factorial debemos multiplicar todos los números desde el uno hasta el número 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 número con el que la empezamos varía dependiendo de la situación,

pero regularmente se selecciona 1 o 0. Como en este caso vamos a realizar multiplicaciones necesitamos

empezar con 1 porque si no siempre multiplicaríamos por 0. Además de utilizar un acumulador vamos a utilizar

un contador para llevar la cuenta desde el número uno hasta el número n. En cada iteración del ciclo vamos a

multiplicar el número actual por el número que llevamos acumulado. En código estamos hablando de lo

siguiente:

Page 118: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 117

Nota: Es muy importante que agregues el incremento al contador, porque de no hacerlo el ciclo jamás terminaría y el programa se va a trabar. En caso de que corras un programa y se cicle puedes utilizar NetBeans para cancelar la ejecución. A la izquierda del IDE hay una opción que dice runtime. Dentro de runtime puedes ver todos los procesos que se están ejecutando en NetBeans y puedes cancelar cualquier haciendo click derecho y seleccionando Terminate Task como se ve en la fotografía:

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

Compila y corre el programa anterior. Al utilizar este nuevo código notarás algo extraño en el resultado. Tiene una coma de más, 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 después. En el código significaría quitar la última ocurrencia del while (es decir, cuando curr == n) y agregar el codigo al final que solamente agregue el último número a la serie, es decir:

Page 119: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 118

Compila y corre tu programa para ver que funcione de manera correcta. Al terminar de revisarlo haz click derecho sobre el botón de secuencia de pares y por analogía realiza la serie de pares que debe iniciar en 2 y terminar con el par más 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 número a imprimir es dos. También recuerda que puedes aumentar el contador de dos en dos. Una vez que hayas probado ese método vamos a continuar con el método que imprime una secuencia desde n hasta m. Este método 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 código:

Como ya nos dimos cuenta de que los tres métodos son muy similares entonces nos hemos dado cuenta de que tenemos una oportunidad de modular. Podemos generalizar el problema como un método que recibe tres parámetros (que son los únicos valores que cambian), el inicio de la serie, el final de la serie y el incremento. El método debe validar que el final de la serie sea mayor que el inicio de la serie, y debe lanzar una excepción en caso de que no sea así. El programa debe mostrar una ventana de error en caso de que esto suceda. El método debe devolver un String con la serie generada. Utilizando tus conocimentos sobre métodos crea el método String buildSequence(int start, int end, int increment) como acabamos de discutirlo. Después cambia los métodos actionPerformed() de tus botones para que utilicen este método. Como puedes ver con este ejemplo, modular puede ahorrarnos muchas líneas de código si pensamos en dónde podemos reutilizar un método. Una vez que hayas terminado el método y probado tu aplicación vamos a terminar de hacer el último método que falta. En este método debemos obtener la potencia de un número utilizando ciclos. Selecciona el botón 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:

Page 120: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 119

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

Page 121: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 120

PRACTICA 12. Tarea: Multiplicación y División Instrucciones

Paso 1:

Crea un programa de interfaz gráfica 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 multiplicación a * b y debe mostrarse el resultado.

El programa únicamente puede utilizar el operador matemático de suma (+). NO puede utilizar multiplicación

(*). Tip: Utiliza ciclos para sumar varias veces un número.

Paso 3:

Al presionar btnDiv debe calcularse la división entera a / b y debe mostrarse el resultado.

El programa únicamene puede utilizar el operador matemático de resta (-). NO puede utilizar la división (/).

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

dividir.

Page 122: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 121

PRACTICA 13. Programación con Ciclos

Instrucciones

Paso 1:

Descarga el esqueleto de la aplicación que vamos a utilizar en esta sesión y abre el proyecto en NetBeans.

Ahora compila y corre la aplicación. Aparecerá una pantalla gris con tres divisiones (que tienen controles aunque

no están pintados). Al terminar la aplicación tendremos una interfaz gráfica similar a la siguiente:

En esta aplicación 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 cuadrícula de 8 x 8. Vamos a analizar un poco más a fondo cómo 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 sería (4 x 25, 0) es decir (100, 0), el sexto cuadro estaría en (5 x 25, 0) o (125, 0). Aqui podemos ver un patrón 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

Page 123: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 122

(100, 125). Como podemos ver todas las posiciones están 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 cuáles son los límites de nuestro ciclo. Podríamos hacer un ciclo que cuente hasta el 64 y que utilice una división y su módulo para obtener el número de fila y columna respectivamente. Podemos verlo con el siguiente código:

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 muchísimos recursos para pintar. Peor aún, podría ser que NetBeans intentara dibujar el componente y se quedaría atorado por siempre en el ciclo, por lo que tendrías que cerrar la aplicación y perderías 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):

Page 124: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 123

Fíjate en el if. Lo que estamos haciendo es ver qué color había 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 verás 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 también 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 debería ser blanco, puedes cambiar el color con el que empezamos a pintar para corregir esto). Como puedes ver, puedes utilizar el módulo y la división como operaciones complementarias al utilizar ciclos, aunque este enfoque no es muy utilizado. Más adelante veremos una manera un poco más sencilla de lograr esto mismo. Una vez que hayas probado tu programa continúa con el ejercicio del gusano

Page 125: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 124

Aqui hay varias cosas importantes que tomar en cuenta. Primero que nada, las partes del cuerpo van a estar alternando su posición 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 posición en y que le corresponde. También podemos ver que la cabeza es diferente de las demás partes del cuerpo, por lo que debemos pintarla por separado y fuera de un ciclo. Por último debemos definir cómo va a ser el ciclo que utilicemos para pintar todas las partes del cuerpo. La primera parte después de la cabeza (primera parte del cuerpo) va a estar en la posición 1 x 10, la segunda parte va a estar en la posición 2 x 10, la tercera parte va a estar en la posición 3 x 10. Ahí está el patrón que necesitamos para empezar a pintar. Tomando esto en cuenta podemos utilizar un ciclo que empiece desde 1 (fíjate 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 código:

NOTA: Recuerda que es muy importante aumentar el acumulador con la línea pieces++. Fíjate en cómo vamos a dibujar 40 piezas empezando el contador (pieces) en 1 y repitiendo el ciclo mientras que pieces sea menor o igual a cuarenta. También fíjate que utilizamos una variable y que representa la posición en y en que vamos a dibujar y el if se va a encargar de cambiarla de 0 a 5 y viceversa según sea necesario.

Page 126: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 125

Compila y corre tu código asegurándote de que se dibuje el gusano correctamente. Por último vamos a dibujar el camión.

En teoría es muy similar al gusano, sólo que ahora en lugar de tener un número fijo de piezas del cuerpo tenemos un número 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 separación.

Como podemos ver el método es practicamente igual que el anterior, pero cambiamos un poco la manera de

dibujar los controles. Compila tu aplicación y correla para probar que funcione adecuadamente. Cambia el

número de cajas que tiene el camión utilizando la caja de texto (introduce el número y presiona enter).

Comprime tu carpeta de trabajo y mándala por correo.

Solución de Ciclos

Paso 1:

Responder las preguntas y ejercicios en negritas utilizando ciclos.

Ejercicio 1

Page 127: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 126

¿Qué imprime el programa anterior?

Ejercicio 2

¿Qué valor tiene x al terminar el código anterior?

¿Qué valor tiene i?

Ejercicio 3

Este ejercicio es un poco más complicado. El objetivo es decir qué debería decir en lugar de los ... que se

encuentran en el System.out.println(). Fíjate en el ciclo.

¿Qué está revisando el ciclo?

¿Qué es n, qué es i?

¿Cómo cambia el valor de n, cómo cambia el valor de i? (haz una tabla que te muestre el valor en cada

iteración)

¿Qué significa n % i?

¿Qué debería imprimir el programa en lugar de los ...?

Page 128: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 127

Ejercicio 4

MaguSoft está atravesando un periodo muy difícil debido a leyes restrictivas que no le permiten trabajar con la

impunidad que al dueño le gustaría. Para resolver este problema Magus ha decidido lanzarse como gobernador.

Basándose 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 código:

Hasta ahora hemos utilizado el método showMessageDialog() de la clase JOptionPane para mostrar diálogos de información en que mostramos un mensaje al usuario, pero también podemos utilizar el método showConfirmDialog() nos permite mostrar un diálogo de confirmación en el que se guarda la opción que seleccionó el usuario en una variable de tipo int. Más adelante podemos utilizar algunas constantes de la clase JOptionPane para saber qué opción seleccionó el usuario. � Escribe el código � ¿Qué hace el código? El problema es que en las elecciones todas las personas seleccionaron la opción no, por lo que Magus quedó con cero votos. El programador anterior fue catsigado con la pena de excomunión 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 opción sí. El programa debe mostrar la ventana de selección hasta que el usuario decida presionar el botón sí.

Page 129: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 128

PRACTICA 14. Programación con Ciclos FOR Paso 1:

Descarga el esqueleto de la aplicación. Abre el proyecto en NetBeans, compílalo y córrelo 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 botón de elevar a una potencia (x^y) y ve al código. Si recuerdas, en el laboratorio pasado teníamos un código similar al siguiente:

Para poder pasar eso a un ciclo for tendríamos que utilizar el siguiente código:

Como puedes ver, de todas maneras tenemos el acumulador y el código dentro del ciclo es casi igual, lo único que cambia es que en el código del for ponemos todo el manejo del contador en una misma línea, por lo que la

Page 130: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 129

mayoría de las veces es más sencillo de entender. Utilizando el método de ejemplo convierte todos los ciclos de la sesión de while a ciclos for. Recuerda crear un método para las series de números.

Page 131: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 130

PRACTICA 15. Manejo de Componentes 03 6. EJERCICIO GUIADO. JAVA: MODELOS DE CUADRO DE LIS TA

1. Realiza un nuevo proyecto. 2. En la ventana principal debes añadir lo siguiente:

• Un combo llamado cboNumeros. • Un botón “Pares” llamado btnPares. • Un botón “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. Después de haber hecho todo esto, tu ventana debe quedar más o menos así:

5. En el evento actionPerformed del botón Pares, programa lo siguiente: int i; DefaultComboBoxModel modelo = new DefaultComboBoxMo del(); for (i=0;i<10;i+=2) { modelo.addElement("Nº "+i); } cboNumeros.setModel(modelo);

6. Observa lo que hace este código: • Crea un objeto “modelo” para el combo.

Page 132: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 131

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

DefaultComboBoxModel modelo = new DefaultComboBoxMo del();

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

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

combo.

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

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

cboNumeros.setModel(modelo);

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

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

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

9. La única diferencia de este código es el for, que está diseñado para que se introduzcan los

números impares comprendidos entre 0 y 10 dentro del modelo.

Se pulsa y se rellena automáticamente

Page 133: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 132

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 instrucción: etiResultado.setText(cboNumeros.getSelectedItem().t oString());

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

CONCLUSIÓN Un combo, al igual que los cuadros de lista, es un objeto que contiene a su vez otro objeto denominado “modelo”. El objeto “modelo” es el que realmente contiene los datos del combo. Combo ���� Modelo ���� Datos Se puede crear un “modelo” y luego introducir datos en él. Luego se puede asociar ese “modelo” al combo. De esta manera se puede cambiar el contenido del combo en cualquier momento.

Page 134: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 133

7. EJERCICIO GUIADO. JAVA: TOGGLEBUTTONS

1. Realiza un nuevo proyecto. 2. Crearás una ventana como la que sigue teniendo en cuenta lo siguiente:

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

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

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

4. Se creará una etiqueta vacía y con borde llamada etiTotal. Use la propiedad font de esta

etiqueta para hacer que el texto tenga un mayor tamaño.

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

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

Page 135: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 134

Estos botones, se diferencian de los botones normales en que se quedan pulsados cuando se hace un clic sobre ellos, y no vuelven a su estado normal hasta que no se vuelve a hacer clic sobre ellos. Los tres botones se llamarán respectivamente: tbtnInstalacion, tbtnFormacion, tbtnAlimentacionBD.

Añade finalmente tres etiquetas conteniendo los números 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:

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

• El usuario introducirá un precio base para el servicio que se vende. • A continuación, si el cliente quiere la instalación, activará el botón Instalación. • Si el cliente quiere la formación, activará el botón Formación. • Si el cliente quiere la Alimentación de Base de Datos, activará el botón Alimentación

BD. • Ten en cuenta que el cliente puede querer una o varias de las opciones indicadas. • Finalmente se pulsará el botón calcular y se calculará el precio total. Este precio se

calcula de la siguiente forma:

Precio Total = Precio Base + Precio Extras. El precio de los Extras dependerá de las opciones elegidas por el usuario. Por ejemplo, si el usuario quiere Instalación y Formación, los extras costarán 240 euros.

Observa como al pulsar los JToggledButton estos se quedan pulsados.

Si se vuelven a activar se “despulsan”.

Page 136: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 135

5. Así pues, se programará el actionPerformed del botón Calcular de la siguiente forma: double precio_base; double precio_instal; //precio instalación double precio_for; //precio formacion double precio_ali; //precio alimentacion //Recojo datos desde la ventana: precio_base = Double.parseDouble(txtPrecioBase.getT ext()); precio_instal = Double.parseDouble(etiPrecioInstala cion.getText()); precio_for = Double.parseDouble(etiPrecioFormacion. getText()); precio_ali = Double.parseDouble(etiPrecioAlimentaci onBD.getText()); //Ahora que tengo los datos, puedo hacer cálculos. //Al precio base se le van añadiendo precio de extr as //según estén o no activados los JToggleButtons double precio_total; precio_total = precio_base; if (tbtnInstalacion.isSelected()) { //Si se selecci onó instalación precio_total = precio_total+precio_instal; } if (tbtnFormacion.isSelected()) { //Si se seleccion ó formación precio_total = precio_total+precio_for; } if (tbtnAlimentacionBD.isSelected()) { //Si se sele ccionó Alimentación BD precio_total = precio_total+precio_ali; } //Finalmente pongo el resultado en la etiqueta etiTotal.setText(precio_total+" €");

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

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

o Se extraerán los datos de la ventana y se almacenarán en dichas variables. Para ello,

hay que convertir desde cadena a double:

precio_base = Double.parseDouble(txtPrecioBase.getT ext()); precio_instal = Double.parseDouble(etiPrecioInstala cion.getText()); precio_for = Double.parseDouble(etiPrecioFormacion. getText()); precio_ali = Double.parseDouble(etiPrecioAlimentaci onBD.getText());

• Una vez obtenidos los datos en forma numérica, ya se pueden hacer cálculos con ellos. El

programa declara una nueva variable precio_total donde se introducirá el resultado. En primer lugar se introduce en esta variable el precio base.

double precio_total; precio_total = precio_base;

Page 137: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 136

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

if (tbtnInstalacion.isSelected()) { //Si se selecci onó instalación precio_total = precio_total+precio_instal; }

Esto significa: “Si el botón instalación está seleccionado, añade al precio total el precio por instalación” Observa el uso del método isSelected para saber si el botón tbtnInstalacion ha sido seleccionado.

Finalmente el resultado se muestra en la etiqueta de total.

7. Comprueba el funcionamiento del programa…

8. Supongamos que normalmente (en el 90 por ciento de los casos) la instalación es solicitada

por el usuario. Podría ser interesante que el botón Instalación ya saliera activado al ejecutarse el programa. Para ello, añade en el Constructor la siguiente línea.

tbtnInstalacion.setSelected(true);

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

Introduce una cantidad (usa el punto para los decimales)

Selecciona los extras que desees.

Page 138: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 137

CONCLUSIÓN Los JToggleButton son botones que pueden quedarse p ulsados. A través del método isSelected podemos saber si un JToggleButton está seleccionado. También puedes usar el método setSelected para sele ccionar o no un botón de este tipo. Realmente, estos botones no suelen ser muy usados, ya que pueden ser sustituidos por Cuadros de Verificación (JCheckBox) que son más con ocidos.

Page 139: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 138

8. EJERCICIO GUIADO. JAVA: SLIDERS Introducción a los JSliders La clase JSlider permite crear objetos como el siguiente:

Estos elementos tienen un pequeño recuadro que se puede arrastrar a derecha o izquierda. Según la posición del recuadro, el JSlider tendrá un valor concreto. El JSlider se puede configurar para que muestre los distintos valores que puede tomar:

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

El valor que tiene un JSlider es el valor al que apunta el recuadro del JSlider. En la imagen anterior, el JSlider tiene un valor de 85. Se verá a continuación las características más interesantes de los JSlider y como programarlos. Ejercicio guiado

1. Crea un nuevo proyecto. 2. Añade en él un JSLider. Su nombre será slDeslizador.

Page 140: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 139

3. Añade una etiqueta con borde. Su nombre será etiValor. 4. La ventana tendrá el siguiente aspecto:

5. Un JSlider tiene un valor mínimo y un valor máximo. El valor mínimo es el valor que tiene

cuando el recuadro está pegado a la parte izquierda, mientras que el valor máximo es el valor que tiene cuando el recuadro está pegado a la parte derecha.

El valor mínimo y máximo del JSlider se puede cambiar. Busca las propiedades maximum y minimum del JSlider y asigna los siguientes valores: Máximo: 500 Mínimo: 100

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

Page 141: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 140

7. Se puede mejorar el JSlider definiendo unas divisiones (medidas) Por ejemplo, haremos que

cada 50 unidades aparezca una división. Para ello use la propiedad majorTickSpacing y asigne un 50.

8. Esto, en realidad, no produce ningún cambio en el JSlider. Para que las divisiones se vean, es

necesario que active también la propiedad paintTicks. Esta propiedad pintará divisiones en el JSlider:

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

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

Medidas cada 50 unidades

Page 142: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 141

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.getVa lue());

12. Ejecute el programa y observe lo que sucede cuando arrastra el deslizador. 13. La explicación del código es la siguiente:

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

deslizador. b. Este valor es concatenado a la cadena “El valor es:” y es mostrado en la etiqueta a

través del conocido setText.

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

por tu cuenta:

orientation Permite cambiar la orientación del JSlider. Podrías por ejemplo hacer que el JSlider estuviera en vertical. minorTickSpacing Permite asignar subdivisiones a las divisiones ya asignadas. Prueba por ejemplo a asignar un 10 a esta propiedad y ejecuta el programa. Observa las divisiones del JSlider. snapToTicks Cuando esta propiedad está activada, no podrás colocar el deslizador entre dos divisiones. Es decir, el deslizador siempre estará situado sobre una de las divisiones. Prueba a activarla. paintTrack Esta propiedad permite pintar o no la línea sobre la que se desliza el JSlider. Prueba a desactivarla.

Movemos aquí.

Y aparece el valor

Page 143: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 142

CONCLUSIÓN Los JSliders son objetos “deslizadores”. Permiten e legir un valor arrastrando un pequeño recuadro de derecha a izquierda o viceversa. El valor de un JSliders puede ser obtenido a través de su método getValue. Si quieres programar el cambio (el arrastre) en el deslizador, tienes que programar el evento llamado stateChanged.

Page 144: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 143

9. EJERCICIO GUIADO. JAVA: SPINNER Introducción a los JSpinner La clase JSpinner permite crear cuadros como el siguiente:

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

1. Crea un nuevo proyecto. 2. Añade en él un JSpinner. Su nombre será spiValor.

3. Añade una etiqueta con borde. Su nombre será etiValor. 4. La ventana tendrá el siguiente aspecto:

5. Interesa que cuando cambie el JSpinner (ya sea porque se pulsaron los botones triangulares o

porque se escribió dentro) aparezca el valor correspondiente dentro de la etiqueta. Para ello, tendrá que programar el evento stateChanged del JSpinner.

En el evento stateChanged introduzca el siguiente código: etiValor.setText("El valor es: "+spiValor.getValue( ).toString());

Page 145: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 144

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

Debes tener en cuenta que el valor devuelto no es un número ni una cadena, así que en el ejemplo se ha usado el método toString() para convertirlo a una cadena.

7. Prueba el programa y observa su funcionamiento:

8. Observa como los valores del JSpinner aumentan o disminuyen en 1. Por otro lado, no parece

haber un límite para los valores del JSpinner.

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

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

initComponents:

SpinnerNumberModel nm = new SpinnerNumberModel(); nm.setMaximum(10); nm.setMinimum(0); spiValor.setModel(nm);

10. Este código hace lo siguiente:

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

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

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

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

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

f. Finalmente se asigna el modelo creado al JSpinner. g. Este código, en definitiva, hará que el JSpinner muestre los valores comprendidos

entre 0 y 10.

El usuario modifica el valor del JSpinner...

Page 146: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 145

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

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

SpinnerNumberModel nm = new SpinnerNumberModel();

nm.setMaximum(10); nm.setMinimum(0);

nm.setStepSize(2); spiValor.setModel(nm);

13. La línea añadida es:

nm.setStepSize(2);

Esta línea usa un método del modelo del JSpinner que permite definir el valor de cambio del JSPinner. Dicho de otra forma, esta línea hace que los valores del JSpinner salten de 2 en 2.

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

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

CONCLUSIÓN Los JSpinners son objetos que permiten seleccionar un número, ya sea escribiéndolo en el recuadro, o bien a través de dos botones triangular es que permiten aumentar o disminuir el valor actual. Los JSpinners son objetos con “modelo”. Es decir, e ste 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 núme ros deseados, y finalmente se une el modelo con el JSpinner. El objeto modelo del JSpinner permite definir el va lor mínimo y el valor máximo, así como el intervalo de aumento de los valores.

Ahora los valores están comprendidos entre 0 y 10

Page 147: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 146

10. EJERCICIO GUIADO. JAVA: SCROLLBARS Introducción a las JscrollBars (Barras de desplazam iento) La clase JScrollBar permite crear barras de desplazamiento independientes, como la que se muestra a continuación:

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

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

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

Valor mínimo

Decrementa el valor poco a poco (incremento unitario)

Incrementa el valor poco a poco (incremento unitario)

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

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

Page 148: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 147

Ejercicio guiado

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

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

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

5. Añade también una etiqueta con borde y llámala etiValor. 6. La ventana debe quedar más 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

método getValue. Ejecuta el programa para ver su funcionamiento.

Pulsa aquí y observa como el valor cambia poco a poco…

Page 149: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 148

9. Sigamos estudiando el programa. Se pide que cambies las siguientes propiedades de tu

barra:

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

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

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

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

Pero si pulsas aquí el valor cambia en mayor cantidad…

5

Page 150: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 149

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 mínimo, 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 máximo: aparece un valor de 145, cuando el valor máximo que asignamos fue de 150 ¿por qué?

Page 151: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 150

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

* Nuestra barra tiene un valor máximo de 150. ** Sin embargo, el valor de la barra viene indicado por el lado izquierdo del recuadro interno. *** Como el recuadro interno tiene un ancho definido a través de la propiedad VisibleAmount, el valor máximo que la barra puede alcanzar es de: Valor = ValorMáximo – Ancho del recuadro. Es decir, Valor alcanzable = 150 – 5 = 145

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

CONCLUSIÓN Las JScrollBars son barras de desplazamiento indepe ndientes. Al igual que los JSliders, las JScrollBars tienen un valor concreto, que puede ser obtenido a través del método getValue. Entre las características programables de una barra de desplazamiento, tenemos las siguientes: - Valor mínimo (propiedad Minimum) - Valor máximo (propiedad Maximum) - Incremento unitario (propiedad UnitIncrement) - Incremento en bloque (propiedad BlockIncrement) - Tamaño del recuadro de la barra (propiedad Visib leAmount)

Valor máximo (150) *

Valor de la barra (145) **

5 ***

Page 152: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 151

11. EJERCICIO GUIADO. JAVA: BARRA DE MENUS Barras de Menús La barra de menús nos permitirá acceder a las opciones más importantes del programa. Todo programa de gran envergadura suele tener una barra de menús.

Ejercicio guiado

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

2. Añade a tu ventana un objeto JMenuBar

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

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

5. Aprovecha el Inspector para cambiar el nombre al objeto JMenuBar. Llámalo barraMenus. 6. Cambia también el nombre al objeto JMenu. Asígnale el nombre menuArchivo. El Inspector

tendrá el siguiente aspecto:

Page 153: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 152

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

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

9. Puedes añadir más opciones principales a la barra de menús haciendo clic con el derecho

sobre el objeto de la barra de menús y activando la opción “Añadir JMenu”.

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

aspecto:

Page 154: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 153

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

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

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

14. Ya tenemos creada la barra de menús (JMenuBar) con sus opciones principales (JMenu).

Ahora se tendrán que definir las opciones contenidas en cada opción principal. Por ejemplo, crearemos las opciones contenidas en el menú Archivo.

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

JMenuItem”.

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

Page 155: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 154

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

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 opción Archivo se despliega mostrando dos submenús: Abrir y Guardar.

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

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

Page 156: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 155

20. Añada un nuevo JMenuItem al menú Archivo y ponle el nombre menuSalir. El texto de esta

opción será “Salir” (use su propiedad text) El aspecto del Inspector será el siguiente:

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

Observa el efecto que produce el separador.

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

Sin embargo, un JMenu puede contener a otros JMenu, que a su vez contendrán varios JMenuItem. Usando el botón derecho del ratón y la opción “Añadir”, añade un JMenu dentro de menuEdicion:

Page 157: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 156

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

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

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

La opción Edición (JMenu) contiene una opción 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 ratón. Cada objeto del menú tiene un evento ActionPerformed que permite programar lo que debe suceder cuando se active dicha opción del menú.

Page 158: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 157

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

this.getContentPane().setBackground(Color.RED); Este código cambia el color de fondo de la ventana a rojo.

28. Compruebe el funcionamiento de la opción “Rojo” del menú ejecutando el programa. 29. Programa tu mismo las opciones “Verde” y “Azul”.

CONCLUSIÓN Las barras de menús son un conjunto de objetos de d istinto 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, representad as por objetos JMenu. Las opciones principales contienen opciones que apa recen al desplegarse el menú. Esta opciones son objetos del tipo JMenuItem. Un JMenu también puede contener otros JMenu, que a su vez contendrán JMenuItems. También puede añadir separadores (JSeparator) que p ermiten visualizar mejor las opciones dentro de un menú.

Page 159: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 158

12 EJERCICIO GUIADO. JAVA: BARRA DE HERRAMIENTAS Barras de herramientas Una barra de herramientas es básicamente un contenedor de botones y otros elementos propios de la ventana. A través de estos botones se pueden activar de forma rápida las opciones del programa, las cuales suelen estar también incluidas dentro de la barra de menús. Ejercicio guiado

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

2. Añade a tu ventana un objeto JmenuBar (una barra de menús) 3. En la parte superior de tu ventana aparecerá esto:

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

La ventana quedará así:

Page 160: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 159

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

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

6. Puedes ver si los botones están 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 botón. A la barra la llamaremos barraHerramientas, y a los botones los llamaremos btnUno, btnDos, btnTres y btnCuatro:

Page 161: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 160

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

9. Ejecuta el programa y observa el resultado.

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

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

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

Luego ejecuta el programa y comprueba el funcionamiento del botón. 12. Los botones de la barra de herramientas normalmente no contienen texto, sino que contienen

un icono que representa la función que realiza. La forma de colocar un icono dentro de un botón es a través de su propiedad icon.

13. A través de la propiedad icon de un botón podrá seleccionar un fichero de imagen que

contenga la imagen a mostrar en el botón.

14. Activa la propiedad icon del primer botón. Luego elige la opción Fichero y pulsa el botón Seleccionar Fichero para buscar un fichero con imagen.

Nota: Busca un fichero de imagen que sea del tipo .gif o .jpg. Nota: Procura que la imagen sea pequeña. Nota: Se recomienda buscar imágenes .gif en Internet para practicar.

Page 162: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 161

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

CONCLUSIÓN Las barras de herramientas son simplemente contened ores de objetos. Normalmente botones. Los elementos de la barra de herramientas se maneja n de la misma forma que si no estuvieran dentro de la barra. Lo normal es hacer que los botones de la barra no t engan texto y tengan iconos asociados.

Page 163: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 162

13 EJERCICIO GUIADO. JAVA: MENUS EMERGENTES El evento mouseClicked El evento mouseClicked es capaz de capturar un clic del ratón sobre un determinado elemento de la ventana. Este evento recibe como parámetro un objeto del tipo MouseEvent, y gracias a él se puede conseguir información como la siguiente:

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

Se puede usar esta información para saber por ejemplo si se pulsó el botón derecho del ratón, y sacar en este caso un menú contextual en pantalla. En este ejercicio guiado se estudiarán las posibilidades del evento mouseClicked y se aplicarán a la creación y visualización de menús contextuales (o emergentes) Ejercicio guiado

1. Crea un nuevo proyecto. 2. No hace falta que añada nada a la ventana. 3. Programaremos la pulsación del ratón sobre el formulario, así que haga clic sobre el

formulario y active el evento mouseClicked.

4. Observe el código del evento: private void formMouseClicked(java.awt.event. MouseEvent evt ) { // TODO add your handling code here: }

Este evento recibe como parámetro un objeto llamado evt del tipo MouseEvent (en rojo en el código) que nos permite saber en qué condiciones se hizo clic.

5. Dentro del evento programe lo siguiente:

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

Page 164: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 163

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

7. Ahora quizás puedas comprender el código anterior. En él, se usa el método getButton del

objeto evt para saber qué botón se pulsó. El método getButton devuelve un entero que puede ser 1, 2 o 3 según el botón pulsado.

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

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

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ú. Llámalo menuEmergente. 12. Los menús emergentes se crean igual que las opciones de menús normales, añadiendo con el

botón derecho del ratón objetos JMenuItem.

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

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

15. El menú emergente ya está construido. Ahora tenemos que hacer que aparezca cuando el

usuario pulse el botón derecho del ratón sobre el formulario. Para ello, entraremos de nuevo en el evento mouseClicked del formulario y cambiaremos su código por el siguiente:

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

16. Este código significa lo siguiente:

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

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

Page 165: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 164

- Por último se necesita la posición y. Esta posición se puede conseguir gracias al método 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 opción suceda algo, solo hay que activar el método actionPerformed del JMenuItem correspondiente. Por ejemplo, active el actionPerformed del menuRojo y dentro programe lo siguiente:

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

19. Ejecuta el programa y comprueba lo que sucede al pulsar la opción Rojo del menú contextual. CONCLUSIÓN Los menús contextuales son objetos del tipo JPopupM enu. Estos objetos contienen JMenuItem al igual que las opciones de menú normale s. 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 neces ario programar el evento mouseClicked del objeto sobre el que quiera que aparezca el meú. Tendrá que usar el método show del menú emergente para mostrar dicho menú.

Page 166: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 165

PRACTICA 16. No Strings Attached Paso 1:

Descarga el esqueleto de la aplicación. Abre el proyecto en NetBeans, compílalo y córrelo 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 más brillantes científicos han analizado miles de cadenas de caracteres,

pero han llegado a la conclusión 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 número de 'X' y el número de 'Y' que se

encuentran en la cadena. Los científicos te informan que el sexo de un individuo puede ser determinado

mediante esta cadena obteniendo el número de X y de Y y comparándolos 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 científicos 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 demás caracteres deben ser descartados.

Para poder resolver el primer problema vamos a crear tres métodos, uno que regrese el número de X que tiene

la cadena, uno que regrese el número de Y que tiene la cadena y un último método que utilice estos dos para

devolver un String con el sexo correspondiente. Para poder recorrer una cadena caracter por caracter utilizamos

Page 167: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 166

el método charAt(int index) de la clase String, que nos devuelve el caracter que se encuentra en la posición

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 método:

Basándote en este método puedes crear el método getY(String chromosomes) que debe contar el número de

'Y' que tiene la cadena de caracteres recibida como parámetro. Con estos dos métodos también podrás crear el

método getSex(String chromosomes) que debe utilizar los dos métodos creados anteriormente y devolver

"Hombre" o "Mujer" de acuerdo al número de cromosomas X y cromosomas Y de la cadena. En el

actionPerformed() del botón debes mandar llamar este último método 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 método que remueva los caracteres que sobran sino debemos ir

revisando cada caracter y agregarlos a otro String en el que guardemos sólo el resultado con caracteres válidos.

Paso 3:

En el siguiente ejercicio vamos a obtener una cadena de caracteres y contar el número de veces que se repite

un caracter. Como puedes imaginarte este método es muy similar a getX() o getY(), pero en este caso el

Page 168: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 167

método debe ser más general. Además es importante realizar algunas validaciones, como que el segundo

JTextField no tenga más que un solo caracter.

Para poder obtener el número de caracteres que tiene una cadena puedes utilizar el método length(), con lo que

podrías saber si contiene un solo caracter. Después puedes utilizar el método charAt() para obtener el caracter

que está en la primera posición (recuerda que el índice empieza de 0) y crear un método genérico count(String

s, char c) que cuente el número de veces que aparece el caracter pasado como parámetro en el String pasado

como parámetro.

Paso 4:

Además de los métodos que hemos utilizado hasta el momento, Java cuenta con muchos métodos especiales de

utilería, con los que podemos crear un String nuevo con ciertas características especiales basándonos en otro

String. Un ejemplo de estos métodos es el método toUpperCase() que nos devuelve un String igual que el String

que manda a llamar el método pero con todas las minúsculas cambiadas por sus equivalentes en mayúsculas.

Sabiendo esto podemos construir el método que cambia a mayúsculas:

Por último cuenta el número de vocales que tiene el String utilizando el método que creamos en el paso 3 y

muestralo en un message dialog.

Page 169: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 168

PRACTICA 17. ¿Cómo nos arreglamos? Instrucciones Paso 1: Crea un nuevo programa de Java que tenga una ventana llamada MainFrame. Recuerda agregar la línea setVisible(true) en el constructor de la ventana y llamar el constructor desde el método 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 línea 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 métodos de arreglos de este laboratorio. El primer método que vamos a crear es un método que imprima un arreglo. Este método nos va a devolver una representación en String del arreglo que pasamos como parámetro. 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 método puede ser similar al siguiente:

Una vez que tenemos este método vamos a empezar a codificar los botones, el primer botón debe de iniciar el arreglo con diez posiciones y después 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 números

Page 170: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 169

aleatorios y vamos a recorrer el arreglo poniendo un número aleatorio en cada posición. Para hacer esto puedes utilizar un código similar al siguiente:

Paso 2: Con estos dos métodos ya podemos crear todos los demás. Para obtener el número mayor del arreglo debemos ir revisando casilla por casilla viendo si el número que tiene la casilla es más grande o más chico que el número más grande que habíamos 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 máximo del arreglo. Regularmente se utiliza el valor mínimo que se puede encontrar en el arreglo. Por ejemplo, como nuestro arreglo contiene números del cero al cien utilizaríamos el cero. Esto se hace para que garanticemos que cualquier número que está en el arreglo es mayor o igual que el número actual. Después debemos tomar en cuenta que debemos realizar una comparación para ver si el número del arreglo es mayor que el que habíamos guardado como máximo del arreglo (como se ve en la animación). Esto en código podemos verlo de la siguiente manera:

Por analogía implementa el método para encontrar el menor del arreglo.

Page 171: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 170

Paso 3: Ahora vamos a crear un nuevo método 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 están guardados y vamos a imprimir ese número. 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 después debes dividirlo entre el número de elementos que tiene el arreglo. Recuerda que existen métodos que te permiten saber el tamaño de un arreglo. Utilizando estos conocimientos y por analogía implementa el método que imprime el promedio de todos los elementos del arreglo. Recuerda que la división 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 división.

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 deberán realizar las siguientes operaciones: � Iniciar el arreglo con veinte valores aleatorios y mostrarlo en el JTextField � Contar el número 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 numéricos X y Y. Después 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 código:

Page 172: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 171

PRACTICA 18. Welcome to the Matrix Instrucciones

Paso 1:

Descarga el esqueleto de la aplicación. Abre el proyecto en NetBeans, compílalo y córrelo 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 están 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 botón suma y después

actions -> actionPerformed para ir al código 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:

Page 173: Primer Corte Netbeans

INGENIERIA DE TELECOMUNICACIONES

UNIDADES TECNOLOGICAS DE SANTANDER

DOCENTE: ROGERIO ORLANDO BELTRAN CASTRO

NETBEANS PROGRAMACION ORIENTADA A OBJETO 172

En el código anterior hay una cosa interesante que es preciso entender para poder saber cómo funcionan las

matrices. En el segundo for podemos ver la instrucción matrix[i].length que quiere decir que obtenga el largo

del arreglo en la posición 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 están contenidos dentro. Esto quiere decir que podemos tratar matrix[0] como si fuera un arreglo normal, por ejemplo, para mandarlo como parámetro de una función, también quiere decir que los arreglos no necesariamente son rectangulares sino que pueden tener diferente número 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 querría decir que tenemos un arreglo que contiene arreglos que contienen arreglos, por lo que tendríamos que utilizar tres ciclos para recorrerlos. Ahora vamos a crear el método que obtiene el valor absoluto. El valor absoluto de un número es el valor numérico de un número sin tomar en cuenta su signo. Y está definido como la siguiente función:

Tomando esto en cuenta podemos recorrer toda la matriz y si el número en la posición 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 gráfica. Por analogía con el ejercicio de la suma de matrices y los valores absolutos, así como los ejercicios de arreglos contesta los demás ejercicios del laboratorio. Comprime tu carpeta de trabajo y mándala por correo.