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
- Archivo FXML Principal (MainView.fxml):
- Crea este archivo FXML y usa Scene Builder o el editor de Eclipse para agregar un
MenuBar
con unMenuItem
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>
- 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
- 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();
}
}
}
- 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
.
Gracias por visitar mi blog de informática, mi nombre es Tomás y soy formador y desarrollador web. Si quiere usted dejarme alguna sugerencia, ayuda o quiere un servicio de formación estoy escuchando ofertas en tomas.gonzalez@infogonzalez.com, en Facebook a https://www.facebook.com/Infogonzalez estoy deseando escucharle. Su duda o sugerencia NO molesta.