我試圖開發使用JavaFX在那裏我有2個控制器MainController和AddUserController一個演示應用程序控制器之間的溝通,他們每個人都有自己的.fxml文件,main.fxml包含顯示用戶清單表,和一個按鈕,打開窗口用於添加一些字段的用戶。因此,用戶列表包含在內存數據庫中。無法在JavaFX的
所以添加用戶當表中不填充列表。
MainController.java
public void setTestUser(){
List<Users> users = new ArrayList();
Users user = new Users();
user.setName("Name");
user.setSurname("Surname");
users.add(user);
name.setCellValueFactory(new PropertyValueFactory<Users, String>("name"));
surname.setCellValueFactory(new PropertyValueFactory<Users, String>("surname"));
usersTable.setItems(FXCollections.observableArrayList(users));
}
AddUserController.java
private void handleAddUser(ActionEvent event) throws IOException {
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.load(getClass().getResource("/fxml/main.fxml").openStream());
MainController mainController = fxmlLoader.getController();
Users user = new Users();
user.setName(name.getText());
user.setSurname(surname.getText());
user.setDateOfBirth(dateOfBirth.getValue().toString());
usersService.add(user);
mainController.populateUsersTable();
}
將不會更新表的用戶,但如果我嘗試usersTable.getItems();
名單是存在的,有什麼問題,所以後遠?
// UPDATE:
試圖從MainController.java執行此,它是工作正常
public void setTestUser(){
List<Users> users = new ArrayList();
Users user = new Users();
user.setName("Name");
user.setSurname("Surname");
users.add(user);
name.setCellValueFactory(new PropertyValueFactory<Users, String>("name"));
surname.setCellValueFactory(new PropertyValueFactory<Users, String>("surname"));
usersTable.setItems(FXCollections.observableArrayList(users));
}
的GUI不會刷新? –
是的,你是對的 – Denees
你的代碼是不完整的,它絕對是從哪裏叫什麼。 – glglgl