HOWTO · Java
Java에서 마우스 리스너 만들기
이 자습서는 Java에서 마우스 수신기를 만드는 방법을 보여줍니다.
이 페이지의 내용
Java에서 MouseListener 클래스는 마우스가 특정 공간에서 움직일 때 알림을 받습니다. 이 튜토리얼은 MouseListener 인터페이스를 생성하는 방법을 보여줍니다.
Java에서 마우스 리스너 만들기
‘MouseListener’는 상태 변경이 있을 때 알림을 받습니다. 이 변경은 마우스를 클릭, 눌렀다 떼는 것 또는 특정 창 영역에 들어가고 나가는 것일 수 있습니다.
MouseListener는 Java.awt.event 패키지의 일부입니다.
Java MouseListener의 단계별 메커니즘은 다음과 같습니다.
- 마우스를 클릭하거나 움직이면 프로그램의 개체가 인터페이스 구현을 도와줍니다.
- 해당 개체는 이미 수신기에 등록되어 있습니다. 그렇기 때문에 마우스를 누르거나 클릭하거나 이동하면 이벤트가 발생합니다.
- 이벤트가 생성되면 메소드 중 하나를 호출하는 데 도움이 됩니다.
- 이 호출 후에
Mouse이벤트가 메서드로 전달됩니다.
MouseListener에는 다양한 이벤트에서 호출되는 여러 메서드가 있습니다. 이러한 방법은 표에 나와 있습니다.
| S.No | 방법 | 설명 |
|---|---|---|
| 1 | 무효 mouseClicked(MouseEvent e) |
이 메서드는 마우스를 클릭할 때(눌렀다 떼면) 호출됩니다. |
| 2 | void mouseEntered(MouseEvent e) |
이 메서드는 마우스가 이동되어 구성 요소에 들어갈 때 호출됩니다. |
| 삼 | 무효 mouseExited(MouseEvent e) |
이 메서드는 마우스가 이동되어 구성 요소에서 나갈 때 호출됩니다. |
| 4 | 무효 mousePressed(MouseEvent e) |
이 메서드는 구성 요소에서만 마우스 버튼을 눌렀을 때 호출됩니다. |
| 5 | 무효 mouseReleased(MouseEvent e) |
이 메서드는 구성 요소에서 마우스 버튼을 놓을 때 호출됩니다. |
이제 표에 설명된 모든 메서드를 호출하는 예제를 시도해 보겠습니다.
예:
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();
}
}
출력:
위의 코드는 위에서 설명한 모든 메서드를 구현합니다. 즉, 마우스가 들어오거나, 존재하거나, 누르거나, 놓거나, 클릭할 때 창에서 알 수 있습니다.
MouseListener는 일반적으로 인터페이스를 생성하기 위해 Java 스윙과 함께 사용됩니다.
예를 들어 클릭 위치의 X 및 Y 지점을 가져와야 합니다. MouseListener와 Swing을 결합하여 이를 수행할 수 있습니다.
이 예제를 구현해 보겠습니다.
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) {}
}
}
출력:
위의 코드는 특정 영역의 클릭 위치에 대한 x 및 y 포인트를 가져옵니다. 이 코드는 Java Swing 및 MouseListener를 사용합니다.