JavaFX를 사용하는 데모 응용 프로그램을 개발하려고합니다. MainController와 AddUserController가 각각 2 개인 경우 .fxml 파일이 있고 main.fxml에 사용자 목록을 표시하는 테이블이 있고, 일부 필드가있는 사용자를 추가 할 수있는 창을 여는 버튼이 있습니다. 따라서 사용자 목록은 메모리 내장 DB에 포함됩니다.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에서 이것을 실행하려고그것은 작동하고 OK
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