자바 마우스 좌표출력[swing]

자바 마우스 좌표 출력[swing]

안녕하세요.

오늘은 저번 시간에 만들었던 패널에서 현재 마우스의 좌표를 찾고 출력해볼 겁니다.

  • 프레임, 패널 생성
  • 마우스 이벤트(MouseMotionListener)
  • 결과

1. 프레임, 패널 생성

사실 패널 생성까지는 필요 없을 수도 있지만 어렵지 않습니다.

글을 내리다 보면 프레임과 패널을 생성하는 코드도 보이겠지만 따로 작성해놓은 프레임, 패널 생성에 관한 글을 먼저 보시는 것을 추천드립니다.

[프로그래밍/JAVA] - java swing 창 만들기 패널.

 

java swing 창 만들기

자바 스윙(java swing) 창 만들기 자바에서 gui시작하기. JFrame을 이용해 창을 만드는 방법입니다. 1. Main.java만들기 2. program.java만들기 3. JFrame상속(gui기반의 프로그램을 만들기 위해 상속) 4. JFrame..

intunknown.tistory.com

[프로그래밍/JAVA] - 자바 패널에 이미지 넣기

 

자바 패널에 이미지 넣기

자바 패널에 이미지 넣기 안녕하세요. 오늘은 자바 패널(Panel)에 이미지를 넣어보겠습니다. 패널 만들기 넣을 이미지 준비 코드. 실행 결과 1. java swing 패널 만들기. 이 부분은 아래 글을 먼저 보시면 도움이..

intunknown.tistory.com

프레임과 패널 생성 코드.

(이런 식으로 만들면 됩니다. 쓰려면 조금 수정해야 할 겁니다.)

package test01;
import java.awt.Cursor;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main extends JFrame{
	/*패널1*/
	static JPanel page1=new JPanel() {
		/*이미지*/
		Image background=new ImageIcon(Main.class.getResource("../image/background1.png")).getImage();
		public void paint(Graphics g) {//그리는 함수
				g.drawImage(background, 0, 0, null);//background를 그려줌		
		}
	};
	public Main() {
		homeframe();//homeframe함수를 실행
		setpanel();//setpanel함수를 실행
	}
	/*프레임 설정*/
	public void homeframe() {
		setTitle("1");//타이틀
		setSize(400,400);//프레임의 크기
		setResizable(false);//창의 크기를 변경하지 못하게
		setLocationRelativeTo(null);//창이 가운데 나오게
		setLayout(null);//레이아웃 설정
		setVisible(true);//창이 보이게	
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//JFrame이 정상적으로 종료되게
	}
	/*패널 관련 설정*/
	public void setpanel() {
		/*위치 설정*/
		page1.setBounds(0, 0, 400, 400);//패널1의 위치 설정
		/*레이아웃 지정*/
		page1.setLayout(null);//레이아웃 설정
		/*패널이나 프레임에 추가*/
		add(page1);//프레임에 패널을 추가
	}
	/*메인함수*/
	public static void main(String[] args){
		new Main(); //실행하면 생성자가 실행됨.
	}
}

2. 마우스 이벤트(MouseMotionListener)

이제 MouseMotionListener를 추가해서 현재 마우스의 좌표를 계속 출력해주도록 만들겠습니다.

위의 패널 코드에 이 코드를 추가하면 됩니다.

함수의 이름은 제가 마음대로 만든 겁니다.

public void mgps() {
	page1.addMouseMotionListener(new MouseAdapter() { // 마우스 이벤트 
		@Override 
		public void mouseMoved(MouseEvent e) { // 마우스 움직일때. 
			System.out.println(e.getX()+" "+e.getY());//x좌표,y좌표 출력
		} 
	});
}

굳이 함수로 만들지 않고 생성자에 넣어주거나 해도 됩니다.

아래는 전체 코드입니다.

(아래 코드를 보시면 알겠지만 함수로 만들어놓고 생성자에서 불렀습니다.)

package test01;
import java.awt.Cursor;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main extends JFrame{
	/*패널1*/
	static JPanel page1=new JPanel() {
		/*이미지*/
		Image background=new ImageIcon(Main.class.getResource("../image/background1.png")).getImage();
		public void paint(Graphics g) {//그리는 함수
				g.drawImage(background, 0, 0, null);//background를 그려줌		
		}
	};
	public Main() {
		homeframe();//homeframe함수를 실행
		setpanel();//setpanel함수를 실행
		mgps();
	}
	/*프레임 설정*/
	public void homeframe() {
		setTitle("1");//타이틀
		setSize(400,400);//프레임의 크기
		setResizable(false);//창의 크기를 변경하지 못하게
		setLocationRelativeTo(null);//창이 가운데 나오게
		setLayout(null);//레이아웃 설정
		setVisible(true);//창이 보이게	
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//JFrame이 정상적으로 종료되게
	}
	/*패널 관련 설정*/
	public void setpanel() {
		/*위치 설정*/
		page1.setBounds(0, 0, 400, 400);//패널1의 위치 설정
		/*레이아웃 지정*/
		page1.setLayout(null);//레이아웃 설정
		/*패널이나 프레임에 추가*/
		add(page1);//프레임에 패널을 추가
	}
	public void mgps() {
		page1.addMouseMotionListener(new MouseAdapter() { // 마우스 이벤트 
			@Override 
			public void mouseMoved(MouseEvent e) { // 마우스 움직일때. 
				System.out.println(e.getX()+" "+e.getY());//x좌표,y좌표 출력
			} 
		});
	}
	/*메인함수*/
	public static void main(String[] args){
		new Main(); //실행하면 생성자가 실행됨.
	}
}

실행결과

이제 위의 코드를 실행해보겠습니다.

아래 사진에는 마우스 커서가 보이지 않을 겁니다.

(스크린샷에 마우스 커서가 안 잡히더라고요.)

그래도 마우스 커서가 움직이면 이클립스의 하단에 보이는 콘솔에 현재 마우스의 x좌표와 y좌표가 표시됩니다.

정리.

뭔가 어려워 보이지만 사실상 마우스의 좌표를 얻는 부분은 mgps()라는 이름으로 만든 함수 부분이 다입니다.

e.getX()로 x좌표를 얻고 e.getY()로 y좌표를 얻어서 println()으로 출력한 결과가 위의 사진입니다.

Designed by JB FACTORY