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

时间:2017-06-05 03:06:18

标签: java javafx textfield fxml

我正在尝试将文本字段存储为人名,但它一直显示为空白,我目前所拥有的内容如下所示。

在我的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" />

我的控制器里面有这个FXML。

public class ServeController {

@FXML private TextField nameTf;
@FXML private TextField phoneTf;

private String getName() { return nameTf.getText(); }
private double getPhone () { return Double.parseDouble (phoneTf.getText());
}

public void setName(String name) {
    nameTf.setText(name);
}

private void setPhone(String phone) {
    nameTf.setText(phone);
}

@FXML private void initialize() {
}

}

我从另一个Controller调用setter来设置这样的名字。

ServeController serve = new ServeController();

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

customers是一个ObservableList,getName()函数将该名称作为字符串返回(我已经测试了这个并且它有效)。

1 个答案:

答案 0 :(得分:1)

主要问题是詹姆斯指出,我通过插入以下代码来调用对象而不是实际控制器的setter

ServeController controller = fxmlLoader.getController();

而不是

ServeController serve = new ServeController();

并通过引用控制器调用setter,一切似乎都正常。

感谢你的帮助James:)