2013-09-05 102 views
0

MainWin.javaJavaFX的空指針異常

Basic.java

enter image description here

當我跑我的應用程序,我是顯示錯誤的:

Caused by: java.lang.NullPointerException 
    at exmp.ui.UI.nodeEkle(UI.java:48) 
    at exmp.ui.Basic.<init>(Basic.java:47) 
    at exmp.MainWin.hazirla(MainWin.java:15) 
    at exmp.MainWin.<init>(MainWin.java:26) 
    at exmp.Start.start(Start.java:13) 
    at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319) 
    at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:215) 
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179) 
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:176) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:176) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29) 
    at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73) 
    ... 1 more 

所有工作正常,但唯一的問題nodeEkle方法,當我調試我的應用程序我顯示場景爲空,但如何?我在方法中創造場景;

public void gerekliUIVerileriniOlustur(){ 
    group = new Group(); 

    scene = SceneBuilder.create() 
         .root(group) 
         .fill(Color.BLANCHEDALMOND) 
         .build(); 

所以我嘗試場景靜態>公共靜態場景場景;但不工作我得到了另一個錯誤。所以我怎麼能解決這個問題。

+0

以文本而非屏幕截圖的形式發佈代碼是首選。 – jewelsea

回答

0

你從來沒有在你提供的代碼示例中調用gerekliUIVerileriniOlustur()方法。

gerekliUIVerileriniOlustur()是在UI類中設置對場景的引用的方法。

由於未調用該方法,因此在嘗試引用nodeEkle()方法中的場景時,最終會出現NullPointerException。處理這種

一種方法是做一個懶惰的呼叫nodeEkle() =>

public final void nodeEkle(Node... node) { 
    if (scene == null) { 
    gerekliUIVerileriniOlustur(); 
    } 

    ((Group)scene().getRoot()).getChildren().addAll(node); 
} 

可能有更好的方法來處理它,例如將一個構造函數添加到執行gerekliUIVerileriniOlustur()中的任務的UI類中,並確保從所有UI子類調用UI構造函數,但這取決於您的應用程序以及您想要實現的內容。

在任何情況下,您可能都希望確保在嘗試對UI組件執行任何操作之前,爲給定的UI實例一次又一次調用gerekliUIVerileriniOlustur()

+0

我不明白,如果我不打電話gerekliUIVerileriniOlustur()我在哪裏定義場景組手風琴.. – kibar

+0

添加一些進一步的解釋給我的答案。 – jewelsea

+0

我明白了,謝謝jewelsea現在正常工作;) – kibar