当我运行我的应用程序时,我显示错误:
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();
所以我尝试使用Scene to static&gt;公共场景场景;但是没有工作我又得到了另一个错误。所以我怎么能解决这个问题..
答案 0 :(得分:0)
您永远不会在您提供的代码示例中调用gerekliUIVerileriniOlustur()
方法。
gerekliUIVerileriniOlustur()
是在UI类中设置对场景的引用的方法。
因为未调用该方法,所以当您尝试在nodeEkle()
方法中引用场景时,最终会出现NullPointerException。
处理此问题的一种方法是在nodeEkle()
=&gt;
public final void nodeEkle(Node... node) {
if (scene == null) {
gerekliUIVerileriniOlustur();
}
((Group)scene().getRoot()).getChildren().addAll(node);
}
可能有更好的方法来处理它,例如将一个构造函数添加到执行gerekliUIVerileriniOlustur()
中的任务的UI类中,并确保从所有UI子类调用UI构造函数,但这取决于您的应用程序以及您希望实现的目标。
在任何情况下,您可能希望确保在尝试对UI组件执行任何操作之前,对给定的UI实例仅调用一次gerekliUIVerileriniOlustur()
。