我正在尝试将文本字段存储为人名,但它一直显示为空白,我目前所拥有的内容如下所示。
在我的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()函数将该名称作为字符串返回(我已经测试了这个并且它有效)。
答案 0 :(得分:1)
主要问题是詹姆斯指出,我通过插入以下代码来调用对象而不是实际控制器的setter
ServeController controller = fxmlLoader.getController();
而不是
ServeController serve = new ServeController();
并通过引用控制器调用setter,一切似乎都正常。
感谢你的帮助James:)