JavaFX Problem mit statischen Schlüsselwort; mit minimalem, vollständigem und überprüfbarem Beispiel

Schönen Tag

Wenn ich diesen Code ausführe:

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
import javafx.stage.Stage;

public class mcve extends Application {

    static Label myScore = new Label("Test");
    static Rectangle rect = new Rectangle(0,0,10,10);

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) {
        myScore.setTextFill(Color.WHITE);
        myScore.setLayoutY(20);
        myScore.setLayoutX(200);
        myScore.setFont(new Font("Arial", 30));
        myScore.setText("0");
        rect.setFill(Color.WHITE);

        final Group group = new Group(myScore,rect);
        Scene scene = new Scene(group, 500, 500, Color.BLACK);

        stage.setScene(scene);
        stage.show();
    }
}

it erstellt die folgende Ausnahme:

Exception in thread "main" java.lang.ExceptionInInitializerError
at mcve.<clinit>(mcve.java:11)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:122)
Caused by: java.lang.IllegalStateException: Toolkit not initialized
at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:273)
at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:268)
at com.sun.javafx.application.PlatformImpl.setPlatformUserAgentStylesheet(PlatformImpl.java:550)
at com.sun.javafx.application.PlatformImpl.setDefaultPlatformUserAgentStylesheet(PlatformImpl.java:512)
at javafx.scene.control.Control.<clinit>(Control.java:87)
... 4 more

Wenn ich jedoch das statische Schlüsselwort vor Label oben entferne, funktioniert der Code einwandfrei.

Meine Frage lautet: Warum tritt der Fehler beim Erstellen einer statischen Beschriftung auf, aber nicht eines statischen Rechtecks? Ich möchte, dass das Label statisch ist und kein Objekt einer Klasse.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage