본문 바로가기
Java

[JAVA] Swing을 이용한 스케치 기능 구현

by teamnova 2023. 9. 12.

안녕하세요 이번 게시글에서는 JAVA에서 Swing을 이용해 스케치 기능을 구현해보겠습니다. 

 

우선 Java Swing이란 Java에서 제공하는 그래픽 사용자 인터페이스(GUI) 툴킷 중 하나입니다. 

윈도우, 버튼, 체크박스, 텍스트 필드와 같은 기본적인 유저 인터페이스 요소를 만드는데 사용됩니다. 

 

결론적으로 해당 기능 시연영상부터 보여드리겠습니다.

 

다음은 전체적인 코드입니다. 주석으로 코드별 설정을 달아놓았으니 참고하시길 바랍니다.

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

// 해당 클래스는 JFrame 상속받고 있음.
// JFrame - Java Swing에서 창 또는 윈도우를 만드는 기본적인 클래스
public class StickCodeExample extends JFrame {
public StickCodeExample () {
// JFrame의 기본 설정
setTitle("StickCodeExample Painter"); // 창의 제목 설정
setSize(250,300); // 창의 크기 설정
setLayout(null); // 창의 레이아웃 설정 , null로 설정된 이유 : 개발자가 직접 컴포넌트 위치와 크기를 지정하겠다는 의미

JPanel signPanel = new JPanel(); // 스케치할 패널 생성
// JPanel 은 다른 GUI 컴포넌트를 그룹화하거나 담는 컨테이너 - 마우스로 그림을 그리는 영역으로 사용됨.
signPanel.setBackground(Color.white); // 배경은 하얀색으로 설정
signPanel.addMouseMotionListener(new MouseMotionAdapter() { // 마우스 이번트 처리하기 위함.
@Override // MouseMotionAdapter 클래스의 mouseDragged 메소드 오버라이딩
public void mouseDragged(MouseEvent e) { // 마우스를 누르고 드래그할때마다 이벤트 발생
signPanel.getGraphics().fillOval(e.getX(), e.getY(), 8, 8); //JPanel 클래스에 getGraphics 메소드로 Graphics 객체 반환
} //Graphics 클래스의 fillOval(x,y,width,height) 메소드(채워진 원 그려주는 메소드)를 이용하여
//MouseEvent 클래스의 e.getX,e.getY 메소드로 드래그할때마다 좌표반환하고 원그려주기
});
signPanel.setBounds(0,0,250,220);

// 버튼 추가
JButton btn = new JButton("확인");
btn.addActionListener(e->{ //버튼 눌렀을때 메시지창 띄워주고 패널 초기화
JOptionPane.showMessageDialog(null, "서명되었습니다.","메시지",JOptionPane.INFORMATION_MESSAGE);
signPanel.repaint();
});
btn.setBounds(100,230,60,30);

add(signPanel); //프레임에 추가
add(btn);
setVisible(true);
setLocationRelativeTo(null); //프레임 가운데로 띄워주기
setDefaultCloseOperation(EXIT_ON_CLOSE); //오른쪽위에 X 버튼 눌렀을때 프로그램 종료

}

public static void main(String[] args) {
new StickCodeExample();
}
}