package ch04;
import java.awt.Graphics;
import java.awt.Paint;
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 MyFrame2 extends JFrame {
BufferedImage backgroundimage;
BufferedImage imageIcon;
MyImagePanel imagePanel;
public MyFrame2() {
initDate();
setInitLayout();
}
private void initDate() {
setTitle("이미지 백그라운드 연습");
setSize(500, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 이미지를 가지고와서 사용하기
try {
backgroundimage = ImageIO.read(new File("background3.jpg"));
imageIcon = ImageIO.read(new File("imag2.jpg"));
} catch (IOException e) {
System.out.println("파일이없습니다.");
e.printStackTrace();
} // ImageIO는 static 메서드
// file을 read로 읽어서 background2.jpg를 메모리에 올려서backgroundimage 에 저장해둔상태
imagePanel = new MyImagePanel();
}// initData
private void setInitLayout() {
setVisible(true);
setResizable(false); //크기를 사용자맘대로 줄이거나 늘리지못하게
add(imagePanel);
}
// 내부클래스생성
private class MyImagePanel extends JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
// paintComponent 호출이된 이유는 메서드가 생성된시점에 메서드가 자동으로호출되었다.
g.drawImage(backgroundimage, 0, 0, 500, 500, null);
g.drawImage(imageIcon, 180, 180, 200, 200, null); // 틀 200 200 그림 100 100
}
}// MyImagePanel(내부클래스)
}
public class MainTest2 {
public static void main(String[] args) {
new MyFrame2();
}
}