Si tenemos un applet que trabaja con imágenes directamente, ya sea un applet gráfico o de dibujo, los lienzos o zonas de dibujo (Canvas) resultan muy útiles.
Los Canvas son un Componente básico que captura eventos de exposición (expose), de ratón y demás eventos relacionados. La clase base Canvas no responde a estos eventos, pero se puede extender esa clase base creando subclases en las que controlemos eseos eventos.
Al permitir saltarse el manejo normal de eventos, y junto con los métodos de representación gráfica, los canvas simplifican la producción de applets que necesitan una única funcionalidad para distintas áreas. Por ejemplo, el applet Lienzo.java, contiene un manejador de eventos que controla el evento mouseDown en el canvas. Si el evento no se genera en el canvas, se le pasa al applet que lo tratará como un evento de ratón normal.
import java.awt.*; import java.applet.Applet; public class Lienzo extends Applet { Button boton; public void init() { setLayout( new BorderLayout( 15,15 ) ); boton = new Button( "Test" ); MiCanvas canv = new MiCanvas( 100,100 ); add( "Center",canv ); add( "South",boton ); } public boolean action( Event evt,Object obj ) { System.out.println( "Evento: " + obj ); return true; } public boolean mouseDown( Event evt,int x, int y ) { System.out.println( "Raton: ("+x+","+y+")" ); return true; } } class MiCanvas extends Canvas { private int ancho; private int alto; public MiCanvas( int anc,int alt ) { ancho = anc; alto = alt; reshape( 0,0,anc,alt ); } public void paint( Graphics g ) { g.setColor( Color.blue ); g.fillRect( 0,0,ancho,alto ); } public boolean mouseDown( Event evt,int x, int y ) { if( x < ancho && y < alto ) { System.out.println( "Raton en Canvas: ("+x+","+y+")" ); return true; } return false; } }
|
[Anterior] [Indice] [Siguiente] |