들어가기 전에...

아래 내용을 숙지하고 보시는 것이 이해가 빠릅니다.

https://ondolroom.tistory.com/279

 

자바 WindowBuilder 설치

들어가기 전에... 필자는 STS툴(이클립스)를 사용하고 있으며, WindowBuilder로 스윙을 간단히 구현하고, 자세한 코드는 직접 짜는 것을 추천한다. 이클립스 마켓에서 윈도우빌더를 설치하자. WindowBuilder생성..

ondolroom.tistory.com

https://ondolroom.tistory.com/280

 

자바 스윙(SWING) 클릭으로 이미지 변경하기 (프로젝트 대비)

목표 : 마우스 리스너를 작동해본다. 들어가기 전에... 아래의 내용들을 숙지하시고 진행해주세요 https://ondolroom.tistory.com/279 자바 WindowBuilder 설치 들어가기 전에... 필자는 STS툴(이클립스)를 사용하..

ondolroom.tistory.com

 

파일생성 및 이미지 넣기

 

WindowBuilder로 파일을 하나 생성하고

이미지 객체를 생성하자.

이미지 좌표를 설정할 수 있게 변수를 전역공간에 배치하자

 

 

나만의 JPanel 만들기

 

JPanel을 상속받아 나만의 JPanel을 만들자

메인 클래스 안에 inner클래스로 생성한다

코드를 복사하려면 더보기 클릭

더보기
	class MyPanel extends JPanel {

		@Override
		protected void paintComponent(Graphics g) {
			super.paintComponent(g); // 캔버스 비우기
			g.drawImage(img, imgX, imgY, this); // 이미지 그리기

		}

		public MyPanel() {
			setFocusable(true); // 입력 포커스 받기


			// addMouseListener(new MyMouseListener());
			addMouseMotionListener(new MouseAdapter() { // 드래그는 모션리스너다

				@Override
				public void mouseDragged(MouseEvent e) {
					imgX = e.getX(); // 마우스의 좌표를 받아서 이미지 좌표에 저장
					imgY = e.getY();
					System.out.println(e.getX());
				}
			});
		}
	}

여기서 하나 더 추가해야한다.

repaint를 무한반복하는 쓰레드를 추가하는 것이다.

위의 빨간 빈공간에 추가한다.

위 쓰레드 괄호안에 러너블 인터페이스를 넣고 run을 오버라이딩 해준다

 

while문에 repaint를 넣어 화면을 새로 갱신하자.

 daemon으로 만들어 메인이 종료되면 같이 꺼지게 만들자.
(굳이 이렇게 하지 않아도 된다.)

new Thread(러너블).start;을 이용해도 무방

코드를 복사하려면 더보기 클릭

더보기
			Thread nt = new Thread(new Runnable() {

				@Override
				public void run() {
					while (true) {

						repaint(); // 그림 다시그리기
						try {
							Thread.sleep(10);
						} catch (InterruptedException e) {
							e.printStackTrace();
						}
					}
				}
			});

			nt.start(); // 스레드 실행

 

JPanel을 MyPanel로 바꾸기

 

이제 initialize에 있는 JPanel을 MyPanel로 바꾸자

전역공간에 추가하는것도 잊지말자

위 코드를 아래와 같이 바꾸자

 

 

 

결과

 

+ Recent posts