JavaFX : can controller be an abstract class?

标签 java controller javafx-2 javafx-8 fxml

我已经研究这部分代码一天了,只是不明白为什么它总是生成错误。

我有一个 Controller 和 FXML。他们工作得很好。然后我想到我想通过抽象 updateSelect() 函数重用这个特定的 Controller 。因此,我将 Controller 更改为抽象。

代码编译得很好。直到我尝试运行这部分代码。

@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

欢迎任何指导和建议,谢谢:)

最佳答案

我猜测您在抽象 Controller 类中有一个私有(private)处理程序方法。为了实现这项工作,我认为处理程序方法以及任何 @FXML 注释的字段都需要可由子类直接访问(即公共(public)或 protected ,或者默认可见性,如果子类与抽象 Controller 位于同一包中) )。

关于JavaFX : can controller be an abstract class?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22832599/

相关文章:

java - 一个 Controller 用于不同的 View ?(MVC)

treeview - 更新 TreeView 中的 JavaFX 节点

javafx-2 - 从 javafx 平台运行后返回结果

JavaFX 组合框样式按钮(如果可编辑)

java - 第二次调用 re.eval("source()) 因 JRI 失败

java - 如何将excel表复制到同一个工作簿?

javafx 2.0 向 Label 添加边框

Java ArrayIndexOutOfBoundsException(扫雷)

mysql - 在codeigniter中将form_dropdown数据插入mysql数据库

grails - 注释可以用于使Groovy/Grails代码保持DRY吗?