Tutorial de JavaFX: Manejo de Múltiples Ventanas desde un MenuBar

Para abrir una ventana desde un elemento en un MenuBar en JavaFX utilizando Eclipse, puedes seguir los siguientes pasos. Asegúrate de tener configurado JavaFX en Eclipse, incluyendo todas las bibliotecas necesarias.

Paso 1: Crear los Archivos FXML

  1. Archivo FXML Principal (MainView.fxml):
  • Crea este archivo FXML y usa Scene Builder o el editor de Eclipse para agregar un MenuBar con un MenuItem que, cuando se haga clic, deberá abrir una nueva ventana.
   <?xml version="1.0" encoding="UTF-8"?>

   <?import javafx.scene.control.Menu?>
   <?import javafx.scene.control.MenuBar?>
   <?import javafx.scene.control.MenuItem?>
   <?import javafx.scene.layout.BorderPane?>

   <BorderPane xmlns:fx="http://javafx.com/fxml/1" fx:controller="tu.paquete.MainViewController">
       <top>
           <MenuBar>
               <Menu text="Archivo">
                   <MenuItem text="Abrir Nueva Ventana" fx:id="openWindowItem"/>
               </Menu>
           </MenuBar>
       </top>
   </BorderPane>
  1. Segundo FXML (NewWindowView.fxml):
  • Crea otro archivo FXML que diseñe la interfaz de usuario para la nueva ventana que se abrirá.
   <?xml version="1.0" encoding="UTF-8"?>

   <?import javafx.scene.control.Label?>
   <?import javafx.scene.layout.VBox?>

   <VBox xmlns:fx="http://javafx.com/fxml/1" fx:controller="tu.paquete.NewWindowViewController">
       <Label text="Esta es la nueva ventana!"/>
   </VBox>

Paso 2: Crear los Controladores

  1. Controlador para MainView.fxml (MainViewController.java):
  • Este controlador manejará la acción de abrir la nueva ventana desde el MenuItem.
   package tu.paquete;

   import javafx.fxml.FXML;
   import javafx.scene.control.MenuItem;
   import javafx.fxml.FXMLLoader;
   import javafx.scene.Parent;
   import javafx.scene.Scene;
   import javafx.stage.Stage;

   public class MainViewController {

       @FXML
       private MenuItem openWindowItem;

       @FXML
       private void initialize() {
           openWindowItem.setOnAction(event -> openNewWindow());
       }

       private void openNewWindow() {
           try {
               FXMLLoader loader = new FXMLLoader(getClass().getResource("NewWindowView.fxml"));
               Parent root = loader.load();
               Stage stage = new Stage();
               stage.setTitle("Nueva Ventana");
               stage.setScene(new Scene(root));
               stage.show();
           } catch (Exception e) {
               e.printStackTrace();
           }
       }
   }
  1. Controlador para NewWindowView.fxml (NewWindowViewController.java):
  • Controlador básico si es necesario para manejar cualquier lógica del segundo FXML.
   package tu.paquete;

   import javafx.fxml.FXML;

   public class NewWindowViewController {

       @FXML
       private void initialize() {
           // Cualquier inicialización necesaria
       }
   }

Paso 3: Ejecutar la Aplicación

Crea una clase principal que cargue MainView.fxml y ejecute la aplicación.

package tu.paquete;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class MainApp extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("MainView.fxml"));
        primaryStage.setTitle("Aplicación Principal");
        primaryStage.setScene(new Scene(root));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

Este código configura tu aplicación JavaFX para que muestre una ventana principal con un MenuBar que contiene un MenuItem. Al hacer clic en este MenuItem, se abrirá una nueva ventana con su propio contenido definido en NewWindowView.fxml.

shallow focus photography of macbook
Photo by Nao Triponez on Pexels.com

Deja un comentario

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

error: Content is protected !!

Descubre más desde InfoGonzalez - Blog de formador e informático

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad
Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.