최원종의 개발 블로그

JLable 사용해 이미지 겹치기 본문

Java/SWING

JLable 사용해 이미지 겹치기

chl6698 2026. 3. 17. 17:34

-이미지 겹치기


코드

package swing.ch09;

import javax.swing.*;

public class MyFrame extends JFrame {

    private JLabel backgroundMap;
    private JLabel player;

    public MyFrame() {
        initData();
        setInitLayout();
        addEventListener();
    }

    private void initData() {
        setTitle("이미지 사용 연습");
        setSize(1000, 600);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 배경 이미지 설정
        ImageIcon backgroundIcon = new ImageIcon("images/backgroundMap.png");
        backgroundMap = new JLabel(backgroundIcon);
        backgroundMap.setSize(1000, 600);
        backgroundMap.setLocation(0,0);

        // 플레이어 설정
        ImageIcon playerIcon = new ImageIcon("images/playerL.png");
        player = new JLabel(playerIcon);
        player.setSize(100, 100);
        player.setLocation(200, 200);

    }

    private void setInitLayout() {
        setLayout(null); // 좌표 기반
        backgroundMap.add(player);
        add(backgroundMap);
        setVisible(true);
    }

    private void addEventListener() {

    }

    // 테스트 코드 (메인 쓰레드)
    public static void main(String[] args) {
        new MyFrame();
    }

}

-KeyListener사용해 이동 방향으로 이미지 변환 및 범위 안에 가두기

 

클램프(Clamp) 기법 : 범위 안에 가두는 기법

(0,0)                          (1000,0)
  ┌──────────────────────────────┐
  │                              │
  │                              │
  │        게임 화면              │  세로 600
  │                              │
  │                              │
  └──────────────────────────────┘
(0,600)                      (1000,600)
             가로 1000
// x 범위 제한
if (x < 0)    x = 0;    // 왼쪽 벽
if (x > 900)  x = 900;  // 오른쪽 벽

// y 범위 제한
if (y < 0)    y = 0;    // 위쪽 벽
if (y > 500)  y = 500;  // 아래쪽 벽

 

 

-코드

package swing.ch09;

import javax.swing.*;

public class MyFrame2 extends JFrame {

    private JLabel backgroundMap;
    private JLabel player;

    public MyFrame2() {
        initData();
        setInitLayout();
        addEventListener();
    }

    private void initData() {
        setTitle("이미지 사용 연습");
        setSize(1000, 600);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 배경 이미지 설정
        ImageIcon backgroundIcon = new ImageIcon("images/backgroundMap.png");
        backgroundMap = new JLabel(backgroundIcon);
        backgroundMap.setSize(1000, 600);
        backgroundMap.setLocation(0,0);

        // 플레이어 설정
        ImageIcon playerIcon = new ImageIcon("images/playerL.png");
        player = new JLabel(playerIcon);
        player.setSize(100, 100);
        player.setLocation(200, 200);

    }

    private void setInitLayout() {
        setLayout(null); // 좌표 기반
        backgroundMap.add(player);
        add(backgroundMap);
        setVisible(true);
    }

    private void addEventListener() {

    }

    // 테스트 코드 (메인 쓰레드)
    public static void main(String[] args) {
        new MyFrame2();
    }

}

'Java > SWING' 카테고리의 다른 글

로또 게임 만들기  (0) 2026.03.18
Swing (Thread 활용)  (0) 2026.03.18
Key Listener  (0) 2026.03.17
이벤트 리스너(ActionListener)  (0) 2026.03.16
패널 만들어 보기  (0) 2026.03.09