Java/Swing

Swing - 이미지 올리기, 겹치기

DDG9 2024. 4. 29. 16:20

 

ImageIcon 을 이용

package ch03;

import java.awt.Graphics;
import java.awt.Image;
import java.util.Scanner;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * 중첩 클래스 --> 외부, 내부 클래스로
 * 내부 클래스 --> 인스턴스 클래스, static 클래스
 */

public class MyImageFrame extends JFrame {

	// 내부 클래스로 정의한 데이터 타입이다.
	private MyImagePanel myImagePanel;

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

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

		myImagePanel = new MyImagePanel();
	}

	private void setInitLayout() {
		add(myImagePanel);
		setVisible(true);
	}

	// 내부 클래스 --> static 키워드 활용
	// 정적(static) 내부 클래스
	static class MyImagePanel extends JPanel {
		private Image image1;
		private Image image2;
		private Image image3;

		public MyImagePanel() {
			// ImageIcon 데이터 타입 -> getImage() 메서드를 호출하면
			// image 데이터 타입을 만들어 낼 수 있다.
			image1 = new ImageIcon("image1.png").getImage();
			image2 = new ImageIcon("image2.png").getImage();
			image3 = new ImageIcon("image3.png").getImage();
		}

		@Override
		public void paint(Graphics g) {
			super.paint(g);
			g.drawImage(image1, 50, 50, 150, 150, null);
			g.drawImage(image2, 200, 50, 150, 150, null);
			g.drawImage(image3, 350, 50, 150, 150, null);
		}
	}
}
package ch03;

public class MyImageFrameMainTest {

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

 

 

이미지 겹치기

package ch04;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

/**
 * JLabel 이용해서 이미지를 다룰 수 있다.
 * JLabel.add(); 메서드를 통해서 이미지를 겹칠 수 있다.
 * 좌표 기준으로 이미지를 셋팅을 하려면
 * 배치관리자를 null 값으로 셋팅 해야한다.
 */

public class MyFrame extends JFrame {

	private JLabel backgroundMap;
	private JLabel player;

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

	private void initData() {
		setTitle("JLabel을 활용한 이미지 사용 연습");
		setSize(500, 500);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		Icon icon = new ImageIcon("images/background1.jpg"); // ImageIcon이 Icon을 Implements 했음, 업 캐스팅 상태
		backgroundMap = new JLabel(icon);

		backgroundMap.setSize(500, 500);
		backgroundMap.setLocation(0, 0);

		player = new JLabel(new ImageIcon("images/image4.png"));
		player.setSize(100, 100);
		player.setLocation(300, 200);
	}

	private void setInitLayout() {
		// 좌표값으로 셋팅하기 위해서는 배치관리자를 null 값으로 만들어 주어야 한다.
		setLayout(null);
		add(backgroundMap);
		backgroundMap.add(player);
		setVisible(true);
	}
}
package ch04;

public class MyFrameMainTest {

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

 

※ removebg, 이미지조절 사이트 활용하기