[java] 마우스 드래그를 이용한 그림 그리기 기능 추가하기

이번에는 Java 어플리케이션에 마우스 드래그를 이용하여 그림을 그릴 수 있는 기능을 추가해 보겠습니다.

1. MouseMotionListener 구현

우선, MouseMotionListener 인터페이스를 구현하여 마우스 드래그 이벤트를 처리할 수 있도록 합니다.

import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

public class DrawingPanel extends JPanel implements MouseMotionListener {
    int startX, startY, endX, endY;

    public DrawingPanel() {
        addMouseMotionListener(this);
    }

    @Override
    public void mouseDragged(MouseEvent e) {
        endX = e.getX();
        endY = e.getY();
        repaint();
    }

    @Override
    public void mouseMoved(MouseEvent e) {
        // 사용하지 않음
    }
}

2. paintComponent 메소드 수정

다음으로, paintComponent 메소드를 수정하여 마우스 드래그에 따라 그림을 그릴 수 있도록 합니다.

import java.awt.Graphics;
import javax.swing.JPanel;

public class DrawingPanel extends JPanel implements MouseMotionListener {
    int startX, startY, endX, endY;

    public DrawingPanel() {
        addMouseMotionListener(this);
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawLine(startX, startY, endX, endY);
    }

    @Override
    public void mouseDragged(MouseEvent e) {
        endX = e.getX();
        endY = e.getY();
        repaint();
    }

    @Override
    public void mouseMoved(MouseEvent e) {
        // 사용하지 않음
    }
}

3. Application 클래스 수정

마지막으로, Application 클래스에서 DrawingPanel을 생성하고 프레임에 추가합니다.

import javax.swing.JFrame;

public class Application {
    public static void main(String[] args) {
        JFrame frame = new JFrame("그림 그리기");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new DrawingPanel());
        frame.setSize(400, 400);
        frame.setVisible(true);
    }
}

이제 마우스 드래그를 이용하여 그림을 그릴 수 있는 Java 어플리케이션이 완성되었습니다.

참고 문헌: