JavaFX自定义组件要点

2019-02-27

JavaFX自定义组件要点

参考:Oracle官方文档

官方文档是in practice类型的讲解,有些要点讲不到,这里总结一下:

  • 自定义组件的根节点一定要是fx:root,是一个标记自定义组件根节点的标签。

  • 控制类的继承类型一定要和fxml根节点的type属性相同,比如我fx:root标签的type是VBox,那么Java控制类一定要继承VBox。

  • 在控制类的构造函数中这几行最重要:

    FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("custom_control.fxml"));
    //加载fxml
    fxmlLoader.setRoot(this);
    //设置root
    fxmlLoader.setController(this);
    //设置控制器
    fxmlLoader.load();
    //加载并渲染
    
  • 自定义节点中的Bean Property(就是有一套getter和setter,不一定要真的有这个属性)可以在Fxml中直接注入,等于调用set方法,比如这样:

    public String getText() {
        //...随便什么
    }
    public void setText(String value) {
        //...随便什么
    }
    
    <CustomControl text="你好啊"/>
    
  • 在其他页面中import控制器类即可使用:

    <?import sample.custom.CustomControl?>
    
  • 可以用常见的id方法获得引用:

    <CustomControl fx:id="cs1" />
    
    @FXML private CustomControl cs1;