0

我正在尝试从不同的类访问另一个 calss 的初始化方法。但是在返回 croller 时我得到了 nullpointer 异常

这是我试图从我的第二个课程中调用的代码。

    Line1-        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/src/myjavfxapp/controller/EditClientDetails.fxml"));
    Line 2-        EditClientDetailsController fooController = (EditClientDetailsController) fxmlLoader.getController();
      Line3-       fooController.initialize(null, null);

我在第 3 行收到空指针异常。

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:601)
    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:601)
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:279)
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1435)
    ... 44 more
Caused by: java.lang.NullPointerException
    at myjavfxapp.controller.NewUserController.saveNewuser(NewUserController.java:167)
    ... 54 more

我的意图是初始化来自不同控制器类的“EditClientDetails.fxml”字段。

请指出我是否遗漏了什么。

4

1 回答 1

1

试试下面的例子,它工作正常,你必须使用 FxmlLoader 类的 load() 函数。

public class Xxx extends Application {

  @Override
  public void start(Stage stage) throws Exception {

    //Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml"));     
    FXMLLoader loader = new FXMLLoader(getClass().getResource("Sample.fxml"));
    Parent root = (Parent)loader.load();          
    Scene scene = new Scene(root);        
    stage.setScene(scene);
    stage.show();

    SampleController controller = (SampleController)loader.getController();

  }

  public static void main(String[] args) {
    launch(args);
  }
}
于 2013-11-08T12:53:52.967 回答