我有一个 JavaFX 应用程序,其中包含一个 FXML 文件和一个指定的 Java 类来充当该 FXML 的 Controller 。如何将类属性绑定(bind)到 FXML 中的值?例如:
我的 Controller 类:
public class MyController{
...
@FXML
static String myString = "this is text";
...
}
以及以下 FXML:
<Pane fx:controller="MyController">
...
<String fx:value="MyController.myString">
...
</Pane>
如果我执行上述操作,fx:value
将绑定(bind)到文字 "MyController.myString"
。如何将它绑定(bind)到我在 Controller 中设置的静态变量?
最佳答案
您可以使用
<MyController fx:constant="myString"/>
(假设您在 FXML 文件中具有适合您的 Controller 类的导入)。我还没有测试过,但您可能需要将 myString
最终。
如果您想绑定(bind)到某个变量,即不是常量,您可以在 FXML 本身中定义一个属性:
<fx:define>
<SimpleStringProperty fx:id="myString" />
</fx:define>
并将其绑定(bind)到某个东西
<Label text="${myString}" />
当然,您可以像任何其他值一样将其注入(inject) Controller :
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);
}
// ...
}
关于java - 在 FXML 中引用 Controller 类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39839818/