jueves, 18 de diciembre de 2014

Java Swing básico - Botones y eventos (JButton)

Bienvenidos una vez mas, en este tutorial vamos a ver como agregar botones a nuestros programas, y que reaccionen cuando pulsemos sobre ellos, este elemento es uno de los mas utilizados.

Un botón visualmente se vería de la siguiente manera:



Lo que haremos sera, que al pulsar sobre un botón, se cambie el valor de un JLabel, es decir el texto del mismo.


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class Ventana extends JFrame implements ActionListener{
 private JButton boton;
 private JLabel label;
 
 public Ventana(){
  setTitle("JButton tutorial");//Titulo de la ventana
  setBounds(200,200,250,150);//Posicion y tamaño de la ventana: X, Y, Width, Height
  setResizable(false);//La ventana no se podra redimensionar
  setLayout(null);//Ningun layout, trabajaremos con coordenadas
  setDefaultCloseOperation(EXIT_ON_CLOSE);//Al cerrar la ventana se cerrara el proceso
  
  label = new JLabel("El boton no se ha pulsado");//Creamos un JLabel
  label.setBounds(10,10,200,20);//Posicion del JLAbel: X, Y, Width, Height
  add(label);//Agregamos el JLabel a la ventana
  
  boton = new JButton("Cambiar texto");//Creamos el JButton
  boton.setBounds(10,50,130,30);//Posicion del JButton: X, Y, Width, Height
  boton.addActionListener(this);//Agregamos el boton al Listener para que reaccione a una accion, y le pasamos el Listener
  add(boton);//Agregamos el JButton a la ventana
  
  setVisible(true);//Una vez creada la ventana, la hacemos visible
 }
 

 public void actionPerformed(ActionEvent e) {
  label.setText("El boton se ha pulsado");//Cambiamos el valor del JLabel "label"
 }
 
 public static void main(String[] args) {
  new Ventana();
 }
}

Como siempre, antes que nada debemos importar lo que vamos a usar, en este tutorial usaremos, ademas de lo que ya hemos visto los JButton y los eventos para los mismos.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;

Debemos hacer que la clase implemente de ActionListener, el cual nos provee un método (actionPerformed), que es el método encargado de manejar los eventos.
public class Ventana extends JFrame implements ActionListener{

Luego de esto debemos crear 2 variables de clase sin inicializar, una de tipo JButton y otra JLabel.
private JButton boton;
private JLabel label;

No explico lo demás, ya que lo explique en tutoriales anteriores, y doy por hecho que ya lo sabes hacer.
Después en el constructor inicializaremos las variables previamente creadas.
Al igual que en tutoriales anteriores:
Primero creábamos un JLabel, le colocamos una posición y un tamaño, y lo agregamos a la ventana, bueno acá es lo mismo, solo que antes de agregarlo, tenemos que hacer un paso extra, tenemos que añadir el botón al Listener para que el mismo realice una acción que nosotros mismos creamos.
  boton = new JButton("Cambiar texto");//Creamos el JButton
  boton.setBounds(10,50,130,30);//Posicion del JButton: X, Y, Width, Height
  boton.addActionListener(this);//Agregamos el boton al Listener para que reaccione a una accion, y le pasamos el Listener
  add(boton);//Agregamos el JButton a la ventana

Si se acuerdan, habíamos implementado la interface ActionListener, que nos proveía un método el cual se llama actionPerformed. Este método se llamara cada vez que pulsemos sobre un botón que se haya agregado el Listener, Obligatoriamente deberemos escribir este método (actionPerformed):
Si miramos el método, veremos que adentro de los bloques del mismo, escribimos lo que hará el botón una vez lo pulsemos, en este caso, le cambiamos el valor al JLabel:
public void actionPerformed(ActionEvent e) {
  label.setText("El boton se ha pulsado");//Cambiamos el valor del JLabel "label"
 }

si ejecutamos el código, obtendríamos algo como lo siguiente:


Algunos métodos útiles:

setText("Nombre visual del botón");  Este método me permite cambiar el nombre del botón, le pasamos como parámetro el nombre.

setEnabled(false); Con este método podremos activar o desactivar el botón, según los convenga.

Bueno terminamos con este tutorial, en el siguiente tutorial veremos como añadir múltiples botones, y que cada uno haga algo diferente.

Cualquier duda, no te olvides de comentar.

No hay comentarios:

Publicar un comentario