[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);
}
}
'Java > 자바 Swing' 카테고리의 다른 글
[Java] 63. Swing: 리스너 응용-리스너를 구현하는 두 가지 방법 (0) | 2024.04.29 |
---|---|
[Java] 62. Swing: 이벤트 리스너 (0) | 2024.04.29 |
[Java] 60. Swing: 이미지 출력하기 (0) | 2024.04.29 |
[Java] 59. 사용자 정의 예외 클래스 (0) | 2024.04.29 |
[Java] 56. Swing 응용 예제: 집 그리기 (0) | 2024.04.26 |