有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用<fx:root>

Introduction to FXML提供了如何使用<;fx:root>;。以下是文档中的一些片段:

public CustomControl() {
    FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("custom_control.fxml"));
    fxmlLoader.setRoot(this);
    fxmlLoader.setController(this);

    try {
        fxmlLoader.load();
    } catch (IOException exception) {
        throw new RuntimeException(exception);
    }
}

这里,构造函数正在泄漏可能导致some unpleasure consequence的“this”

将“this”传递给构造函数中的FXMLLoader是否安全?如果没有,有什么建议可以使此代码安全


共 (1) 个答案

  1. # 1 楼答案

    考虑到这个例子来自文档。神谕com以及他们用它来展示一个功能的事实,我认为它应该是安全的。不过,你说得很好

    你能做的就是尽量避免同时代表根和控制器的类。毕竟,从语义上讲,把它们分开会更好。因此,在上面的例子中,你可以把CustomBox extends VBox作为fx:rootCustomBoxController作为fx:controller并把初始化的负担放在上面。而不是fxml

    我想至少在这样一个组合的自定义控件周围可以有某种包装。然后包装器将创建控制对象,用它初始化加载程序,最后加载它。如果有多个这样的类,可以使用同一个包装器初始化所有自定义控件