Buenas tardes,
se me plantea un problema a la hora de trabajar con una aplicación JavaFX con 2 vistas diferentes(archivos .fxml). Concretamente, tengo una vista con una tabla con su correspondiente controlador (vista 1). Por otro lado, tengo otra vista con su respectivo controlador (vista 2) que consiste en un Stage donce manualmente se insertan datos que posteriormente aparecerán en las columnas de la tabla (vista 1). El método que inserta dichos objetos lo tengo en el controlador de la vista 2. Cuando ejecuto la aplicación, el objeto se inserta correctamente en la BBDD, pero no consigo que la tabla se actualice en tiempo de ejecución.
Para lograr comunicar y pasar el objeto insertado del controlador de la vista 2 al controlador de la vista 1, hago lo siguiente:
public void actualizarDatosMarca(){
listaMarca.clear();
InsertarMarcaController controller = new InsertarMarcaController();
listaMarca = controller.getListaMarca();
System.out.println("Objetos de la clase Marca -> Marca.fxml " + listaMarca);
Conexion conexion = new Conexion();
conexion.establecerConexion();
Marca.mostrarMarca(conexion.getConnection(), listaMarca);
tblMarca.setItems(listaMarca);
conexion.cerrarConexion();
}
listaMarca lo he definido como un ObservableList<Marca> para almacenar la colección de objetos Marca. El metodo getListaMarca() contiene una colección de objetos que está en el controlador de la vista 2. Cuando añado un nuevo objeto, lo almaceno en dicha colección. Este método te devuelve la colección actualizada. El método mostrarMarca() recupera toda la colección existente de objetos Marca que existe en la BBD. El método setItems(listaMarca) actualiza la colección en el TableView (controlador vista 1). El caso es que si ejecuto manualmente este método a través de pulsar un botón, la tabla se actualiza. Pero no consigo que cuando pulso el botón 'Aceptar' en el controlador de la vista 2 me aparezca automáticamente este nuevo objeto en la tabla de la vista 1.
¿Me podrían ayudar u orientar?¿Qué es lo que hago mal?
Muchas gracias