usar tutorial togglegroup español javafx fxml

tutorial - togglegroup javafx fxml



JavaFX múltiple FXML y 1 controlador compartido (1)

Fondo

No sé si realmente es recomendable compartir una instancia de controlador, al menos nunca lo había visto antes.

Incluso si establece la clase de controlador en cada uno de los archivos fxml que está cargando con el mismo valor, no va a compartir la misma instancia de controlador, ya que cada vez que carga un controlador, creará una nueva instancia (objeto) de la clase de controlador (que no parece ser lo que quieres).

Soluciones potenciales

No he probado ninguna de estas soluciones, pero creo que funcionarán.

El método de inicialización probablemente se invocará cada vez que cargue un nuevo archivo fxml. Entonces querrás dar cuenta de eso en tu lógica haciendo inicializar idempotent .

A. Configure manualmente la instancia del controlador.

  1. Elimine todas las referencias a su clase de controlador de sus archivos fxml.
  2. Cree manualmente una instancia de su clase de controlador.

    MyController controller = new MyController();

  3. Configure el controlador en su instancia de controlador antes de cargar cada fxml.

    FXMLLoader loader = new FXMLLoader(); loader.setController(controller); Panel panel = (Panel) loader.load("myfxml.fxml");

  4. Repita el paso 3 para cada uno de sus archivos fxml, usando la misma referencia de controlador cada vez.

B. Use una fábrica de controladores.

Puede establecer una fábrica de controladores en sus cargadores de archivos fxml y hacer que la fábrica del controlador siempre devuelva la misma instancia de controlador.

Creé un FXML raíz que es un BorderPane y tiene su propio controlador raíz. Quiero agregar dinámicamente FXML al centro de este borde de frontera.

Cada uno de estos archivos fxml comparte el mismo controlador, controlador raíz. He hecho esto en netbeans eligiendo un controlador existente al crear un archivo FXML vacío.

También le he dado a los nodos diferentes nombres de identificación, pero el controlador raíz no reconoce los nodos en estos archivos fxml.

¿Es posible compartir el mismo controlador para diferentes archivos fxml?

Gracias por adelantado