必须在fx中指定的内容:controller =""

时间:2016-10-26 08:07:38

标签: javafx controller

我使用了一些命令来获取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"

这次它起作用了。 为什么会这样呢?

1 个答案:

答案 0 :(得分:3)

FXMLLoader需要指定控制器类的binary name。如果您PersonOverviewController的包裹为address.view,则必须将其包含在属性值中。

如果没有设置控制器工厂,

FXMLLoader基本上会创建这样的控制器实例:

String fxController = ...
Class controllerClass = getClassLoader().loadClass(fxController);
Object controller = controllerClass.newInstance();