본문 바로가기

프로그램언어/자바

이벤트 리스너 예제3

마우스 이벤트

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