##
BOTON GRAFICO

AWT adolece de herramientas ya desarrolladas para implementar interfaces al uso, con alta proliferación de imágenes y facilidades para que el programador utilice directamente Componentes. Sin embargo, sí proporciona las herramientas suficientes como para que se puedan implementar cualquier tipo de Componentes, o modificar al gusto los ya existentes. Para mostrar un ejemplo, vamos a implementar un botón gráfico, BotonGrafico.java

Partimos de un botón normal al cual aplicaremos tres imágenes diferentes, para cada uno de los tres estados en que puede encontrarse: pulsado, liberado e inhabilitado.

> Su navegador no entiende la marca <APPLET>, la siguiente imagen muestra las tres imágenes que forman los tres estados posible del botón

En el fichero fuente, podemos comprobar que las tres imágenes se pueden pasar cómo parámetro en la llamada APPLET, por ejemplo:

    <APPLET CODE=BotonGrafico.class WIDTH=100 HEIGHT=50>
    <PARAM NAME=IMAGEN0 VALUE=boton0.gif>
    <PARAM NAME=IMAGEN1 VALUE=botonup.gif>
    <PARAM NAME=IMAGEN2 VALUE=botondn.gif>
    </APPLET>

Observando el código, se puede comprobar que una vez cargadas la imágenes, solamente se deben controlar los eventos del ratón, para que automáticamente se presenten las imágenes del botón adecuadas y responda correctamente.

    import java.awt.*;
    import java.applet.Applet;

    public class BotonGrafico extends Applet {
        private MediaTracker tracker;
        private Image imagen[] = new Image[3];
        private boolean BotActivo = false;
        private boolean BotPulsado = false;
        private boolean tresImg = false;
        private int Estado = 0;

        public void init() {
            String istr;
            tracker = new MediaTracker( this );

            // Recogemos las tres imágenes de los parámentros de llamada
            // al applet
            for( int i=0; i < 3; i++ )
                {
                istr = getParameter( "IMAGEN" + i );
                if( istr == null )
                    tresImg = false;
                else
                    {
                    // Registramos las imágenes con el Media Tracker
                    imagen[i] = getImage( getCodeBase(),istr );
                    tracker.addImage( imagen[i],0 );
                    try {
                        tracker.waitForAll();
                        }
                    catch( InterruptedException e ) {
                        System.out.println( "Error cargando imagen " + i );
                        }
                    }
                }
            }

        public void start() {
            repaint();
            }

        public void stop(){
            }

        // Controlamos la pulsación del ratón
        public boolean mouseDown( Event evt,int x,int y ) {
            BotPulsado = true;
            repaint();
            return( true );
            }

        // Controlamos cuando el usuario suelta el botón del ratón
        public boolean mouseUp( Event evt,int x,int y ) {
            if( BotPulsado && BotActivo )
                {
                BotPulsado = true;
                repaint();
                }
            else
                {
                BotPulsado = false;
                repaint();
                }
            return( true );
            }

        // Controlamos cuando el cursor del ratón entra en el
        // campo de acción del applet
        // Presentamos un mensaje en la línea de estado
        public boolean mouseEnter( Event evt,int x,int y ) {
            BotActivo = true;
            showStatus( "Tutorial de Java, Boton Grafico" );
            repaint();
            return( true );
            }

        // Controlamos cuando el cursor del ratón abandona el
        // lugar ocupado por el applet
        public boolean mouseExit( Event evt,int x,int y ) {
            BotActivo = false;
            showStatus( "" );
            repaint();
            return( true );
            }

        public void update( Graphics g ) {
            // Controlamos el estado en que se queda el botón
            // tras la acción que se haya hecho con el ratón
            if( !BotActivo )
                Estado = 0;
            else
                if( BotActivo && !BotPulsado )
                    Estado = 1;
                else
                    Estado = 2;
            paint( g );
            }

        public void paint( Graphics g ) {
            g.drawImage( imagen[Estado],0,0,this );
            }
        }

|  | ##### [Anterior] [Indice] [Siguiente]