Frage von gut4fr5g4, 43

Warum funktioniert das nicht (JavaFX)?

http://hastebin.com/udivamafag.cs

Wieso wird nicht lastKeyPressed ausgegeben, wenn es verändert wird?

Ich habe eine extra timerTask-Klasse und habe lastKeyPressed bei veränderung mit setter übergeben, aber es wird immer der standart wert übergeben... Why?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von KnusperPudding, Community-Experte für Java, 29

Der Variable "lastKeyPressed"  wird kein Wert zugewiesen neben dem einen "0". Aber das ist nur eine Vermutung, da entsprechende Codestellen fehlen.


Die run-Methode lässt vermuten, dass du einen Thread implementierst?

Falls nein: Wo wird die run Methode ausgeführt? 

Kommentar von gut4fr5g4 ,

ich schick dir eben den ganzen code :)

Kommentar von gut4fr5g4 ,
Kommentar von KnusperPudding ,

Sieht aber soweit richtig aus. Das müsste funktionieren.

Kommentar von gut4fr5g4 ,

Ne, habe es mit System.out.println(); getestet :/

Wo liegt der Fehler :C

Kommentar von KnusperPudding ,

Wo liegt der Fehler :C

Darin, dass beide Snippets zusammenhangslos sind. Der eine Teil ist vermutlich ein Ausschnitt aus deiner Anwendung, der andere Teil ist die Separate Klasse, welche du als Ableitung von "TimerTasks" verwendest. - Der Fehler wird in ersterem liegen.

Jedenfalls ist der Teil, in dem ein möglicher Fehler sein könnte, nicht genannt.

INSTANZ.setValues(lastKeyPressed);

Lässt jedenfalls darauf schließen, dass es sich um ein ganz anderes Problem handeln könnte. Klingt so als würdest du eine Konstante ansprechen. Dann wiederum stellt sich mir die Frage: wurde der Timertask überhaupt gestartet?

Kommentar von gut4fr5g4 ,

Schicke dir mal den ganzen code, also alles, was ich bis jetzt gemacht habe:

http://hastebin.com/yinoduheza.java

Die Effizienz des Codes sei mal dahingestellt, mir geht es erstmal darum nicht alles static zu haben

Wäre echt nice, wenn du mal reinschauen würdest! :)

Kommentar von KnusperPudding ,

Das Problem hier ist: 

Beim Button drücken rufst du "movePlayer()" auf, was wiederum deinen Timertask mit dem neuen Wert deiner letzten Eingabe befüllt.

Beim Button-Release führst du ein SetValue aus, dass als letzte Eingabe eine 0 übermittelt. - Somit stehen diese beiden Aktionen unmittelbar im Konflikt.

Kleine Anmerkungen: 

  • nur Konstanten, welche mit static ausgezeichnet sind, sollte man komplett groß schreiben.
  • Verwende bitte das @Override Statement bei überschriebenen Methoden
  • Bei String vergleichen nicht mit == Vergleichen sondern via .equals
  • Verwende bei Klassen Bezeichnungen nie Namen, die es in der Standard-API gibt (z.B. Map )
Kommentar von gut4fr5g4 ,

oder weißt du es nicht ;C

Kommentar von gut4fr5g4 ,

Hat sich schon erledigt, habe es jetzt anders gemacht und jetzt ist nicht mehr alles static (wie ich es ja haben will)! ;)

trotzdem danke für die zeit! :D

Antwort
von PerfectMuffin, 35

Weil du "0" hardgecodet hast...

lastKeyPressed = "0";
Kommentar von gut4fr5g4 ,

bei key released, bei keypressed nicht, trotzdem geht es nicht

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten