我有一个带有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"
。如何将其绑定到我在控制器中设置的静态变量?
答案 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);
}
// ...
}