FXMLLoader getController devuelve NULL?

Tengo la clase de aplicación principal que hace lo siguiente muy bien:

@Override public void start(Stage primaryStage) { try { FXMLLoader loader = new FXMLLoader(getClass().getResource( "RecordScreen.fxml")); Parent root = (Parent) loader.load(); Scene newScene = new Scene(root); Stage newStage = new Stage(); newStage.setScene(newScene); newStage.show(); } catch (Exception e) { e.printStackTrace(); } } 

Lanza una vista de tabla que muestra personas. Selecciono a una persona, presiono el botón Editar e bash abrir una ventana que me permitirá editarlos.

  @FXML public void editPerson() { try { FXMLLoader loader = new FXMLLoader(getClass().getResource( "PersonEditor.fxml")); PersonEditorCtrl ctrl = loader.getController(); ctrl.init(table.getSelectionModel().getSelectedItem()); Parent root = (Parent) loader.load(); Scene newScene = new Scene(root); Stage newStage = new Stage(); newStage.setScene(newScene); newStage.show(); } catch (Exception e) { e.printStackTrace(); } } 

El problema es que getController devuelve nulo. He estado siguiendo este patrón durante las últimas 2 semanas sin problemas en absoluto. ¿Qué estoy haciendo mal ahora? ¡¡¡Estos errores que no se pueden rastrear se agravan !!!

Aquí están mis dos fxmls:

La pantalla con tabla vista:

            

El editor de persona:

        

Cambia esto

 @FXML public void editPerson() { try { FXMLLoader loader = new FXMLLoader(getClass().getResource( "PersonEditor.fxml")); PersonEditorCtrl ctrl = loader.getController(); ctrl.init(table.getSelectionModel().getSelectedItem()); Parent root = (Parent) loader.load(); Scene newScene = new Scene(root); Stage newStage = new Stage(); newStage.setScene(newScene); newStage.show(); } catch (Exception e) { e.printStackTrace(); } } 

A ese:

 @FXML public void editPerson() { try { FXMLLoader loader = new FXMLLoader(getClass().getResource( "PersonEditor.fxml")); Parent root = (Parent) loader.load(); PersonEditorCtrl ctrl = loader.getController(); ctrl.init(table.getSelectionModel().getSelectedItem()); Scene newScene = new Scene(root); Stage newStage = new Stage(); newStage.setScene(newScene); newStage.show(); } catch (Exception e) { e.printStackTrace(); } } 

Primero debe ejecutar loader.load() luego puede obtener el controlador.

Patricio