【发布时间】:2016-04-11 07:32:26
【问题描述】:
我一直在研究 JavaFX,它非常有趣,但我没有看到的一件事是如何将 FXML 元素(文本字段、按钮)直接链接到 Java 代码,就像我们在 Android 中所做的那样,可以选择为每个项目,有没有办法将两者链接在一起,而不是总是使用 SceneBuilder 或在 FXML 中手动完成?
【问题讨论】:
我一直在研究 JavaFX,它非常有趣,但我没有看到的一件事是如何将 FXML 元素(文本字段、按钮)直接链接到 Java 代码,就像我们在 Android 中所做的那样,可以选择为每个项目,有没有办法将两者链接在一起,而不是总是使用 SceneBuilder 或在 FXML 中手动完成?
【问题讨论】:
您需要在 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!");
}
}
【讨论】:
只需在控制器类中使用FXML注解即可,例如:
@FXML private Label fooLabel;
@FXML private TextField barTextField;
变量名称与 FXML 元素 ID 匹配的位置。
【讨论】:
我刚刚想通了,在控制器类中我可以将对象名称(例如 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;
【讨论】: