PIZiadas gráficas

PIZiadas gráficas

Mi mundo es la imagen.

Programación gráfica: Interacción : Eventos de ratón [JAVA]

mouseEventDespués de crear el entorno gráfico básico y el motor de animación, introduciremos las primeras nociones de interacción por medio de la incorporación del modelo de eventos del ratón.

La técnica consistirá en generar un evento o suceso cada vez que se interactua con el ratón. Este evento será capturado por alguno de nuestros módulos de programación, lo procesará y generará algún tipo de acción.

El primer paso será entender cómo generamos estos eventos y, posteriormente, incorporaremos acciones más elaboradas. De momento es suficiente con determinar el tipo de evento que se produce y la posición en la pantalla donde lo hemos realizado.

La programación dirigida por eventos es un paradigma de programación en el que tanto la estructura como la ejecución de los programas van determinados por los sucesos que ocurran en el sistema, definidos por el usuario o que ellos mismos provoquen.

Para entender la programación dirigida por eventos, podemos oponerla a lo que no es: mientras en la programación secuencial (o estructurada) es el programador el que define cuál va a ser el flujo del programa, en la programación dirigida por eventos será el propio usuario —o lo que sea que esté accionando el programa— el que dirija el flujo del programa. Aunque en la programación secuencial puede haber intervención de un agente externo al programa, estas intervenciones ocurrirán cuando el programador lo haya determinado, y no en cualquier momento como puede ser en el caso de la programación dirigida por eventos.(W)

Implementar el interface del escuchador de eventos

Vamos a implementar el sistema de eventos en una única clase de la librería gráfica para no complicar inicialmente el modelo. Lo primero que haremos será modificar la declaración de la clase responsable de mantener la base de datos y pintar los objetos gráficos: “BlackBoard”. Indicaremos con la etiqueta “implements” que esta clase es capaz de escuchar al ratón.

public class Blackboard extends Canvas implements MouseListener{

El nuevo interface nos obliga a añadir una nueva llamada a las librerías de JAVA para localizar los ficheros que implementan dicho interface. Lo haremos con la palabra reservada “import”.

import java.awt.event.MouseListener;

Será necesario implementar los métodos que se definen en el interface, así como importar la clase “MouseEvent” que se pasa como parámetro a estos métodos. De momento simplemente los declararemos sin incorporar ninguna funcionalidad.

	public void mouseClicked(MouseEvent arg0) {
		// TODO Auto-generated method stub
	}
	public void mouseEntered(MouseEvent arg0) {
		// TODO Auto-generated method stub
	}
	public void mouseExited(MouseEvent arg0) {
		// TODO Auto-generated method stub
	}
	public void mousePressed(MouseEvent arg0) {
		// TODO Auto-generated method stub
	}
	public void mouseReleased(MouseEvent arg0) {
		// TODO Auto-generated method stub
	}

Registro del evento

Registraremos un evento de ratón cada vez que se produzca. En el constructor de la clase o en un método de inicio se incorporará la llamada “addMouseListener” para indicar que queremos añadir el escuchador.

El parámetro que se pasa será el nombre de la clase que escucha al ratón. En nuestro caso indicaremos que es la misma clase que está registrando este evento la que será avisada cuando se produzca. Esto lo realizamos con la etiqueta “this“.

	public Blackboard(){
		this.addMouseListener(this);
	}

Gestión del evento

Definiremos un par de variables que almacenarán las coordenadas de la posición de pantalla en la que se ha pulsado el ratón

	private int lastx=0;
	private int lasty=0;

Implementaremos una de las funciones anteriores, por ejemplo la que se ejecuta cada vez que se ha pulsado el botón del ratón “mouseClicked”. De momento simplemente guardaremos las coordenadas en las que se ha pulsado, aunque podríamos haber complicado el programa con funcionalidad añadida.

Estas coordenadas se encuentran en el objeto o evento que se pasa a la función, el objeto “MouseEvent”

	public void mouseClicked(MouseEvent arg0) {
		lastx=arg0.getX();
		lasty=arg0.getX();
	}

Modificaremos el método encargado de dibujar en la pantalla gráfica para que pinte algo en la posición en la que el ratón se ha pulsado. Es la implementación más simple que nos permite verificar de forma gráfica que hemos capturado y procesado el evento del ratón.

	public void paintOffScreen(Graphics g){
		Enumeration enum=bd.elements();
		Object ob;
		while(enum.hasMoreElements()){
			ob=enum.nextElement();
			if(ob instanceof SimpleDrawable){
				((SimpleDrawable) ob).paint(g);
			}
		}
		paintMousePosition(g);
	}

La función responsable de esto es “paintMousePosition”, cuya implementación consiste en escribir de forma gráfica las coordenadas almacenadas de la posición del ratón, por medio de la función “drawString”.

	private void paintMousePosition(Graphics g) {
		g.drawString("("+lastx+","+lasty+")", lastx, lasty);
	}
JAVA

Curso JAVA

Related Posts

  • Programación gráfica: Doblebuffering : Dibujar en segundo plano [JAVA]Programación gráfica: Doblebuffering : Dibujar en segundo plano [JAVA] Al crear el motor de animación hemos visto que al refrescar la pantalla se produce un parpadeo indeseable. Este efecto es consecuencia del tiempo que se necesita para borrar la imagen y generar la nueva actualizada, resultado de animar los objetos. Una técnica para evitar esto es la […]
  • Fractales recursivos: Curva de Koch [JAVA]Fractales recursivos: Curva de Koch [JAVA] Hemos visto un primer programa denominado "DrawWorld" que nos introducía la programación en JAVA orientada a los gráficos. Este módulo de programación nos ha servido para ver un primer fractal recursivo: El triángulo de Sierpisnki. Veamos como modificar este programa elemental para […]
  • Fractales recursivos: Triángulo de Sierpinski [JAVA]Fractales recursivos: Triángulo de Sierpinski [JAVA] Hemos visto un primer programa denominado "DrawWorld" que nos introducía la programación en JAVA orientada a los gráficos. Veamos como modificar este programa elemental para generar un fractal recursivo básico: El triángulo de Sierpinski. (Ver como se genera un fractal recursivo) Es un […]
  • Programación gráfica: Motor gráfico de animación [JAVA]Programación gráfica: Motor gráfico de animación [JAVA] Después de definir un primer interface para dibujar los objetos gráficos en JAVA, vamos a implementar un motor gráfico de animación que nos permita gestionar la dinámica de la aplicación y, posteriormente, añadir interacción con el usuario. El motor se encargará de llamar a las […]
  • Programación gráfica: Objetos e interfaces orientados a gráficos [JAVA]Programación gráfica: Objetos e interfaces orientados a gráficos [JAVA] El siguiente paso en el tutorial de programación gráfica es definir un interface que será una clase JAVA que permita definir la acción de dibujar los gráficos y asignársela a los objetos, de forma que la clase encargada de pintarlos los reconozca adecuadamente.
  • Programación gráfica: Iniciar la construcción de la librería gráfica [JAVA]Programación gráfica: Iniciar la construcción de la librería gráfica [JAVA] Tras instalar el entorno de desarrollo (IDE) de Eclipse y crear un nuevo proyecto, hemos añadido un programa al proyecto Eclipse. El siguiente paso es empezar a estructurar la aplicación iniciando la construcción de los elementos de la biblioteca gráfica.