domingo, 29 de agosto de 2010

Manejo de Timer En Swing

Bueno, este es mi primer post para mi nuevo Blog.... vamos a Javear :P :

hace algun tiempo, me consultaban, bueno y si quiero que algo suceda cada x tiempo en mi form de java.. como hago... pues despues de investigar un poco, logre aclarar esta duda, existe en la libreria Swing un objeto Timer, q se me hizo muy pero muy practico. como funciona?

basicamente este objeto lleva un ActionPerform.. el cual ejecuta cada x milisegundos.... bastante simple no?... yo hago mi codigo ActionPerform, que hago todo lo que yo necesite cada x tiempo y lo paso a travez del constructor de la clase Timer.

Deben tener presente que si le hacen fix a la libreria cuando usen IDE's como Netbeans que tomen la libreria  java.util.Date; ya que esta clase existe para la libreria Util que no se que carajos hara.... en el siguiente ejemplo, observamos como hacemos un simple relojito.. muestra el cambio de la fecha en cada segundo... 

Esto es algo simple, pintamos un JFrame. le Anadimos un jLabel para que este sea el que muestra la hora actualizada.... en el constructor le enviamos una nueva instancia del ActionListener, siendo esta una interface, se hace necesario implementar el codigo del constructor, y aqui es donde ponemos el codigo de lo que queremos que ejecute cada x tiempo pero bueno digo a cada raro, q X X X y esto donde va? pues dah! en el mismo constructor, esta clase tiene un constructor 

Timer(X, A) donde X es el tiempo en milisegundos y A es el evento ActionPerformer que le vamos a dar a la clase para que ejecute... 


aqui mi ejemplo ....




/*
* MuestraTiempo.java
*
* Created on Aug 29, 2010, 11:21:22 AM
* Este es un pequeno ejemplo de como hacer un Timer como era en VisualBasic ahora en java...
*
*/

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.swing.Timer;

/**
*
* @author Xavi
*/
public class MuestraTiempo extends javax.swing.JFrame {
private final Timer timer;
private javax.swing.JLabel jLabel1;

/** Creates new form MuestraTiempo */
public MuestraTiempo() {
initComponents();
timer = new Timer(1000, new ActionListener() {

public void actionPerformed(ActionEvent e) {
jLabel1.setText(new Date().toString());
}
});
timer.setInitialDelay(0);
timer.setCoalesce(true);
timer.start();
}

@SuppressWarnings("unchecked")
private void initComponents() {

jLabel1 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 224, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(166, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 25, Short.MAX_VALUE))
);

pack();
}

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MuestraTiempo().setVisible(true);
}
});
}
}

Y asi es como se veria :P actualizando cada segundo :D..... jejeje.... dejenme sus comentarios .....


Creacion De Mi Blog

Buenos Dias, Este es mi primer blog, en todaaa mi vida, que por q lo hice...... no se, me parecio algo interesante, un medio donde publicar mis vivencias con java y con todo este universo de la programacion. que quien soy? soy un ingeniero de sistemas Colombiano, q actualmente trabaja desarrollando en cobol... si yo se.. cobol no es un lenguaje q se diga la locura absoluta, pero es el q me da mi sustento diario, igual es sencillo....

Por todo esto abri mi propio blog. para ir aprendiendo nuevas cosas de java... yo ya tengo un par de anos desarrollando en java, pero aun asi hay demasiadas cosas que no se....

asi... que ... aqui vamos :D

Xavi...