JAVA/GUI

[자바] JFrame 이미지 추가하기 - 슈퍼마리오(1)

yujin0517 2021. 7. 17. 00:13

슈퍼마리오 배경과 캐릭터 이미지 추가하여 프레임 꾸미기

  1. JFrame을 상속받은 MyImage 클래스를 선언
  2. JPanel을 상속받은 MyPanel 내부 클래스를 선언
  3. 생성자와 initData, setInitLayout 메소드를 선언
  4. 내부 클래스에서 paintComponent 메소드를 오버 라이딩하여, 배경화면과 캐릭터 1, 2, 3을 프레임에 추가

 

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;

class MyImage extends JFrame {

	BufferedImage backgroundImage; //이미지를 받을 변수를 BufferedImage 타입으로 선언
	BufferedImage imageIcom1;
	BufferedImage imageIcon2;
	BufferedImage imageIcon3;
	MyPanel mypanel;  //내부 클래스 변수 선언

	///////////////////////////////////////////////////////////////////
	private class MyPanel extends JPanel {  //JPanel을 상속받은 내부 클래스 선언

		@Override
		protected void paintComponent(Graphics g) {
			super.paintComponent(g);
			g.drawImage(backgroundImage, 0, 0, 650, 650, null); //이미지 위치 및 크기 설정
			g.drawImage(imageIcom1, 450, 465, 200, 200, null);
			g.drawImage(imageIcon2, 360, 445, 200, 200, null);
			g.drawImage(imageIcon3, 70, 455, 200, 200, null);
		}
	}
	///////////////////////////////////////////////////////////////////

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

	private void initData() {
		setTitle("Image add");  //프레임 제목
		setSize(650, 700);  //프레임 크기
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //프레임 창 닫기 

		try {  // 해당 경로에서 이미지를 읽어와 변수에 대입
			backgroundImage = ImageIO.read(new File("supermario_1.png")); 
			imageIcom1 = ImageIO.read(new File("supermario_2.png"));
			imageIcon2 = ImageIO.read(new File("supermario_3.png"));
			imageIcon3 = ImageIO.read(new File("supermario_4.png"));
		} catch (IOException e) {
			System.out.println("해당 이미지가 존재하지 않습니다.");
			System.exit(0);  //프로그램 종료
		}
		mypanel = new MyPanel();  //내부 클래스 객체 생성, 객체를 생성하지 않으면 이미지 표시 안됨
	}

	private void setInitLayout() {
		setVisible(true);  //true값을 넣어야 프레임이 화면에 표시됨
		this.add(mypanel);  //내부 클래스를 프레임에 추가
	}
}

//////////////////////////구분선//////////////////////////
public class Key_Image {
	public static void main(String[] args) {
		new MyImage();  //클래스 객체 생성
	}
}

실행 완료

 

  • g.drawImage() : 이미지, 위치, 크기를 설정하는 메소드 
  • ImageIO.read() : 이미지를 읽어오는 메소드

 

자세한 코드 설명은 주석으로 달아 놓았습니다.

감사합니다!

 

배경 출처 - https://blog.naver.com/grayspjh_2/220636024623

 

고전게임의 역사 슈퍼마리오~~

안녕하세요 다비드 입니다. 오늘의 고전게임은 고전게임의 산 역사인 슈퍼마리오입니다. 마리오 아저씨가 ...

blog.naver.com

캐릭터 이미지 출처 - https://blog.naver.com/marikirby/220801728930

 

[그림/일상] 슈퍼 마리오 캐릭터 그림 완성 및 유니클로 응모 완수

마링크입니다. 슬슬 거의 모든 학교가 2학기 시즌을 맞이하고 있겠군요. 요즘 왠만해선 포스팅을 잘 안하고...

blog.naver.com

2021.07.16

'JAVA > GUI' 카테고리의 다른 글

[자바] KeyListener + Scanner  (0) 2021.07.20
[자바] 콜백(CallBack) - JFrame  (0) 2021.07.19
[자바] KeyListener  (0) 2021.07.15
[자바] JPanel  (0) 2021.07.15
[자바] JButton 만들기 + 클릭 이벤트  (0) 2021.07.14