Crear un detector de mouse en Java
En Java, la clase MouseListener
recibe una notificación cuando el mouse se mueve en un espacio en particular. Este tutorial demuestra cómo crear una interfaz MouseListener
.
Crear un detector de mouse en Java
MouseListener
recibe una notificación cuando hay un cambio de estado. Este cambio puede ser hacer clic, presionar y soltar el mouse o ingresar y salir de un área de ventana en particular.
El MouseListener
es parte del paquete Java.awt.event
.
El mecanismo paso a paso de Java MouseListener
se da a continuación:
- Cuando hacemos clic o movemos el mouse, un objeto en el programa ayuda a implementar la interfaz.
- Ese objeto ya está registrado con el oyente. Es por eso que un evento se genera presionando, haciendo clic o moviendo el mouse.
- Cuando se genera el evento, ayuda en la invocación de uno de los métodos.
- El evento
Mouse
se pasa al método después de esta invocación.
El MouseListener
tiene varios métodos que se invocan en diferentes eventos. Estos métodos se dan en la tabla.
S.No | Método | Descripción |
---|---|---|
1 | void mouseClicked(MouseEvent e) |
Este método se invoca al hacer clic con el mouse: presionar y soltar. |
2 | void mouseEntered(MouseEvent e) |
Este método se invoca cuando se mueve el mouse y se ingresa a un componente. |
3 | void mouseExited(MouseEvent e) |
Este método se invoca cuando se mueve el mouse y se sale de un componente. |
4 | void mousePressed(MouseEvent e) |
Este método se invoca cuando se presiona el botón del mouse solo en un componente. |
5 | void mouseReleased(MouseEvent e) |
Este método se invoca cuando se suelta el botón del mouse de un componente. |
Ahora, probemos un ejemplo que invocará todos los métodos descritos en la tabla.
Ejemplo:
package delftstack;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
// The main class implements the MouseListener interface
public class Mouse_Listener implements MouseListener {
// create two labels one frame and one string
Label label1, label2;
Frame Demo_Frame;
String event_invo;
// Constructor
Mouse_Listener() {
Demo_Frame = new Frame("The Mouse Listener");
label1 = new Label("This is demo for the mouse listener events\n", Label.CENTER);
label2 = new Label();
// set the frame layout as flowlayout
Demo_Frame.setLayout(new FlowLayout());
// add labels to the frame
Demo_Frame.add(label1);
Demo_Frame.add(label2);
// Register the created class Mouse_Listener to catch as well as respond to the mouse events,
Demo_Frame.addMouseListener(this);
// set the size of frame 450x300
Demo_Frame.setSize(450, 300);
// visibility of the frame will be true
Demo_Frame.setVisible(true);
}
// mouseClicked method
public void mouseClicked(MouseEvent ev) {
event_invo += " The mouse button was clicked";
// set the text of label 2 as even_invo
label2.setText(event_invo);
// visibility will be true
Demo_Frame.setVisible(true);
}
// mouseEntered method
public void mouseEntered(MouseEvent ev) {
// when mouse enters the window
label2.setText("The mouse has entered the window");
// visibility will be true
Demo_Frame.setVisible(true);
}
// mouseExited method
public void mouseExited(MouseEvent ev) {
// when the mouse leaves the window
label2.setText("Mouse has left the window");
// visibility as true
Demo_Frame.setVisible(true);
}
// mousePressed method
public void mousePressed(MouseEvent ev) {
// when the mouse is pressed
label2.setText("Mouse button is pressed");
// set the visibility as true
Demo_Frame.setVisible(true);
}
// mouseReleased method
public void mouseReleased(MouseEvent ev) {
// set the string event_invo
event_invo = "The mouse button is released ";
label2.setText(event_invo);
// visibility as true
Demo_Frame.setVisible(true);
}
// main method
public static void main(String args[]) {
new Mouse_Listener();
}
}
Producción:
El código anterior implementa todos los métodos descritos anteriormente, lo que significa que la ventana sabrá cuándo el mouse ingresa, sale, presiona, suelta o hace clic.
MouseListener
generalmente se usa con Java swing para crear una interfaz.
Por ejemplo, necesitamos obtener los puntos X
e Y
de la posición del clic. Podemos hacerlo combinando MouseListener
y Swing
.
Implementemos este ejemplo.
package delftstack;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Mouse_Listener {
private JFrame Demo_Frame;
private JLabel Label_One;
private JLabel Label_Two;
private JPanel Control_Panel;
public Mouse_Listener() {
Create_GUI();
}
public static void main(String[] args) {
Mouse_Listener MouseListenerDemo = new Mouse_Listener();
MouseListenerDemo.Show_Mouse_Listener();
}
private void Create_GUI() {
Demo_Frame = new JFrame("Java SWING With MouseListener");
Demo_Frame.setSize(400, 400);
Demo_Frame.setLayout(new GridLayout(3, 3));
Label_One = new JLabel("", JLabel.CENTER);
Label_Two = new JLabel("", JLabel.CENTER);
Label_Two.setSize(350, 350);
Demo_Frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent) {
System.exit(0);
}
});
Control_Panel = new JPanel();
Control_Panel.setLayout(new FlowLayout());
Demo_Frame.add(Label_One);
Demo_Frame.add(Control_Panel);
Demo_Frame.add(Label_Two);
Demo_Frame.setVisible(true);
}
private void Show_Mouse_Listener() {
Label_One.setText("X Y Points for MouseListener");
JPanel Demo_Panel = new JPanel();
Demo_Panel.setBackground(Color.green);
Demo_Panel.setLayout(new FlowLayout());
Demo_Panel.addMouseListener(new CustomMouseListener());
JLabel Msg_Label = new JLabel("Welcome to Delftstack.com", JLabel.CENTER);
Demo_Panel.add(Msg_Label);
Msg_Label.addMouseListener(new CustomMouseListener());
Demo_Panel.add(Msg_Label);
Control_Panel.add(Demo_Panel);
Demo_Frame.setVisible(true);
}
class CustomMouseListener implements MouseListener {
public void mouseClicked(MouseEvent e) {
Label_Two.setText("Mouse Clicked: (" + e.getX() + ", " + e.getY() + ")");
}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
}
}
Producción:
El código anterior obtendrá los puntos x
e y
para la posición del clic en un área en particular. El código utiliza Java Swing
y MouseListener
.
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook