Sidewinder


World


FishMusic


LaughingBaby


Friday, June 20, 2008

Java 이벤트처리, 스레드



지식in에 올릴려고 했는데 이미 결정해서 올릴 때가 없어 여기에 올립니다.
ㅋ 참조 하세요. everick9 님 답변은 Frame에 띄우는 방법이고 저의 방법은 애플릿창에서 실행되는 거니 참조해서 좋은 프로그램 만드세요... ㅎ

대신 주석은 없어요. Canvas 는 상속 받을 필요는 없는데 님의 소스를 수정한거라...


import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class Updown extends Applet implements ActionListener
{
private Image 그림;
public int pos=100;
private int flag = 0;
private Button 준비;
private Button 시작;
private Shark 상어;
private boolean startB = false;

public void init(){
add(준비 = new Button("준비"));
add(시작 = new Button("시작"));
그림 = getImage(getDocumentBase(),"flag.gif");
}
public void paint(Graphics g){
if(startB) g.drawImage(그림, 20, pos,this);
}

public void start(){
준비.addActionListener(this);
시작.addActionListener(this);
}

public void actionPerformed(ActionEvent e){
if(e.getSource() == 준비){
상어 = new Shark(this);
준비.setEnabled(false);
this.validate();
startB=true;
repaint();
}
else if(e.getSource() == 시작){
시작.setEnabled(false);
Thread 실행 = new Thread(상어);
실행.start();
this.validate();
}
}

}

class Shark extends Canvas implements Runnable
{
private Updown sh;
private int flag = 0;

public Shark(Updown m){
sh = m;
}
public void run(){
do{
if(flag == 0){
sh.repaint();
sh.pos += 10;
if(sh.pos > 500) flag = 1;
try{
Thread.sleep(50);
}
catch(Exception e){}
}
else if(flag == 1){
sh.repaint();
sh.pos -= 10;
if(sh.pos < 100) flag = 0;
try{
Thread.sleep(50);
}
catch(Exception e){}

}
}while(flag<2);
}
}

No comments:

Post a Comment