java - 在 FXML 中引用 Controller 类属性

标签 java javafx fxml

我有一个 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/

相关文章:

java - 倾城报告 : nothing shown in Chrome

java - 我应该在编辑 Java 文件的同时只修改 Android 的 XML 吗?

java - RecyclerView Item Click Listener 的正确方式

java - 为什么listView.getSelectionModel().getSelectedIndex()返回-1?

java - 使用 Kotlin 时 FXML 控件始终为空

java - 使用 Mongodb 版本 4 和副本配置 flapdoodle 嵌入式 mongo

JavaFx 11 ListView 即使不处于编辑状态也会消耗 ESCAPE 键按下事件

java - JavaFX 8 中文本区域的透明背景

java - 我可以在 FXML 中设置 BorderPane 元素的宽度吗?

java - JavaFX 中的 TableView 中未显示项目