Java 在文本字段中设置文本无效

Java 在文本字段中设置文本无效,java,javafx,textfield,fxml,Java,Javafx,Textfield,Fxml,我试图让textfield存储一个人的名字,但它一直显示为空白,我目前拥有的如下内容 在我的FXML文件中,我有这个标签和文本字段 <Label layoutX="156.0" layoutY="82.0" prefHeight="17.0" prefWidth="42.0" text="Name:" /> <TextField fx:id="nameTf" text="${controller.customer.name}" layoutX="204.0" layoutY=

我试图让textfield存储一个人的名字,但它一直显示为空白,我目前拥有的如下内容

在我的FXML文件中,我有这个标签和文本字段

<Label layoutX="156.0" layoutY="82.0" prefHeight="17.0" prefWidth="42.0" text="Name:" />

<TextField fx:id="nameTf" text="${controller.customer.name}" layoutX="204.0" layoutY="78.0" />
我从另一个控制器调用setter来设置名称,如下所示

ServeController serve = new ServeController();

@FXML private void serveCustomer (ActionEvent event) throws Exception {
    serve.setName(customers.get(namelistview.getSelectionModel().getSelectedIndex()).getName());

customers是一个ObservableList,getName函数以字符串的形式返回名称,我已经测试过了,它可以正常工作。

主要问题是正如James指出的,我通过插入以下代码在对象而不是实际控制器上调用setter

ServeController controller = fxmlLoader.getController();
而不是

ServeController serve = new ServeController();
通过引用控制器调用setter,一切似乎都正常


谢谢你的帮助,詹姆斯:

1。我在您的控制器中没有看到任何名为customer的属性。你期待什么文本=。。。在FXML中要做什么?2.您不是在调用setName。。。在控制器上,您在创建的对象上调用它,该对象是控制器类的另一个实例。因此,它不会更改文本字段中的文本。我希望FXML值更改为客户名称,当前客户是公共客户厨房、字符串电话、字符串名称,我将如何解决第二个问题?但控制器中没有客户属性?还是你把它漏掉了?要解决第二个问题,需要在实际控制器上调用setName。加载相应的FXML并显示时,您可以从FXML加载程序中获取控制器,但您尚未解释这两个控制器之间的关系,因此没有人可以确切地告诉您如何执行此操作。请参阅HelpsOry,2之间的关系如下所示,主控制器Pizzeria controller在单击按钮时打开一个新的服务XML实例,Pizzeria包含一个在列表视图中打印出来的可观察客户列表,一旦用户从列表视图中单击其中一个名称并单击按钮,我希望他们的名称显示在新打开的服务XML中。我会看看你提供的链接谢谢
ServeController serve = new ServeController();