私は2つのコントローラのメインコントローラとAddUserControllerを持っているのJavaFXを使ってデモアプリケーションを開発しようとしていますにコントローラ間で通信できません。いくつかのフィールドを持つユーザーを追加するためのウィンドウを開くボタン。したがって、ユーザーのリストはインメモリDBに含まれています。ユーザーを追加するときは、main.fxmlは、ユーザーのリストを表示するテーブルが含まれ、それらのそれぞれが独自の.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からこれを実行しようとすると、それが働いている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