我已经研究这部分代码一天了,只是无法弄清楚为什么它总是生成错误。
我有一个控制器和 FXML。他们工作得很好。然后我想到我想通过抽象 updateSelect() 函数重用这个特定的控制器。因此,我将控制器更改为抽象。
代码编译得很好。直到我尝试运行这部分代码。
@FXML
private void mnuProjMember_onClick(ActionEvent event) {
mainContent.getChildren().clear();
FXMLLoader loader = new FXMLLoader(getClass().getResource("PaneProjectSearch.fxml"));
PaneProjectSearchController controller = new PaneProjectSearchController(){
@Override
void updateSelect(){
System.out.println("update: !!");
}
};
loader.setController(controller);
controller.setParent(mainContent);
fitToParent(loader);
}
它给了我以下错误消息。嗯...这是没有意义的,因为在我删除抽象部分后,代码将再次正常工作,甚至无需触及 FXML 或其他功能。
解析 onAction='#btnAdd_onClick' 时出错,事件处理程序不在命名空间中,或者脚本中存在错误。
文件:/D:/NetBeansWork/ProjCostTracking/dist/run1210215635/ProjCostTracking.jar!/ProjCostTracking/PaneProjectSearch.fxml:20
欢迎任何指导和建议,谢谢:)
我猜测您在抽象控制器类中有一个私有处理程序方法。为了实现这项工作,我认为处理程序方法以及任何 @FXML 注释的字段都需要可由子类直接访问(即公共或受保护的,或者默认可见性,如果子类与抽象控制器位于同一包中) )。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)