我们在scenebuilder的帮助下创建了几个JavaFX视图。它们的组件通过FXMLLoader
注入控制器类,例如TreeTableView
。现在,我想覆盖TreeTableView
的特定方法,但由于它由FXMLLoader
初始化,我不知道如何处理此问题。
有没有办法覆盖FXMLLoader注入TreeTableView
的方法,而无需创建新的控件并将其导入到scenebuilder中?
答案 0 :(得分:1)
要覆盖SceneBuilder中的方法,您需要使用Java或其他面向对象语言对目标控件进行子类化,并将子类导入SceneBuilder。
FXML(SceneBuilder所基于的),只是一个声明系统,它没有像子类化这样的结构。
许多JavaFX控件都有可设置的事件处理程序(例如setOnMouseClicked),也是可自定义的CSS,这些都可以在SceneBuilder和FXML中进行操作。因此,您可以在不创建新控件或子类的情况下进行大量自定义,但有时您可能需要创建自定义控件以获得所需的灵活性。