Haciendo funcionar los botones usando Listeners

En este tutorial vamos a hacer funcionar los botones de nuestra ventana, añadiendo "Listeners" a los botones de nuestro ejemplo.

Para ello tenemos dos ejemplos diferentes:

En el primero utilizaremos el código que tenemos a continuación de la clase LoginView1. En él, el código es muy similar al ejemplo del tutorial anterior pero hemos añadido en las dos últimas líneas un Listener al botón loginButton. Cuando se hace click en el botón, se llama al método actionPerformed() definido en la clase del objeto Listener. Un objeto ActionEvent es pasado como parámetro al método actionPerformed(), el cual mostrará un mensaje informándonos de que el botón login ha sido presionado.

package com.edu4java.swing.tutrial4;

import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class LoginView1 {

	public static void main(String[] args) {
		JFrame frame = new JFrame("Demo application");
		frame.setSize(300, 150);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		placeComponents(frame);
		frame.setVisible(true);
	}

	private static void placeComponents(JFrame frame) {
		frame.setLayout(null);

		JLabel userLabel = new JLabel("User");
		userLabel.setBounds(10, 10, 80, 25);
		frame.add(userLabel);

		JTextField userText = new JTextField(20);
		userText.setBounds(100, 10, 160, 25);
		frame.add(userText);

		JLabel passwordLabel = new JLabel("Password");
		passwordLabel.setBounds(10, 40, 80, 25);
		frame.add(passwordLabel);

		JPasswordField passwordText = new JPasswordField(20);
		passwordText.setBounds(100, 40, 160, 25);
		frame.add(passwordText);

		JButton loginButton = new JButton("login");
		loginButton.setBounds(10, 80, 80, 25);
		frame.add(loginButton);

		JButton registerButton = new JButton("register");
		registerButton.setBounds(180, 80, 80, 25);
		frame.add(registerButton);

		ActionListener loginButtonListener = new LoginButtonListener();
		loginButton.addActionListener(loginButtonListener);
	}
}
package com.edu4java.swing.tutrial4;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;

public class LoginButtonListener implements ActionListener {
	@Override
	public void actionPerformed(ActionEvent e) {
		JOptionPane.showMessageDialog(null, "login button has been pressed");
	}
}

En el caso de la clase LoginView2, el código es similar al anterior pero con la diferencia de que creamos un objeto Listener "myButtonListener" y se lo añadimos tanto al loginButton como al registerButton. El parámetro ActionEvent del método actionPerformed nos aporta información sobre el evento. Y en este ejemplo le pedimos que nos diga cual es el botón que ha sido presionado a través de la instructión "e.getSource()" y que nos informe en un mensaje.

package com.edu4java.swing.tutrial4;

import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class LoginView2 {

	public static void main(String[] args) {
		JFrame frame = new JFrame("Demo application");
		frame.setSize(300, 150);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		placeComponents(frame);
		frame.setVisible(true);
	}

	private static void placeComponents(JFrame frame) {
		frame.setLayout(null);

		JLabel userLabel = new JLabel("User");
		userLabel.setBounds(10, 10, 80, 25);
		frame.add(userLabel);

		JTextField userText = new JTextField(20);
		userText.setBounds(100, 10, 160, 25);
		frame.add(userText);

		JLabel passwordLabel = new JLabel("Password");
		passwordLabel.setBounds(10, 40, 80, 25);
		frame.add(passwordLabel);

		JPasswordField passwordText = new JPasswordField(20);
		passwordText.setBounds(100, 40, 160, 25);
		frame.add(passwordText);

		JButton loginButton = new JButton("login");
		loginButton.setBounds(10, 80, 80, 25);
		frame.add(loginButton);

		JButton registerButton = new JButton("register");
		registerButton.setBounds(180, 80, 80, 25);
		frame.add(registerButton);

		ActionListener myButtonListener = new MyButtonListener();
		loginButton.addActionListener(myButtonListener);
		registerButton.addActionListener(myButtonListener);
	}
}
package com.edu4java.swing.tutrial4;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JOptionPane;

public class MyButtonListener implements ActionListener {
	@Override
	public void actionPerformed(ActionEvent e) {
		JButton source = (JButton) e.getSource();
		JOptionPane.showMessageDialog(source, source.getText() + " button has been pressed");
	}
}

Video tutorial: Eventos. Capturando las entrada por teclado

<< Anterior Siguiente >>