jueves, 25 de junio de 2009

Uso de ActionListener para añadir acciones a un jButton en Java

En la guía anterior construimos un proyecto y creamos una interfaz gráfica usando SWING. Ahora ocuparemos el mismo proyecto para explicar el ActionListener.

Si no tienen el proyecto aquí está el código fuente para NetBeans:
http://www.megaupload.com/?d=CVKNCZIP

Paso 1: Implementar la interfaz ActionListener y sus métodos

Para que podamos implementar la interfaz ActionListener y sus métodos abstractos debemos usa la sentencia "implements ActionListener" seguido de la declaración de clase. En este caso sería:

public class IDEfrm extends JFrame implements ActionListener
{

También debemos importar "java.awt.event.ActionListener;" usando la sentencia "import java.awt.event.ActionListener;" en la zona de importaciones.

Ahora que hemos implementado la interfaz debemos añadir por obligación todos los métodos que esta posee. En este caso sería:

public void actionPerformed(ActionEvent e) {

}

Paso 2: Añadir las acciones a los jButton

Ahora estamos preparados para añadir acciones al los jButton. Para esto debemos usar la propiedad .setActionCommand(" ") y .addActionListener(this); en el método initComponents(). La sentencia sería así para el caso del jButton2 que lleva la etiqueta "Nuevo":

jButton2.setText("Nuevo"); //esta línea ya está escrita, solo para ubicarse
jButton2.setActionCommand("Nuevo");
jButton2.addActionListener(this);

Con la propiedad setActionComand lo que hacemos es asignarle un string, en este caso "Nuevo" al jButton para que el ActionListener lo escuche y haga lo que se indica (esto lo haremos mas tarde). Además con la sentencia .addActionListener(this); hacemos que el método abstracto actionPerformed() que está en esta clase (por eso el "this") sea el encargado de escuchar las acciones del jButton.

Ahora que el jButton está enviando la acción solo falta programar el método actionPerformed() para que escuche al jButton y haga lo que queramos.

Paso 3: Programando en actionPerformed()

Ahora nos dirigimos al método actionPerformed y agregamos el siguiente código:

if(e.getActionCommand().equals("Nuevo"))
{

}


En este caso la variable "e" está declarada en el método actionPerformed(ActionEvent e). Esta variable de tipo ActionEvent es la que obtiene el string que un jButton envñia en caso de ser pulsado, en este ejemplo obtiene el string "nuevo". Con el código que agregamos lo que hacemos es verificar que el string que la variable "e" capturó sea "nuevo", lo que indica que estamos pulsando el jButton2.

Ahora sólo tenemos que programar lo que queramos que el jButton2 haga. Para este ejemplo sólo haremos que el programa imprima un string "Se está pulsando nuevo en la ventana".
Para esto dentro del if que agregamos escribimos la sentencia:

System.out.println("Se está pulsando nuevo en la ventana");

Esta sentencia hace que el ide imprima en la consola la cadena deseanda y al final le agregue un salto de línea para que las siguientes cadenas a imprimir no aparezcan pegadas y seguidas a esta. El resultado sería:






Ahora les pondré el código fuente. Sólo que en mi caso hice más que sólo agragar un System.out.println(). Lo que hice fué con cáda jButton realizar una accion que activara o desactivara otros jButton o algunos jTextField. Esto será muy útil para la siguiente guía en la que conectaremos nuestra interfaz a mySQL. Además en el método iniComponents() establecí algunos jTexField como "no editables", aunque estos se activaran cúando apretemos los jButton indicados.

http://www.megaupload.com/?d=FWXEYOYF

Note: Recuerden que sobre este proyecto agregaremos la conexión a base de datos con mySQL

Hasta la próxima y recuerden comentar o preguntar por dudas.






1 comentario: