2015-11-16 41 views
0

我目前正在開發的程序有一個菜單和一個錨窗格根據item.In我的程序選定的菜單顯示的內容,我想我的FXML文件加載到內容錨窗格這當用戶單擊菜單項窗體菜單欄時,它又位於主要的fxml文件中。我在main.fxml中創建了錨窗格。錯誤加載FXML文件到錨窗格中的JavaFX

<AnchorPane id="main_panel" layoutY="28.0" prefHeight="700.0" prefWidth="670.0" /> 

我已經建立,在控制器類Main.fxml.DashBoard.fxml和控制器類DashBoard.fxml方法也已定義。

@FXML 
    private AnchorPane main_panel; 
@FXML 
    private void go_item(ActionEvent event) throws IOException{ 

     Parent dashboard; 
     dashboard = FXMLLoader.load(getClass().getResource("Dashboard.fxml")); 
     main_panel.getChildren().setAll(dashboard); 
    } 

當我運行程序,並單擊項目Menu.It顯示了幾個errors.Is有您的關注有毛病我的代碼?謝謝。

Glass detected outstanding Java exception at -[GlassViewDelegate sendJavaMouseEvent:]:src/com/sun/mat/ui/GlassViewDelegate.m:543 
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException 
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1456) 
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:69) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53) 
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:28) 
    at javafx.event.Event.fireEvent(Event.java:171) 
    at javafx.scene.control.MenuItem.fire(MenuItem.java:456) 
    at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.doSelect(ContextMenuContent.java:1199) 
    at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer$6.handle(ContextMenuContent.java:1148) 
    at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer$6.handle(ContextMenuContent.java:1146) 
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:69) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170) 
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) 
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53) 
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:33) 
    at javafx.event.Event.fireEvent(Event.java:171) 
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3369) 
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3209) 
    at javafx.scene.Scene$MouseHandler.access$1900(Scene.java:3164) 
    at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1582) 
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2267) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:250) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:173) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:292) 
    at com.sun.glass.ui.View.handleMouseEvent(View.java:530) 
    at com.sun.glass.ui.View.notifyMouse(View.java:924) 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75) 
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:279) 
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1451) 
    ... 36 more 
Caused by: java.lang.NullPointerException 
    at project.MainController.go_item(MainController.java:45) 
    ... 46 more 
+0

你有沒有在MainController的45線是什麼? – ItachiUchiha

+0

main_panel.getChildren()SETALL(儀表板)。 –

回答

0

您在FXML中使用了不正確的關鍵字。 id被分配給,使得它們可以在樣式表中被稱作一個控制。你需要使用fx:id爲了能夠引用它的控制器,使用其通過@FXML註釋變量。

正確方法:

<AnchorPane fx:id="main_panel" 
       layoutY="28.0" prefHeight="700.0" prefWidth="670.0" /> 

欲瞭解更多信息,看看this answer

+0

非常感謝您的answer.It works.Your答案幫助我lot.Now,我知道ID和FX之間的區別:ID。 –