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;