Hi,
ich versuche gerade ein JLabel mittels Timer und der Methode setLocation zeitgesteuert zu verschieben. Soweit ist das auch kein Problem, aber die Zeiten werden von Java irgendwie nicht berücksichtigt. D.h. ich gebe an, dass das Label innerhalb von x Sekunden von Punkt A nach Punkt B gelangen muss. Dabei bleibt die Strecke immer die Gleiche, lediglich die Zeit ändert sich. Das Errechne ich, indem ich Strecke/Zeit rechne und da meist halbe Punkte (Point) rauskommen geh ich noch hin und rechne 1 Point/Point pro ms und erhalte die Millisekunden die ich warten muss, bis ich ein Punkt zurücklegen darf. Beispiel 400 Punkte/1000 Millisekunden = 0,4 Punkte pro ms; 1Punkt/0,4 = 2,xx ms.
Diese Berechnung funktioniert und liefert das korrekte Ergebnis zurück. Danach teile ich das dem Timer mit und starte ihn. Nun braucht der Timer aber nicht 1 Sek. um das Label von Pos.A zu Pos.B wandern zu lassen, sondern ca. 5-6 Sekunden.
Hier mal der Timer:
Weiß jemand was ich falsch gemacht habe, oder stoße ich hier an Grenzen?
Grüße BR
ich versuche gerade ein JLabel mittels Timer und der Methode setLocation zeitgesteuert zu verschieben. Soweit ist das auch kein Problem, aber die Zeiten werden von Java irgendwie nicht berücksichtigt. D.h. ich gebe an, dass das Label innerhalb von x Sekunden von Punkt A nach Punkt B gelangen muss. Dabei bleibt die Strecke immer die Gleiche, lediglich die Zeit ändert sich. Das Errechne ich, indem ich Strecke/Zeit rechne und da meist halbe Punkte (Point) rauskommen geh ich noch hin und rechne 1 Point/Point pro ms und erhalte die Millisekunden die ich warten muss, bis ich ein Punkt zurücklegen darf. Beispiel 400 Punkte/1000 Millisekunden = 0,4 Punkte pro ms; 1Punkt/0,4 = 2,xx ms.
Diese Berechnung funktioniert und liefert das korrekte Ergebnis zurück. Danach teile ich das dem Timer mit und starte ihn. Nun braucht der Timer aber nicht 1 Sek. um das Label von Pos.A zu Pos.B wandern zu lassen, sondern ca. 5-6 Sekunden.
Hier mal der Timer:
Java:
new Timer(1, new ActionListener() {
int pos = 10;
boolean b = false;
public void actionPerformed(ActionEvent e) {
if(pos < 410 && !b){
pos += 2;
testPanel.setBounds(10, pos, 80, 40);
if(pos >= 410) b = true;
} else if(b){
pos -=2;
testPanel.setBounds(10, pos, 80, 40);
if(pos <= 10) b=false;
}
}
}).start();
Weiß jemand was ich falsch gemacht habe, oder stoße ich hier an Grenzen?
Grüße BR