我一直在关注JavaFX及其非常有趣但有一件事我没有看到如何将FXML元素(TextFields,Buttons)直接链接到Java代码,就像我们在Android中那样,有一个选项可以设置Id for每个项目,是不是有办法将两者连接在一起,而不是总是使用SceneBuilder或手动在FXML中进行?
答案 0 :(得分:2)
您需要在FXML中为元素设置fx:id
属性(您可以手动或使用SceneBuilder进行)。请注意,您需要fx:id
,而不仅仅是id
(这是CSS ID)。
然后,元素创建的对象将被注入控制器中与属性值同名的字段。该字段应注明@FXML
(推荐)或公开(强烈推荐)。
示例:
<Button fx:id="myButton" text="Click Me" onAction="#handleButtonClick"/>
并在控制器中
public class Controller {
@FXML
private Button myButton ;
@FXML
public void handleButtonClick() {
System.out.println("Button was clicked!");
}
}
答案 1 :(得分:1)
只需在控制器类中使用FXML
Annotation,例如:
@FXML private Label fooLabel;
@FXML private TextField barTextField;
其中变量的名称与FXML元素ID匹配。
答案 2 :(得分:0)
我只是想通了,在控制器类中我可以将对象名称设置为TextField
名称到我给textField
的确切ID我要用@FXML
标签进行操作在对象创建代码之上的一个例子是
所以假设我有一个带有TextField
id = txt_username
的FXML文件
<TextField layoutX="167.0" layoutY="194.0" promptText="userName">
<font>
<Font size="18.0" />
我可以在顶部
创建一个对象名txt_username with the @FXML annotation
@FXML
private TextField txt_username;