引用FXML中的控制器类属性

时间:2016-10-03 20:24:09

标签: java javafx fxml

我有一个带有FXML文件的JavaFX应用程序和一个指定的Java类,作为该FXML的控制器。如何将类属性绑定到FXML中的值?例如:

我的控制器类:

    public class MyController{
    ...
    @FXML
    static String myString = "this is text";
    ...
}

以下FXML:

<Pane fx:controller="MyController">
    ...
    <String fx:value="MyController.myString">
    ...
</Pane>

如果我执行了上述操作,fx:value将绑定到文字"MyController.myString"。如何将其绑定到我在控制器中设置的静态变量?

1 个答案:

答案 0 :(得分:2)

您可以使用

<MyController fx:constant="myString"/>

(假设您在FXML文件中对控制器类进行了适当的导入)。我还没有测试过,但你可能需要让myString最终确定。

如果要绑定某个变量,即不是常量,可以在FXML中定义一个属性:

<fx:define>
    <SimpleStringProperty fx:id="myString" />
</fx:define>

并将其绑定到某个

<Label text="${myString}" />

当然,您可以将其注入控制器,就像任何其他值一样:

public class MyController {

    @FXML
    private StringProperty myString ;

    public StringProperty myStringProperty() {
        return myString ;
    }

    public final String getMyString() {
        return myStringProperty().get();
    }

    public final void setMyString(String myString) {
        myStringProperty().set(myString);
    }

    // ...
}