如何在JavaFX中从AnchorPane获取组件

如何在JavaFX中从AnchorPane获取组件,java,validation,javafx,Java,Validation,Javafx,我的问题是这个。我需要验证我的表单,我已经完成了CSS样式和我需要的一切。但我想知道我是否有办法通过anchorpane获得我的表单组件 是否有任何方法可以通过fx:id获取anchorpane的组件?使用FXML控制器成员引用 考虑到您使用的是FXML,最好的解决方案可能是利用对注入控制器中的节点的引用。当您有一个fx:id元素时,您的FXML中将有一个带有@FXML注释的相应成员。您可以使用中定义的机制获取对控制器的引用。控制器可以通过getter直接公开节点,或者(通常更好)公开一些表示节

我的问题是这个。我需要验证我的表单,我已经完成了CSS样式和我需要的一切。但我想知道我是否有办法通过anchorpane获得我的表单组件


是否有任何方法可以通过fx:id获取anchorpane的组件?

使用FXML控制器成员引用

考虑到您使用的是FXML,最好的解决方案可能是利用对注入控制器中的节点的引用。当您有一个
fx:id
元素时,您的FXML中将有一个带有
@FXML
注释的相应成员。您可以使用中定义的机制获取对控制器的引用。控制器可以通过getter直接公开节点,或者(通常更好)公开一些表示节点状态的属性(例如标签文本),如果需要,您可以侦听和操作这些属性

在窗格中使用getChildren

您可以调用以获取窗格的子级,如果需要,还可以对每个子级递归调用getChildren。一个复杂的解决方案可以使用

使用CSS查找

由于您已经设置了CSS样式,而不是遍历子项,因此可以使用CSS查找来创建样式。请注意,除了
fx:id
属性外,还必须为节点定义
id
属性,以便此类查找工作。还请注意,CSS必须已应用于节点,才能正常工作,例如,节点在活动场景中显示(已显示),或者您已手动将
applyCSS()
函数触发到父节点(当父节点连接到场景时)。这些额外的约束以及CSS选择器的非类型、非编译器验证的特性,使得使用CSS查找作为查找子对象的机制成为一种非常脆弱的解决方案,并且只有在相当有限的情况下才真正推荐使用


考虑到您的任务是表单验证,您可能希望使用google JavaFX表单验证并选择现有库,而不是尝试运行自己的东西。您可以考虑的示例库是JIDFX、FXFARM2或CopysFX.