Swing

bubble - 1 (기본 화면 완성 및 키 이벤트 처리)

whs5758 2025. 5. 1. 12:39

package bubble.test01;

import javax.swing.*;

public class Player extends JLabel implements Moveable {

    private int x;
    private int y;

    private ImageIcon playerR;
    private ImageIcon playerL;

    public Player() {
        initData();
        setInitLayout();
    }

    private void initData() {
        playerR = new ImageIcon("img/playerR.png");
        playerL = new ImageIcon("img/playerL.png");
    }

    private void setInitLayout() {
        x = 55;
        y = 535;
        setSize(50, 50);
        setIcon(playerR);
        setLocation(x, y);
    }

    @Override
    public void left() {
        System.out.println("player left() 메서드 호출 됨");
    }

    @Override
    public void right() {
        System.out.println("player right() 메서드 호출 됨");

    }

    @Override
    public void up() {
        System.out.println("player up() 메서드 호출 됨");

    }

    @Override
    public void down() {

    }
}
package bubble.test01;

import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class BubbleFrame extends JFrame {
    private JLabel backgroundMap;
    private Player player;

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

    private void initData() {
        setTitle("버블버블게임");
        setSize(1000, 640);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        backgroundMap = new JLabel(new ImageIcon("img/backgroundMap.png"));
        // 루트 패널에 JLabel 넣어보기
        setContentPane(backgroundMap);

        player = new Player();
    }

    private void setInitLayout() {
        setLayout(null); // 좌표기준 (절대 레이아웃)
        setResizable(false); // 리사이즈 조절 막기
        setLocationRelativeTo(null); // JFrame 화면 가운데 배치해줌
        add(player);
        setVisible(true);
    }


    private void addEventListener() {
        // 프레임에 키보드 이벤트 리스너 등록 처리
        this.addKeyListener(new KeyListener() {
            @Override
            public void keyTyped(KeyEvent e) {

            }

            @Override
            public void keyPressed(KeyEvent e) {
                System.out.println("code : " + e.getKeyCode());
                switch (e.getKeyCode()) {
                    case KeyEvent.VK_LEFT:
                        player.left();
                        break;
                    case KeyEvent.VK_RIGHT:
                        player.right();
                        break;
                    case KeyEvent.VK_UP:
                        player.up();
                        break;
                }
            }

            @Override
            public void keyReleased(KeyEvent e) {

            }
        });

    }

    public static void main(String[] args) {
        new BubbleFrame();
    }
}

'Swing' 카테고리의 다른 글

bubble - 3 (왼쪽, 오른쪽 벽 감지하기)  (0) 2025.05.01
bubble - 2 (움직이기 점프, 멈추기)  (0) 2025.05.01
Swing (Thread 활용)  (0) 2025.04.30
로또 게임 만들어보기  (0) 2025.04.30
Swing Key Listener  (0) 2025.04.29