티스토리 뷰

back/Java

KH 30일차(Swing)

devel0per 2022. 8. 11. 20:22

Swing

: Swing은 Java2에 새롭게 추가된 GUI 처리 패키지 입니다. AWT는 운영체제가 가지고 있는 GUI 관련 API를 직접 사용하기 때문에 운영체제의 종류에 따라 약간씩 다른 모양으로 출력됩니다. 또한 운영체제가 갖고 있는 공통 GUI 요소만 사용하기 때문에 운영체제의 특색에 맞는 GUI 프로그램 작성이 어렵습니다. Swing은 운영체제가 가지고 있는 GUI를 사용하지 않고 JVM이 직접 Swing 패키지를 사용해 구현합니다.


import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Animation_1 extends Frame{
	
	Image[] img = new Image[8];
	int num = 0;
	
	int xx = 10;
	int yy = 30;
	boolean flag = true;
	
	public Animation_1(String title) {
		super(title);
		
		for(int i = 0; i < 8; i++) {
			img[i] = Toolkit.getDefaultToolkit().getImage("image/bttrfly" + (i + 1) + ".jpg");
		}
		
		addWindowListener(new WindowHandler());
		setSize(450, 350);
		setVisible(true);
	}
	
	public void paint(Graphics g) {
		if(num > 7) {
			num = 0;
		}
		if(flag) {
			g.drawImage(img[num++], xx += 10, 100, this);
			
			
			if(xx > getWidth() - 40)
				flag =! flag;
		}
		
		else {
			g.drawImage(img[num++], xx -= 10, 100, this);
			
			if(xx<0) {
				flag =! flag;
			}
		}
		
		if(flag) {
			g.drawImage(img[num++], 100, xx += 10, this);
			
			
			if(xx > getHeight() - 40)
				flag =! flag;
		}
		
		else {
			g.drawImage(img[num++], 100, xx -= 10, this);
			
			if(xx<0) {
				flag =! flag;
			}
		}
	}
	
	class WindowHandler extends WindowAdapter{
		public void windowClosing(WindowEvent e) {
			System.exit(0);
		}
	}
	
	public static void main(String[] args) {
		Animation_1 ani = new Animation_1("fly~~~~");
	
	
		while (true) {
			try {
				Thread.sleep(100);
				ani.repaint();
				
			}catch(InterruptedException e) {
				e.printStackTrace();
				break;
			}
		}
	}
}

Animation 에서  boolean값 flag를 통해서 반복되는 Animation을 구현하는 코드이다. 처음에는 이해되지 않았지만 유용한 코드니까 반복 숙달 !

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

KH 32일차(Swing, AWT 마무리)  (0) 2022.08.16
KH 31일차(Swing)  (0) 2022.08.15
KH 29일차(Graphics, Font, Image EVENT)  (5) 2022.08.10
KH 29일차(Graphics, Adapter, WindowEvent)  (2) 2022.08.09
KH 28일차(AWT CheckboxEvent)  (0) 2022.08.08
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크