슈퍼마리오 배경과 캐릭터 이미지 추가하여 프레임 꾸미기
- JFrame을 상속받은 MyImage 클래스를 선언
- JPanel을 상속받은 MyPanel 내부 클래스를 선언
- 생성자와 initData, setInitLayout 메소드를 선언
- 내부 클래스에서 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
캐릭터 이미지 출처 - https://blog.naver.com/marikirby/220801728930
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 |