好日子,JavaFX的靜態與非靜態
爲什麼JavaFX的有一個問題,如果我創建一個方法之外的靜態標籤,但doesen't有類似球或矩形形狀相同的問題。
下面的作品就好了:
static Rectangle upperBorder = new Rectangle(0, 0, 10, 10);
但是這創造了一個例外:
static Label myScore = new Label("Test");
我要創建標籤的方式如下:
Label myScore = new Label("Test");
這是不「靜態」關鍵字。
這是錯誤:
Exception in thread "main" java.lang.ExceptionInInitializerError
at pong.Main.<clinit>(Main.java:24)
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
錯誤提示JavaFX工具包尚未初始化,這與使用「靜態」變量沒有直接關係(儘管如此,如果您正在製作UI控件,您只是以錯誤的方式進行操作)。發佈一個能夠產生異常的[MCVE],如果你想讓某人能夠找出實際出錯的地方。 –
您是否從主方法擴展了'Application'並且調用了'Application#launch'? –
是的,正如上面提出的那樣,錯誤表明您沒有正確啓動JavaFx應用程序,它可能與您定義的smth靜態無關。 – AntJavaDev