JavaFx / FXML上下文中的“Node”一词是什么意思?如果我搜索这个问题,我发现所有人都在使用“讨论别的东西”一词,但没有解释.例如,这个问题的答案:
How do I open the JavaFX FileChooser from a controller class?:
For any node in your scene (for example,the root node; but any node
you have injected with @FXML will do),do
chooser.showOpenDialog(node.getScene().getWindow());
节点会是什么,以及如何“注入@FXML”?
解决方法
Node是场景图“由…构成”的图形元素的抽象超类.
从Node继承的类的一些示例:
> TextField
> AnchorPane
>画布
>集团
> VBox
>按钮
>标签
> ……
以这种方式注入具有FXMLLoader id的节点:
>在与fxml关联的控制器中创建一个具有适当类型的字段(即可以为要注入的元素指定的任何类型). FXMLLoader必须可以访问此字段,这意味着它必须是公共的或使用@FXML注释进行注释.
>将fxml命名空间中的id属性(最有可能使用前缀fx)添加到应注入的fxml文件中的元素.该属性的值是控制器中字段的名称.
例
FXML
.... <TextField fx:id="myTextField" ....> ....
调节器
.... @FXML private TextField myTextField; ....
在调用控制器的initialize方法之前,FXMLLoader使用此信息将为fxml元素创建的对象分配给字段.
可以在此处找到包含注射的完整示例/扩展指南:https://docs.oracle.com/javase/8/javafx/fxml-tutorial/fxml_tutorial_intermediate.htm#JFXMG153