[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 어플리케이션이 완성되었습니다.
참고 문헌:
- Oracle Java Documentation: https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseMotionListener.html