我使用了一些命令来获取fxml文件的控制器。起初我使用了这样的地址:
fx:controller="PersonOverviewController"
并且主类中的代码就像这样
FXMLLoader loader = new FXMLLoader();
loader.setLocation(MainApp.class.getResource("view/PersonOverview.fxml"));
AnchorPane ap = loader.load();
PersonOverviewController pc = loader.getController();
pc.setTableContent(this);
但它不起作用。 在另一次尝试中,我改变了
fx:controller="address.view.PersonOverviewController"
这次它起作用了。 为什么会这样呢?
答案 0 :(得分:3)
FXMLLoader
需要指定控制器类的binary name。如果您PersonOverviewController
的包裹为address.view
,则必须将其包含在属性值中。
FXMLLoader
基本上会创建这样的控制器实例:
String fxController = ...
Class controllerClass = getClassLoader().loadClass(fxController);
Object controller = controllerClass.newInstance();