hay
ich hab ein problem in folgenden applet:
mein prob ist das ich nicht mehr aus der endlosschleife rauskomme.....
den mechanismus habe ich ja eig. mit dem Stop-Button geplant. Aber während der schleife überprüft es nicht ob der button gedrückt wurde......kann man i-wie ActionPerformed merhfach aufrufen
ich hab ein problem in folgenden applet:
Java:
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
/**
*
* Beschreibung
*
* @version 1.0 vom 20.05.2009
* Autor: Marius Obert
*/
public class ball extends Applet implements ActionListener{
private int diameter1=200; //durchmesser(diameter)1
private int diameter2=50; //durchmesser(diameter)2
private int xP=100; //x.Koordinate
private int yP=100; //y-Koordinate
private int xChange=4,yChange=3; // richtungs werte
private int speed=50; //Drehgeschw.
private Button btnDreh, btnStop; //Buttons zum Drehen, Stoppen
private TextField tfSpeed; //Textfeld zur eingabe der drehgeschw.
private boolean activ=false; //Ob es sich drehen soll oder nicht
private int anfStr=0; //zur Gradeingabe der Strahlen
public void init() {
btnDreh= new Button("Drehe!"); //Aktivierung Button Drehe
add(btnDreh);
btnDreh.addActionListener(this);
btnStop= new Button("Stop!"); //Aktivierung Button Stop
add(btnStop);
btnStop.addActionListener(this);
tfSpeed= new TextField(10); //Aktivierung Textfeld Speed
add(tfSpeed);
tfSpeed.addActionListener(this);
}
public void actionPerformed(ActionEvent event){
if(event.getSource()==btnDreh){ //Falls btnDreh, dann activ=true
activ=true;
}
else if(event.getSource()==btnStop){ //Falls btnStop, dann activ=false
activ=false;
}
else{
speed=Integer.parseInt(tfSpeed.getText()); //Falls TfSpeed, dann speed=eingabe
}
repaint(); //erneuern
}
public void aussen(){ //zeichne äußeren kreis
Graphics g=getGraphics();
g.setColor(Color.red);
g.drawOval(xP-1,yP-1,diameter1+2,diameter1+2);
}
public void loeaussen(){ //lösche äußeren kreis
Graphics g=getGraphics();
g.setColor(Color.white);
g.drawOval(xP-1,yP-1,diameter1+2,diameter1+2);
}
public void innen(){ //zeichne inneren kreis
Graphics g=getGraphics();
g.setColor(Color.blue);
g.fillOval(xP+diameter1/2-diameter2/2,yP+diameter1/2-diameter2/2,diameter2,diameter2);
}
public void loeinnen(){ //lösche inneren Kreis
Graphics g=getGraphics();
g.setColor(Color.white);
g.fillOval(xP+diameter1/2-diameter2/2,yP+diameter1/2-diameter2/2,diameter2,diameter2);
}
public void striche(){ //zeichne Strahlen
for(int i=0;i<=10;i++){
Graphics g=getGraphics();
innen(); //zeichne erneut inneren kreis damit Strahlen ihn nicht überdecken
g.setColor(Color.yellow);
g.fillArc(xP,yP,diameter1,diameter1,anfStr+36*i,-5);
innen(); //zeichne erneut inneren kreis damit Strahlen ihn nicht überdecken
}
}
public void loestriche(){ //lösche Strahlen
for(int i=0;i<=10;i++){
Graphics g=getGraphics();
innen(); //zeichne erneut inneren kreis damit Strahlen ihn nicht überdecken
g.setColor(Color.white);
g.fillArc(xP,yP,diameter1,diameter1,anfStr+36*i,-5);
innen(); //zeichne erneut inneren kreis damit Strahlen ihn nicht überdecken
}
}
public void warten(int ms){ //wartezeit
try{
Thread.sleep(ms);
}
catch(InterruptedException e){ }
}
public void paint(Graphics g){ //eigentlicher Vorgang
aussen();
striche();
while(activ==true){
aussen();
striche();
warten(speed);
loestriche();
anfStr=anfStr+5;
loeaussen();
loeinnen();
if(xP<=0) xChange=-xChange;
else if(xP>=getSize().width-diameter1) xChange=-xChange;
else if(yP<=30) yChange=-yChange;
else if(yP>=getSize().height-diameter1) yChange=-yChange;
xP=xP+xChange;
yP=yP+yChange;
}
}
}
mein prob ist das ich nicht mehr aus der endlosschleife rauskomme.....
den mechanismus habe ich ja eig. mit dem Stop-Button geplant. Aber während der schleife überprüft es nicht ob der button gedrückt wurde......kann man i-wie ActionPerformed merhfach aufrufen