Java/Excercise

swing ch09 Play1945

낭구리 2021. 9. 10. 17:42
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();
	}
	
	
}

'Java > Excercise' 카테고리의 다른 글

javaio ch02 FileInputStreamTest1  (0) 2021.09.13
javaio ch01 SysteminTest  (0) 2021.09.13
swing ch08 RunLottoGame  (0) 2021.09.10
swing ch07 MainTest lotto  (0) 2021.09.10
callback ch05 Phonebook  (0) 2021.09.10