Javafx 如何在加载视图后运行代码块

Javafx 如何在加载视图后运行代码块,javafx,fxml,Javafx,Fxml,使用fxml文件和控制器时,可能会有一个initialize方法,该方法在加载视图之前运行。类似地,是否有方法在加载视图后运行代码块? 更具体地说,我在fxml文件中有一个矩形。在视图加载并传递一个LinearGradient实例后,我想从控制器调用Rectangle的setFill()方法LinearGradient的属性没有设置器,也没有无参数构造函数,因此我认为不能在fxml文件中分配fill属性。 我尝试将此代码放入控制器的构造函数中,但这导致了一个错误。如果可能,我还想知道当fxmlo

使用fxml文件和控制器时,可能会有一个initialize方法,该方法在加载视图之前运行。类似地,是否有方法在加载视图后运行代码块?
更具体地说,我在fxml文件中有一个
矩形
。在视图加载并传递一个
LinearGradient
实例后,我想从控制器调用
Rectangle
setFill()
方法
LinearGradient
的属性没有设置器,也没有无参数构造函数,因此我认为不能在fxml文件中分配fill属性。
我尝试将此代码放入控制器的构造函数中,但这导致了一个错误。如果可能,我还想知道当
fxmloader
加载一个fxml文件时(当调用构造函数时),控制器类会发生什么过程

如有必要,请查看此示例代码:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.layout.Pane?>
<?import javafx.scene.shape.Rectangle?>

<Pane fx:controller="sample.RectController" xmlns:fx="http://javafx.com/fxml">
    <Rectangle fx:id="rect" height="200.0" width="200.0" />
</Pane>

您希望控制器实现一个no-arg
initialize()
方法,该方法用
@FXML
注释(旧方法是实现
javafx.FXML.Initializable
,但从中可以看出,您不再需要该接口)


您无法在控制器的构造函数中执行此操作,因为FXMLLoader尚未注入字段。

“使用fxml文件和控制器时,可能会有一个初始化方法,该方法在加载视图之前运行”——我相信这是一个误解。initialize方法是在FXML已完全加载并且FXML相关字段已注入控制器之后而不是之前调用的。谢谢。成功了。我的印象是在处理根元素之前调用了
initialize()
方法,但这解决了我的问题。