W
w00dy
Gast
Hallo!
Ich habe eine Threadklasse in der ich ein panel immer neu repainte, hier der Code dazu:
Zusätzlich habe ich noch eine zweite Klasse MyPanel, in der ich per überschreiben der Methode paint() Grafische (bewegte) Objekte hinzufüge wie z.B. Rechtecke.
Diese Rechtecke können gesteuert werden mit den Pfeiltasten. Wenn ein Rechteck jetzt den Rand berührt, dann soll in einem JOptionPane "Game Over" ausgegeben werden und der Thread gestoppt werden.
Hier der Auszug aus der MyPanel-Klasse, bei dem abgebrochen werden sollte:
Nun ist es so, dass wenn ein Rechteck beispielsweise den Rand berührt, wird zwar "Game Over" in einem JOptionPane angezeigt, aber es wird irgendwie weiterhin immerwieder neugezeichnet (Das JOptionPane), denn wenn ich auf OK drücke, passiert nicht viel, denn es wird weiterhin angezeigt (bzw. neu gezeichnet). Ich denke dass der Thread nicht richtig beendet wird, sondern irgendwie weiterläuft oder ähnlich.
Ich habe eine Threadklasse in der ich ein panel immer neu repainte, hier der Code dazu:
Code:
public class MyThread extends Thread{
private MyPanel panel;
private boolean stop;
public SnakeMoving(MyPanel panel){
this.panel = panel;
}
public void run(){
while(!stop){
panel.repaint();
try{
sleep(200);
}catch(Exception e){
}
}
}
public void cancel(){
stop = true;
}
}
Zusätzlich habe ich noch eine zweite Klasse MyPanel, in der ich per überschreiben der Methode paint() Grafische (bewegte) Objekte hinzufüge wie z.B. Rechtecke.
Diese Rechtecke können gesteuert werden mit den Pfeiltasten. Wenn ein Rechteck jetzt den Rand berührt, dann soll in einem JOptionPane "Game Over" ausgegeben werden und der Thread gestoppt werden.
Hier der Auszug aus der MyPanel-Klasse, bei dem abgebrochen werden sollte:
Code:
if(x < 0 || y < 0 || x >= getWidth()-10 || y >= getHeight()){
thread.cancel();
JOptionPane.showMessageDialog(null,"Game Over!"
+"\nSie haben "+score+" Punkte erreicht.");
}
Nun ist es so, dass wenn ein Rechteck beispielsweise den Rand berührt, wird zwar "Game Over" in einem JOptionPane angezeigt, aber es wird irgendwie weiterhin immerwieder neugezeichnet (Das JOptionPane), denn wenn ich auf OK drücke, passiert nicht viel, denn es wird weiterhin angezeigt (bzw. neu gezeichnet). Ich denke dass der Thread nicht richtig beendet wird, sondern irgendwie weiterläuft oder ähnlich.