0
我想讓文本字段存儲一個人名稱,但它始終顯示爲空白,我現在擁有的是如下所示。設置文本字段中的文本不起作用
在我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() {
}
}
和我從另一個控制器調用setter來設置名稱像這樣。
ServeController serve = new ServeController();
@FXML private void serveCustomer (ActionEvent event) throws Exception {
serve.setName(customers.get(namelistview.getSelectionModel().getSelectedIndex()).getName());
客戶是ObservableList,他們中的getName()函數返回的字符串名字(我已經測試這和它的作品)。
1.我沒有在控制器中看到任何名爲'customer'的屬性。你期待FXML中的'text =「...」'做什麼? 2.您不在控制器上調用'setName(...)',您正在調用它作爲控制器類的另一個實例創建的對象。所以它不會改變文本字段中的文本。 –
我期待FXML價值變成客戶名稱,目前客戶是公衆客戶(廚房廚房,串話機,字符串名稱),我將如何去解決第二個問題? – Dan
但是控制器中沒有'customer'屬性?或者你是否忽略了它?要解決第二個問題,你需要在實際的控制器上調用'setName()'。當你加載相應的FXML並顯示它時,你可以從FXML Loader獲得控制器,但是你沒有解釋兩個控制器之間的關係,所以沒有人能告訴你如何做到這一點。 –