Javafx Exception lesen?

... komplette Frage anzeigen

2 Antworten

Oben steht das Problem, was endgültig festgestellt wurde, es wurde vom obersten Element des Stacktraces geworfen, also "IllegalStateException: Not on FX application thread" aus "Toolkit.checkFxUserThread", welches aber keine Klasse von dir ist, das letzt Glied des Stacktraces, für das du verantwortlich bist, ist "VetoableListDecorator.add(Unknown Source)", eine Funktion, die du offenbar in deiner Klasse BearbeitungHBox, in der Funktion Nachfüllen in Zeile 42 aufrufst.

Die Zeilen darunter spiegeln den rest des Stacks wieder, der aber meistens unerheblich ist.

Sollte dir daraus dein Fehler nicht klar werden, dann sieh dir in den Dokumentationen an, unter Welchen Umständen die Funktionen oberhalb deines Parts im Stacktrace Fehler werfen, bzw. den Fehler werfen, der bei dir kam.

Du ignorierst übrigens die Konvention, Funktionen ausnahmelos immer in camelCase zu schreiben und nach Möglichkeit keine Umlaute oder sonstige Sonderzeichen in Identifiern zu verwenden.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von procoder42
31.07.2016, 13:58

Du ignorierst übrigens die Konvention, Funktionen ausnahmelos immer in camelCase zu schreiben und nach Möglichkeit keine Umlaute oder sonstige Sonderzeichen in Identifiern zu verwenden.

Der Junge scheint allgemein keinen guten Code Stil zu haben ...

Wer ohne Objekt Orientierung programmiert und seinen gesamten Code in eine Klasse klatscht, muss damit rechnen, dass er solche Fehlermeldungen bekommt und nicht versteht.

0

Ganz oben: Es ist eine Exception in einem Timer Thread.

Darunter: Die Exception, IllegalStateException (sollte sich selbst erklären), dahinter die Erklärung, du kannst auf JavaFX Elemente nicht außerhalb des JavaFX Threads zugreifen.

Und darunter: Der genaue Methodenverlauf der Exception (heißt Stacktrace), also in welcher Methode die Exception aufgetreten ist und von welcher diese aufgerufen wird, wovon diese aufgerufen wurde etc.

Kurz noch die Lösung: Außerhalb des FX Threads musst du JavaFX Elemente mit Platform.runLater(Runnable run); ausführen, dann wird der Code ausgeführt sobald der FX Thread Zeit hat.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von gut4fr5g4
31.07.2016, 15:15

Und wie kann ich herausfinden, welche Node probleme macht?

0
Kommentar von androhecker
31.07.2016, 15:17

Du nutzt einen Timer, das gilt allgemein für alle JavaFX Elemente auf die du vom Timer aus zugreifst.

0
Kommentar von androhecker
31.07.2016, 17:53

Ja und nein. Vom Timer direkt aus kannst du keine Elemente verändern, dazu musst du mit Platform.runLater() arbeiten. Falls du Probleme mit OOP hast, kann ich dir auch auf Skype helfen.

0
Kommentar von androhecker
31.07.2016, 18:05

Du kannst nur auf JavaFX Methoden nicht zugreifen, wobei es da auch Ausnahmen gibt, wie zum Beispiel die getFill() Methode welche das Element nicht aktiv verändert.

0
Kommentar von androhecker
31.07.2016, 18:11

Ich brauche nur die BearbeitungHBox Klasse.

0

Was möchtest Du wissen?