将javaFX元素直接链接到Java代码

时间:2016-01-07 02:00:32

标签: java android javafx fxml

我一直在关注JavaFX及其非常有趣但有一件事我没有看到如何将FXML元素(TextFields,Buttons)直接链接到Java代码,就像我们在Android中那样,有一个选项可以设置Id for每个项目,是不是有办法将两者连接在一起,而不是总是使用SceneBuilder或手动在FXML中进行?

3 个答案:

答案 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;