마우스 이벤트
Mouse 이벤트의 리스너와 메소드
Mouse 이벤트가 발생하는 경우 | 리스너의 메소드 | 리스너 |
마우스가 컴포넌트 위에 올라갈 때 | void mouseEntered(MouseEvent e) | MouseListener |
마우스가 컴포넌트에서 내려올 때 | void mouseExited(MouseEvent e) | MouseListener |
마우스 버튼이 눌러졌을 때 | void mousePressed(MouseEvent e) | MouseListener |
눌러진 버튼이 떨어질 때 | void mouseReleased(MouseEvent e) | MouseListener |
마우스로 컴포넌트를 클릭하였을 때 | void mouseClicked(MouseEvent e) | MouseListener |
마우스가 드래그되는 동안 | void mouseDragged(MouseEvent e) | MouseMotionListener |
마우스가 움직이는 동안 | void mouseMoved(MouseEvent e) | MouseMotionListener |
마우스 휠이 구르는 동안 | void mouseWhellMoved(MouseWheelEvent e) | MouseWheelListener |
마우스 함수
int getX() | 마우스 포인터의 X좌표 리턴 |
int getY() | 마우스 포인터의 Y좌표 리턴 |
Point getPoint() | 마우스 포인터의 위치를 Point 객체로 리턴(x, y) |
int getClickCount() | 마우스의 클릭 횟수 리턴 |
int getButton() | 눌러진 마우스 버튼의 번호를 리턴 |
마우스 이벤트를 처리하는 예제
import javax.swing.*; import java.awt.event.*; import java.awt.*;
public class MouseListenerAllEx extends JFrame { private JLabel la = new JLabel("No Mouse Event"); // 메시지 출력 레이블 컴포넌트
public MouseListenerAllEx() { setTitle("MouseListener와 MouseMotionListener 예제"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane(); c.setLayout(new FlowLayout());
MyMouseListenerlistener = new MyMouseListener(); // 리스너 객체 생성 c.addMouseListener(listener); // MouseListener 리스너 등록 c.addMouseMotionListener(listener); // MouseMotionListener 리스너 등록
c.add(la); setSize(300,200); setVisible(true); }
// Mouse 리스너와 MouseMotion 리스너를 모두 가진 리스너 작성 class MyMouseListener implements MouseListener, MouseMotionListener { // MouseListener의 5개 메소드 구현 public void mousePressed(MouseEvent e) { la.setText("mousePressed ("+e.getX()+","+e.getY()+")"); // 마우스가 눌러진 위치 (x,y) 점을 출력 } public void mouseReleased(MouseEvent e) { la.setText("MouseReleased("+e.getX()+","+e.getY()+")"); // 마우스가 떼어진 위치 (x,y) 점을 출력 } public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) { Component c = (Component)e.getSource(); // 마우스가 올라간 컴포넌트를 알아낸다. c.setBackground(Color.CYAN); } public void mouseExited(MouseEvent e) { Component c = (Component)e.getSource(); // 마우스가 내려간 컴포넌트를 알아낸다. c.setBackground(Color.YELLOW); }
// MouseMotionListener의 2개 메소드 구현 public void mouseDragged(MouseEvent e) { // 마우스가 드래깅되는 동안 계속 호출 la.setText("MouseDragged ("+e.getX()+","+e.getY()+")"); } public void mouseMoved(MouseEvent e) { // 마우스가 움직이는 동안 계속 호출 la.setText("MouseMoved ("+e.getX()+","+e.getY()+")"); } }
public static void main(String [] args) { new MouseListenerAllEx(); } } |
실행 결과]
마우스를 더블클릭할 때마다 컨텐트팬의 배경색을 랜덤하게 변경하는 프로그램을 작성해 보자.
import javax.swing.*; import java.awt.event.*; import java.awt.*;
public class ClickAndDoubleClickEx extends JFrame { public ClickAndDoubleClickEx() { setTitle("Click and DoubleClick 예제"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane(); c.addMouseListener(new MyMouseListener()); // Mouse 리스너 달기 setSize(300,200); setVisible(true); }
// MouseAdapter를 상속받아 Mouse 리스너 구현 class MyMouseListener extends MouseAdapter { public void mouseClicked(MouseEvent e) { if(e.getClickCount() == 2) { // 더블클릭의 경우 // [0,255] 사이의 랜덤한 r,g,b 정수 값 얻기 int r = (int)(Math.random()*256); int g = (int)(Math.random()*256); int b = (int)(Math.random()*256);
Component c = (Component)e.getSource(); // 마우스가 클릭된 컴포넌트를 알아낸다. c.setBackground(new Color(r,b,g)); // 컴포넌트의 배경을 r,g,b 색으로 칠한다. } } }
public static void main(String [] args) { new ClickAndDoubleClickEx(); } } |
실행 결과]
'프로그램언어 > 자바' 카테고리의 다른 글
스윙 컴포넌트의 공통 메소드2 (0) | 2020.11.04 |
---|---|
스윙 컴포넌트의 공통 메소드1 (0) | 2020.11.04 |
이벤트 리스너 예제2 (0) | 2020.11.03 |
이벤트 리스너 예제1 (0) | 2020.11.03 |
이벤트 처리하기 (0) | 2020.11.02 |