【问题标题】:How to override a control's method, when initialized by FXMLLoader?由 FXMLLoader 初始化时如何覆盖控件的方法?
【发布时间】:2014-06-17 16:28:33
【问题描述】:

我们在scenebuilder 的帮助下创建了几个JavaFX 视图。它们的组件通过FXMLLoader 注入到控制器类中,例如TreeTableView。现在我想重写TreeTableView 的特定方法,但由于它是由FXMLLoader 初始化的,我不知道如何处理。

有没有什么方法可以覆盖 FXMLLoader 注入的TreeTableView 方法,而无需创建新控件并将其导入scenebuilder?

【问题讨论】:

    标签: java javafx overriding code-injection fxmlloader


    【解决方案1】:

    要覆盖 SceneBuilder 中的方法,您需要使用 Java 或其他面向对象的语言对目标控件进行子类化,然后将子类导入 SceneBuilder。

    FXML(SceneBuilder 所基于的)只是一个声明性系统,它没有像子类化这样的结构。

    许多 JavaFX 控件具有可设置的事件处理程序(例如 setOnMouseClicked)并且也是可自定义的 CSS,这两者都可以在 SceneBuilder 和 FXML 中进行操作。因此,您可以在不创建新控件或子类的情况下进行大量自定义,但有时您可能希望创建自定义控件以获得所需的灵活性。

    【讨论】:

    • 我猜我必须将这些类导入 SceneBuilder,因为它还不是关于事件处理程序和/或布局特定问题的问题。感觉开销太大了,因为我的目标只是覆盖一个小方法来集成一个小的增强功能。无论如何,感谢您向我确认这一点!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    • 2020-08-23
    相关资源
    最近更新 更多