Christmas Pikachu 마우스 리스너 (MouseListener) - 1
개발일지/자바

마우스 리스너 (MouseListener) - 1

ZI_CO 2022. 9. 17.

 

package blogpractice;

import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;
import javax.swing.JLabel;

// 마우스 리스너 : 
public class MouseEventListener1 extends JFrame implements MouseListener{

	JLabel jLabel;
	
	final int LABEL_WIDTH = 100; // 라벨의 가로 크기
	final int LABEL_HEIGHT = 100; // 라벨의 세로 크기
	int xPosition = 100; 
	int yPosition = 100;
	
	
	public MouseEventListener1() {
		initData();
		setInitLayout();
		addEventListener();
	}
	
	private void initData() {
		setTitle("마우스 이벤트 사용법");
		setSize(500, 500);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
		jLabel = new JLabel("나 잡아봐라");
	
	}
	
	private void setInitLayout() {
		setVisible(true);
		setLayout(null); // 배치를 좌표값을 넣어 원하는 곳에 배치하기위해 null값을 넣어준다.
		

		
		// jLabel의 좌표, 사이즈를 setBounds통해 (x좌표, y좌표, 가로크기, 세로크기) 설정을 해준다.
		jLabel.setBounds(xPosition, yPosition, LABEL_WIDTH, LABEL_HEIGHT); 
		add(jLabel);  // 위치와 크기가 설정이 됬으면 add해서 배치를 해주면된다.
		
		System.out.println("bouns : " + jLabel.getBounds()); // 배치가 되었을시 getBounds!!! 즉 좌표값과 크기를 표시해준다. 확인용 코드!!!
		
	}
	
	private void addEventListener() {
		this.addMouseListener(this); //  자기 자신의 주소값에 MouseListener을 등록을 해준다.
		// 앞의 this는 현재 컴포넌트가 없는 상태이다 그러기때문에 자기 자신의 주소에 마우스 리스너를 등록을 해주고
		// 마우스의 동작이 일어날때 이벤트를 발생시켜준다.
	}

	@Override
	public void mouseClicked(MouseEvent e) {
		System.out.println("마우스가 클릭 되었습니다.");
		// Rectangle : 사각형
		Rectangle r = jLabel.getBounds(); 
		// 사각형 r 변수에 라벨의 좌표값, 위치를(좌표 100, 100 // 크기 100, 100) 담아준다.
		e.getX();
		e.getY();
		System.out.println("x :  " + e.getX());
		System.out.println("y :  " + e.getY());
		
		// setLocation : 위치 설정
		// 마우스가 클릭 되었을시 클릭된 좌표값에서 라벨의 크기만큼 좌표값을 빼준다. 
		jLabel.setLocation(e.getX() - r.width, e.getY() - r.height);
		
	}

	@Override
	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	
	public static void main(String[] args) {
		new MouseEventListener1();
	}
}

댓글