7

Click here to load reader

Programando bajo el paradigma orientado a objetos, parte uno

Embed Size (px)

Citation preview

Page 1: Programando bajo el paradigma orientado a objetos, parte uno

Usando Lenguajes de Programación en la

Programación Orientada a

Objetos

Manipulando Eventos en Java

Profesor

ENRIQUE TORRESCANO MONTIEL

Page 2: Programando bajo el paradigma orientado a objetos, parte uno

Programación Java con Eventos

Recordemos algo...

Cuando encendemos una computadora, tras el arranque de su sistema operativo, y tras haber iniciado sesión

el usuario del sistema, es necesario que se interactué con el mismo a través de lo que conocemos como

pantallas o bien con las interface gráficas del usuario (independientemente de que un usuario use una

computadora, su sesión será la que identifique su interfaz) para poder hacer uso de las aplicaciones en la

computadora y en los programas.

Bien, hablamos de las interfaces de usuario y con ello tenemos que algunas ya están preestablecidas por el

mismo sistema, hablo del sistema operativo, de las aplicaciones informáticas de Office, de un antivirus (si es

que se usa el de prueba o el que se adquirió como licencia o se compró), de lo que es el ratón y el teclado junto

con sus controladores, de un monitor que también debió instalarse en el sistema.

Otros programas fueron seleccionados por el usuario y en esto podemos mencionar (para ejemplificar) a un

convertidor de audio, de video, un reproductor, un navegador, en fin, tantas cosas que le podemos instalar a la

computadora.

Lo anterior no es otra cosa que los elementos (algunos tan sólo) que integran la interfaz del usuario, es decir, lo

que el usuario verá, usará, modificará, obtendrá del sistema informático.

Dentro de la interfaz de usuario, lo que el mismo hace es mandar instrucciones al sistema para que se haga lo

que se desea, lo que se quiere, lo que se necesita y esto se hace a través de ordenes por medio del clic de un

ratón, de oprimir una tecla en el teclado y debemos definir que para que un programa responda a la

interacción con el usuario, fue antes necesario hacer la programación para tales efectos, y habiéndose dado

esta programación, es que puedes leer éste documento dándole ordenes a la computadora para que la rueda

del ratón se desplace por el producto de Word.

Esto que uno hace cotidianamente es llamado evento y son los sucesos que se obtienen tras la injerencia de un

clic, de una presión de una tecla, es decir, de la interacción con el sistema.

Cuando se hace lo anterior, se está haciendo uso de los eventos y de los componentes gráficos para que todo

sea más fácil, intuitivo, eficaz para el usuario y para esto cuando se programa con eventos en la programación,

se usan los botones, las etiquetas, las cajas de texto y queda como ejemplo ese botoncito en Word que se

llama insertar, vista y cuando les usas, lo que estás haciendo es provocar un evento para que sea el detonador

que despliegue la acción que el programa va a realizar y seguramente podrás hacer más oscuras tus letras, ver

un mapa del documento que estas editando, ingresar una imagen a tu .doc, en fin lo que quieras hacer, para

eso se programó así ese pequeño o gran programa que usas.

Page 3: Programando bajo el paradigma orientado a objetos, parte uno

Bien como todo lo que se hace en programación tiene una estructura, usemos el concepto de ingeniería para

verle de esta forma, vayamos al asunto...

Si deseamos programar con eventos, necesitamos de un componente (*) sobre el cual se detectará el evento requerido.

Un escuchador del evento que debe estar asociado al elemento (*) mencionado con anterioridad y, éste (el escuchador) será el que detecte el evento que ocurra.

Un método que será el encargado de definir o re-definir, según se necesite, las acciones a realizarse al presentarse el evento.

Elementos que componen el manejo de eventos y su estructura sintáctica

Los componentes gráficos y el escuchador

Dentro de la programación con eventos tenemos a los componentes gráficos que son los medios por los cuales

el usuario se comunicará con el programa para las acciones deseadas y los componentes gráficos necesitan

de un escuchador que está en espera de que el usuario provoque un evento, entonces cuando el usuario hace

el llamado, el escuchador le detecta: "escucha" y si la acción que se realizó es la que corresponde al

componente gráfico, es pues que se desencadena la respuesta. Por ello cuando deseamos imprimir, si todo

está en orden y la impresora conectada y encendida, es que se desencadena la impresión, de lo contrario el

sistema dirá que la impresora no está lista para imprimir.

En el caso del ejemplo de la impresora la provocación al evento se puede hacer por medio del ratón, tras una

serie secuenciada del conocido clic o bien por medio de la combinación de las teclas. Vemos que aquí ya

tenemos a dos eventos conocidos como eventos de mouse y eventos del teclado.

Page 4: Programando bajo el paradigma orientado a objetos, parte uno

Bien analicemos un programa y veamos su estructura sintáctica, que no es otra cosa que el conjunto de reglas

correctas de los elementos que constituyen un código para un programa en programación, en éste caso, Java...

package PROGRAMACION;

/**La clausula package debe ser la primera sentencia del archivo fuente. * Cualquier clase declarada en ese archivo pertenece al package indicado. * En el ejemplo, el archivo que contiene las sentencias: package PROGRAMACION; . . . class EjemploSintactico { . . . declara que la clase EjemploSintactico pertenece al package PROGRAMACION /* En el ejemplo mostrado la ventana permitira arrastrar una etiqueta por la * misma ventana. Se utiliza el evento del raton, tanto para la posicion * como para cuando se mueve de sitio el puntero*/ import java.awt.*;

import java.awt.event.*;

/* LOS PAQUETES java.awt, java.awt.event, ADEMAS DE javax.swing

* contienen todas las herramientas necesarias para desarrollar interfaces gráficas de usuario*/

public class EjemploSintactico {

/*ASI FUE NOMBRADA LA CLASE; EjemploSintactico*/

public static void main( String args[] ) {

/* Con lo anterior, se instancia un objeto de tipo Interfaz Hombre-Maquina*/

ETM etm = new ETM (); } } class ETM { /* Variables de referencia pasadas como parametros*/

Label Etiquetando;

LabelInfo EtiquetaDeTorrescano;

// Define la posicion inicial de la etiqueta int posicionX = 45; int posicionY = 35; /*EN ESTA POSICION CUANDO DAS RUN AL PROYECTO, VERAS LA ETIQUETA EN LA VENTANA ABIERTA EN FORMA CENTRADA EN LA PARTE SUPERIOR * / CUANDO MAXIMIZAS, PUEDES MOVERLA DE SU POSICION*/

public ETM () {

// Crea un objeto visual Etiqueta (Label)

Etiquetando = new Label( "MAXIMIZA, DA CLIC, SOSTEN EL CURSOR OPRIMIDO,"

Page 5: Programando bajo el paradigma orientado a objetos, parte uno

+ "ARRASTRA Y SUELTA, ENTONCES VERAS DONDE QUEDA LA ETIQUETA" );

Etiquetando.setBackground( Color.ORANGE);

/*(Color.ORANGE) nos indica en este caso que el color de la etiqueta

* sera anaranjado, puede ser otro color, pero siempre en ingles,

* ya que se reconoce solo el idioma ingles para el codigo del color*/

// Crea un objeto Panel para contener la etiqueta

Panel miPanel = new Panel();

miPanel.setLayout( null );

miPanel.add( Etiquetando );

// Fijamos la posicion, el ancho y el alto de la etiqueta

//Estos valores pueden cambiar y depende del gusto de cada quien para

//asignar el tamaño...

Etiquetando.setBounds( posicionX,posicionY,800,50 );

/* Crea un objeto visual Frame para contenerlo todo*/

Frame miFrame = new Frame();

miFrame.setSize( 900,300 );

miFrame.setTitle( "COMPONENTES Y ESTRUCTURA EN JAVA; EVENTOS"

+ " MENSAJE … "

+ "MENSAJE …" );

miFrame.add( "Center",miPanel );

miFrame.setVisible( true );

// Crea un objeto para mantener informacion acerca de la etiqueta

EtiquetaDeTorrescano = new LabelInfo();

EtiquetaDeTorrescano.labelX = posicionX;

EtiquetaDeTorrescano.labelY = posicionY;

/* Se instancia y registra un objeto MouseMotionListener

* y otro MouseListener que procesaran los eventos de

* movimiento del raton y de los botones del raton*/

Etiquetando.addMouseMotionListener(

new ProcesoMovimientoRaton( EtiquetaDeTorrescano ) );

Etiquetando.addMouseListener(

new EventoRaton( EtiquetaDeTorrescano,Etiquetando ) );

//de no existir lo anterior, la etiqueta quedaría estatica en un solo sitio

// Se instancia y registra un objeto receptor de eventos

// para terminar la ejecucion del programa cuando el

// usuario decida cerrar la ventana

Page 6: Programando bajo el paradigma orientado a objetos, parte uno

Terminando procesoVentana = new Terminando();

miFrame.addWindowListener( procesoVentana );

//De no exitir lo anterior, no se podria cerrar el programa y tendrías

//si maximizaste, minimizar tu ventana para poder regresar al programa

}

}

class LabelInfo {

int labelX;

int labelY;

int ClicEnRatonX;

int ClicEnRatonY;

int MoviendoElRatonX;

int MoviendoElRatonY;

}

class EventoRaton extends MouseAdapter {

LabelInfo labelInfo;

Label label;

EventoRaton( LabelInfo iLabelInfo,Label iLabel ) {

labelInfo = iLabelInfo;

label = iLabel;

}

public void mousePressed( MouseEvent evt ) {

// Guarda la posicion inicial en que se pulsa el raton

labelInfo.ClicEnRatonX = evt.getX();

labelInfo.ClicEnRatonY = evt.getY();

}

// Al soltar el boton se calcula la nueva posicion de la // etiqueta, en funcion de su posici0n inicial, el punto en // que se encontraba el raton al pulsar el boton y el punto

Page 7: Programando bajo el paradigma orientado a objetos, parte uno

// final cuando se suelta el boton. Debemos pulsar y soltar dentro // de la etiqueta, sino no se realiza ningun movimiento //Despues de pulsar y soltar dentro de la etiqueta, notaras que la misma se //mueve hasta el lugar en que dejaste de oprimir el raton public void mouseReleased( MouseEvent evt ) {

int nuevaPosicionX = labelInfo.labelX +

labelInfo.MoviendoElRatonX - labelInfo.ClicEnRatonX;

int nuevaPosicionY = labelInfo.labelY +

labelInfo.MoviendoElRatonY - labelInfo.ClicEnRatonY;

// Movemos la etiqueta a la nueva posicion

label.setLocation( nuevaPosicionX,nuevaPosicionY );

// Guarda la posicion actual de la etiqueta

labelInfo.labelX = nuevaPosicionX;

labelInfo.labelY = nuevaPosicionY;

}

}

class ProcesoMovimientoRaton extends MouseMotionAdapter {

LabelInfo labelInfo;

ProcesoMovimientoRaton( LabelInfo iLabelInfo ) {

labelInfo = iLabelInfo;

}

public void mouseDragged( MouseEvent evt ) {

// Guarda la posicion durante el movimiento del raton

labelInfo.MoviendoElRatonX = evt.getX();

labelInfo.MoviendoElRatonY = evt.getY();

}

}

class Terminando extends WindowAdapter {

public void windowClosing( WindowEvent evt ) {

System.exit( 0 );

}

}

ATENTAMENTE

Profr. Enrique Torrescano Montiel