Un origen de evento o "event source" es un objeto que puede retornar acciones de usuario (ya sean las acciones del mouse o teclear algo, etc...) en forma de "eventos". Los "eventos" son lógicamente otros Objetos, objetos de alguna "clase evento" o "event class". Hay muchas "event class" en la API de Java, y todas son facilmente identificables por tener la palabra "Event" dentro de su nombre (MouseEvent, KeyEvent, WindowEvent...).
Por lo tanto, un "event source" u origen de evento (como puede ser un botón) crea un OBJETO EVENTO cuando el usuario hace algo como pulsarlo. La mayoría del código que escribiré recibirá eventos en lugar de crearlos. En otras palabras, seré mas tiempo un "event listener" que un "event source".
Cada "evento" tiene su correspondiente interface listener. Si, por ejemplo quiero los eventos del ratón, tendríamos que implementar la "MouseListener interface" y recuerda, cuando implementamos una interface, debemos escribir la implementacion de todos los métodos de dicha interface en las subclases (recordar que si implementamos la interface en una superclase, no tenemos que implementar sus métodos en dicha clase, si no en las subclases de dicha clase, o mejor dicho, en las clases de más bajo nivel).
Algunas interfaces tienes más de un método, porque el mismo evento puede venir de diferentes formas, es decir, si implemento el MouseListener obtendré eventos para mousePressed, mouseReleased, mouseMoved, etc... Cada uno de esos eventos del ratón tiene un método diferente en la interface. Si implementamos el MouseListener el método mousePressed () será llamado cuando el usuario presiona el ratón y así con cada uno de los eventos.
En definitiva, para los eventos del ratón hay solo un objeto "evento", pero diferentes métodos representando los diferentes tipos de eventos del ratón.
Un JFrame es el objeto que representa una ventana en la pantalla. Es donde colocamos todos los elementos que representa una interface, elementos como botones, checkboxes, text fields, etc.
Clase Main
public class Main {
public static void main(String[] args) {
graphic grafica = new graphic();
grafica.comenzarInterface();
}
}
Clase Graphic:
import javax.swing.*;
public class graphic {
JFrame frame = new JFrame ();
JButton button = new JButton ("click me");
void comenzarInterface() {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(button);
frame.setSize(300,300);
frame.setVisible(true);
}
}
Si lanzamos este código veremos una ventaja con un gran botón en el centro, ¡La primera aplicación!.
Pero no ocurre nada cuando pulsamos el botón, bueno, realmente si que ocurre, se lanza un aviso de que el usuario ha pulsado el botón. Pero como no hemos creado código para ese caso, el botón no hace nada. Para hacer algo necesitamos dos cosas. La primera es un METODO y la segunda es SABER cuando el usuario ha pulsado el botón.
Vamos a cambiar, cuando el botón sea pulsado, el título del botón de "click me" a "I´ve been clicked"
Creamos un método llamado "changeIt"
public void changeIt() {
button.setText("I´ve been clicked!");
}
}
Pero ¿Como se comunica el usuario con el botón?. La respuesta es sencilla, implementando una interface ActionListener en nuestra clse.
import javax.swing.*;
import java.awt.event.*;
public class graphic implements ActionListener {
JFrame frame = new JFrame();
JButton button = new JButton("click me");
public void comenzarInterface() {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(button);
frame.setSize(300, 300);
frame.setVisible(true);
button.addActionListener(this);
}
public void actionPerformed (ActionEvent event){
button.setText("I´ve been clicked");
}
}
* Importamos el paquete donde se encuentran los ActionListener y los ActionEvent.
* Implementamos la interface. "una instancia de "graphic" es un ActionListener. El botón dará los eventos solamente a aquellas clases que implementen ActionListener.
* Hazte ver interesado en el botón, mediante este código le decimos "añademe a tu lista de Listeners"
El argumento que le pasas debe ser un objeto de la clase que implementa "ActionListener".
* Implementa la ActionListener (actionPerformed() de la interface).
No hay comentarios:
Publicar un comentario