package ch09;
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;
public class Play1945 extends JFrame {
BufferedImage bgImage1;
BufferedImage bgImage2;
ImagePanel imagepanel;
final int WIDTH_SIZE = 600;
int bgx1;
int bgx2;
public Play1945() {
initData();
setInitLayout();
addEventListener();
//쓰레드 생성 3번째 방법
//익명클래스를 이용
new Thread(new Runnable() {
@Override
public void run() {
while(true) {
bgx1--;
bgx2--;
if(bgx1 < -WIDTH_SIZE ) {
bgx1 = WIDTH_SIZE;
}
if(bgx2 < -WIDTH_SIZE ) {
bgx2 = WIDTH_SIZE;
}
repaint();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start(); //스타트메서드 호출해야 실행이됨
}
private void initData() {
setSize( WIDTH_SIZE,600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
try {
bgImage1 = ImageIO.read(new File("background3.jpg"));
bgImage2 = ImageIO.read(new File("background3.jpg"));
} catch (IOException e) {
System.err.println("파일이 없습니다.");
e.printStackTrace();
}
imagepanel = new ImagePanel();
}
private void setInitLayout() {
setVisible(true);
add(imagepanel);
}
private void addEventListener() {
}
private class ImagePanel extends JPanel{
public ImagePanel() {
bgx1 = 0;
bgx2 = WIDTH_SIZE;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g); //캔버스를 비워주는 메서드
g.drawImage(bgImage1, bgx1, 0 , WIDTH_SIZE, 600,null);
g.drawImage(bgImage2, bgx2, 0 , WIDTH_SIZE, 600,null);
}//이미지 그려주는 패널 1차
}
public static void main(String[] args) {
new Play1945();
}
}