我到处都看到有关使用 o FXMLLoader#setController() 的解释,它与使用 fx:root 以及以编程方式设置根节点相关联(Oracle Docs和SO 答案都有这种模式)。是要求吗?或者我可以使用一些好的旧容器创建一个常规的 FXML(可能使用 SceneBuilder),然后仅以编程方式设置控制器吗?
在 FXML 中:
<BorderPane fx:id="root" prefHeight="500.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml" > </Borderpane>
在某些代码中(可能是控制器):
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("fxml_example2.fxml"));
fxmlLoader.setController(this);
try {
fxmlLoader.load();
} catch (IOException exception) {
throw new RuntimeException(exception);
}