Hallo zusammen,
das ist mein erster Thread und hoffe ihr könnt mir helfen.
Es geht darum ich habe ein JPanel erstellt auf dem sich Autos(AutoPanel) bewegen die in einem Vector sind.
In meiner painComponent Methode berechne mit einer while-Schleide verschiedenes für die Autos, was für mein Problem nicht relevant ist da es ohne Threads funktioniert. Ich möchte aber diese while-Schleife in ein Thread auslagern.
Das Programm wird kompiliert und ich kann es auch ausführen aber wenn es gestartet wird dann bewegen sich die Autos nicht.
Ich weiss das ich etwas nicht beachtet habe. Ich habe versucht mit synchronized, notify und wait zu arbeiten aber das habe ich allem Anschein nach nicht verstanden.
AutoPanel.java
Ich habe nun meine while-Schleife in ein Thread ausgelagert was bisher so aussieht.
AutoThread.java
das ist mein erster Thread und hoffe ihr könnt mir helfen.
Es geht darum ich habe ein JPanel erstellt auf dem sich Autos(AutoPanel) bewegen die in einem Vector sind.
In meiner painComponent Methode berechne mit einer while-Schleide verschiedenes für die Autos, was für mein Problem nicht relevant ist da es ohne Threads funktioniert. Ich möchte aber diese while-Schleife in ein Thread auslagern.
Das Programm wird kompiliert und ich kann es auch ausführen aber wenn es gestartet wird dann bewegen sich die Autos nicht.
Ich weiss das ich etwas nicht beachtet habe. Ich habe versucht mit synchronized, notify und wait zu arbeiten aber das habe ich allem Anschein nach nicht verstanden.
AutoPanel.java
Java:
public class AutoPanel extends JPanel implements MouseListener, MouseMotionListener{
Vector<Auto> autos; // Es gibt auch noch ein Auto.java Datei aber die beinhaltet nur die Auto Attribute und Methoden.
....//andere Initialisierungen
public AutoPanel(){
super();
addMouseListener(this);
addMouseMotionListener(this);
....
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
AutoThread autothread = new AutoThread();
Thread trd = new Thread(autothread)
trd.start(); //Thread für die while Schleife wird gestartet
/*
while(..){
//Berechnug der Geschwindigkeit von jedem Auto vom Vector
}*/ // Wird auf einen Thread (AutoThread) ausgelagert
for(Auto element : autos) {
element.draw(g)
}
repaint();
}
}
Ich habe nun meine while-Schleife in ein Thread ausgelagert was bisher so aussieht.
AutoThread.java
Java:
public class ThreadAuto implements Runnable{
@Override
public void run(){
while(){
//Berechnug der Geschwindigkeit von jedem Auto vom Vector
}
}
Zuletzt bearbeitet: