miércoles, octubre 08, 2008

Timer, retardo y ahorro de memoria en Java

Hola que tal, pues esta vés explicaremos el uso de un timer en Java, es realmente muy sencillo, un timer consta de dos partes, el tiempo de retardo y las acciones que se ejecuran, en esta ocación hablaremos del Timer incluido en la libreria javax.swing.Timer, bueno es muy sencillo primero que nada se declara el objeto Timer, puede importar la libreria (import javax.swing.Timer), o bien hacerlo del modo largo para ahorro de memoria, que es el que se usara en este ejemplo, preste mucha atención. luego crearle el evento como se vera en la estructura completa.

javax.swing.Timer timer;
timer=new javax.swing.Timer
(
/*Retardo en milisegundos esto no va*/1000,new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent e)
{
//Instrucciones que realizara el Timer
}
}
);


Cabe mencionar que si no cuentas con algun contenido o una ventana, se cerrara el programa sin ejecutar el timer para ello debes agregar un retardo como el siguiente.

try
{
Thread.currentThread().sleep (10000);
} catch (Exception e)
{
}



y bueno el ejemplo que se maneja a continuación ara que una etiqueta gire al rededor de la ventada, bueno acá esta el codigó espero sus comentarios y resolvere dudad, hasta pronto.

public class Obj_Mov
{
//Declaraciones
javax.swing.Timer timer;//El timer
java.awt.Frame ventana;//La ventana
java.awt.Label etiqueta;//La Etiqueta
int Retardo=1000,izq=10,der=385,sup=35,inf=385,conth=10,conv=35;
public Obj_Mov()
{
//Procedimiento de Timer
timer=new javax.swing.Timer
(
Retardo,new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent e)
{
//Instrucciones que realizara el Timer
avanzar_derecha(conth,etiqueta);
avanzar_abajo(conv,etiqueta);
avanzar_izquierda(conth,etiqueta);
avanzar_arriba(conv,etiqueta);
}
}
);


ventana=new java.awt.Frame("Mi Ventana");
ventana.setBackground(java.awt.Color.black);
ventana.setBounds((1024/2)-200,(768/2)-200,400,400);
ventana.setLayout(null);
ventana.setVisible(true);
ventana.setResizable(false);
ventana.addWindowListener(new java.awt.event.WindowAdapter()
{
public void windowClosing(java.awt.event.WindowEvent e)
{
System.exit(0);
}
});

etiqueta= new java.awt.Label("*");
etiqueta.setBackground(java.awt.Color.cyan);
etiqueta.setBounds(10,35,5,5);
ventana.add(etiqueta);



timer.start();

}

public void avanzar_derecha(int contador,java.awt.Label cosa)
{
while (contador<=der)
{
cosa.setBounds(contador,35,5,5);
++contador;
}
conth=contador-1;
}

public void avanzar_abajo(int contador,java.awt.Label cosa)
{
while (contador<=inf)
{
cosa.setBounds(385,contador,5,5);
++contador;
}
conv=contador-1;
}

public void avanzar_izquierda(int contador,java.awt.Label cosa)
{
while (contador>=izq)
{
cosa.setBounds(contador,385,5,5);
--contador;
}
conth=contador+1;
}

public void avanzar_arriba(int contador,java.awt.Label cosa)
{
while (contador>=sup)
{
cosa.setBounds(10,contador,5,5);
--contador;
}
conv=contador+1;
}
public static void main (String a[])
{
Obj_Mov uno= new Obj_Mov();

/*Si no hay nada màs que el texto esto se para, pero se puede retardar con esto
try
{
Thread.currentThread().sleep (10000);
} catch (Exception e)
{
}
*/
}
}




Gracias por su lectura, agradecere tu comentario,
atte The Dzip.

1 comentario:

  1. hola, buenos dias!!
    puez lei tu blog
    y auch me acorde de mis
    clases de programacion ke
    llevaba en la prepa
    la verdad nunca fui muy
    buena para eso
    jeje
    bueno me voy
    y obvio ke creo
    que les srivira
    a muchos de tus lectores
    me despido
    ke tengas un excelente dia!!

    brujita_celeste28@hotm...
    me agregas vale!!!

    ResponderBorrar

Deja tu comentario, te lo agradecere By Dzip