본문 바로가기
Java/자바 Swing

[Java] 61. Swing: 이미지 겹치기

글: Song hyun 2024. 4. 29.
728x90
반응형

[Java] 61. Swing: 이미지 겹치기

 

1. JLabel 이란?

JLabel은 짧은 글, 혹은 하나의 이미지를 출력할 때 사용되는 클래스이다.

입력 이벤트(키보드 리스너, 이벤트 리스너 등)에 반응하지 않는다는 특징이 있다.

JLabel을 사용하면, 아래와 같이 몇 개의 사진을 겹쳐 출력할 수도 있다.

 

아래의 코드를 참고하려 사진을 겹쳐 출력해보자.


 

2. Swing-JLabel을 사용해 이미지 겹쳐 출력하기

MyFrame 클래스 살펴보기

(1) 멤버 변수 
-JLabel의 형식을 가지는 backgroundMap, player라는 멤버변수를 선언한다.
이는 각각 배경/배경 위에 겹쳐 출력할 사진을 의미한다.

(2) 사용자 정의 생성자 MyFrame()
-메서드 initData(), setInitData()를 객체 생성과 동시에 실행한다.

(3) initData() 메서드
setTitle: 창의 제목을 입력한다.
setSize: 창의 크기를 입력한다.
setDefaultCloseOperation: 창의 x 버튼을 눌렀을 때의 처리를 선언한다.

icon: Icon 형의 객체 icon에 하위 클래스인 ImageIcon을 업캐스팅했다.
여기에서는 배경이 될 이미지를 삽입한다.
backgroundMap=new JLabel(icon): 멤버 변수인 backgroundMap에 icon을 출력하는 JLabel을 초기화한다.
background.setSize: 해당 객체의 사이즈 조절
background.setLocation: 헤당 객체의 좌표 위치 설정

(4) setInitData() 메서드
setLayout(null) <-null값을 입력할 시, 가장 기본인 FlowLayout으로 설정된다.
add(background): background 객체를 붙인다.
backgroundMap.add(player): backgroundMap 객체에 player 객체를 붙인다.
setVisible(true): 창이 보이게끔 설정한다.

package ch04;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class MyFrame extends JFrame {

	private JLabel backgroundMap;
	private JLabel player;

	public MyFrame() {
		initData();
		setInitData();
	}

	private void initData() {
		setTitle("JLabel을 활용한 이미지 사용 연습");
		setSize(500,500);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Icon icon = new ImageIcon("images/background1.jpg"); // 업 캐스팅 상태  
		backgroundMap = new JLabel(icon);
		backgroundMap.setSize(500,500);
		backgroundMap.setLocation(0,0);
		
		player=new JLabel(new ImageIcon("image1.png"));
		player.setSize(100,100);
		player.setLocation(300,100);
	}

	private void setInitData() {
		// 좌표값으로 세팅하기 위해서는 배치 관리자를 null 값으로 만들어 줘야 한다.
		setLayout(null);
		add(backgroundMap);
		backgroundMap.add(player);
		setVisible(true);

	}

}
728x90
반응형