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