Código Panel de Control
Requisitos de finalización

// Importamos las clases necesarias
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.stage.Stage;
public class PanelControlUsuario extends Application {
@Override
public void start(Stage stage) {
// Creamos el contenedor raíz: BorderPane (Top, Left, Center, Right, Bottom)
BorderPane root = new BorderPane();
// ------------------------------------------------------------
// TOP: Barra superior con título + barra de menús en un HBox
// ------------------------------------------------------------
// Creamos etiqueta de título
Label title = new Label("Panel de Control");
title.setFont(new Font("Comic Sans MS", 22));
title.setTextFill(Color.BLUE);
// Creamos barra de menús
MenuBar menuBar = new MenuBar(
new Menu("Archivo"),
new Menu("Editar"),
new Menu("Ayuda")
);
// Contenedor horizontal para título + menús
VBox topBar = new VBox(20, title, menuBar);
topBar.setAlignment(Pos.CENTER);
topBar.setPadding(new Insets(10, 16, 10, 16));
//Rellena con un color de fondo sólido, sin bordes redondeados ni márgenes internos
topBar.setBackground(new Background(new BackgroundFill(Color.web("#e8f0fe"),
CornerRadii.EMPTY,
Insets.EMPTY)));
//topBar.getChildren().addAll(title, menuBar);
// Insertamos la barra superior en TOP
root.setTop(topBar);
// ------------------------------------------------------------
// LEFT: Panel de navegación (VBox con botones)
// ------------------------------------------------------------
// Creamos botones de navegación
Button navInicio = new Button("Inicio");
Button navPerfil = new Button("Perfil");
Button navConfig = new Button("Configuración");
Button navSalir = new Button("Salir");
// Ajustamos tamaños preferidos
navInicio.setPrefWidth(140);
navPerfil.setPrefWidth(140);
navConfig.setPrefWidth(140);
navSalir.setPrefWidth(140);
// VBox lateral
VBox leftNav = new VBox(10);
leftNav.setAlignment(Pos.TOP_CENTER);
leftNav.setPadding(new Insets(12));
leftNav.getChildren().addAll(navInicio, navPerfil, navConfig, navSalir);
Background fondo = new Background(new BackgroundFill(Color.LIGHTGREY, new CornerRadii(20) , Insets.EMPTY));
leftNav.setBackground(fondo);
//leftNav.setBackground(new Background(new BackgroundFill(Color.LIGHTGREY, new CornerRadii(20) , Insets.EMPTY)));
leftNav.setBorder(new Border(new BorderStroke(
Color.GREY, BorderStrokeStyle.DOTTED, CornerRadii.EMPTY, new BorderWidths(0,3,0,0)
)));
// Insertamos el panel de navegación en LEFT
root.setLeft(leftNav);
// ------------------------------------------------------------
// CENTER: Formulario en GridPane (Nombre, Correo, Teléfono, País, Comentarios)
// ------------------------------------------------------------
// Etiquetas y campos
Label lblNombre = new Label("Nombre:");
TextField tfNombre = new TextField();
Label lblCorreo = new Label("Correo:");
TextField tfCorreo = new TextField();
Label lblTel = new Label("Teléfono:");
TextField tfTel = new TextField();
// Selector de país
Label lblPais = new Label("País:");
ComboBox<String> cbPais = new ComboBox<>();
cbPais.getItems().addAll("España", "México", "Argentina", "Chile", "Colombia");
cbPais.setPrefWidth(200);
// Área de comentarios
Label lblComentarios = new Label("Comentarios:");
TextArea taComentarios = new TextArea();
taComentarios.setPrefRowCount(4);
// GridPane para organizar el formulario
GridPane form = new GridPane();
form.setHgap(12);
form.setVgap(10);
form.setPadding(new Insets(16));
form.setBackground(new Background(new BackgroundFill(Color.web("#ffffff"), new CornerRadii(8), Insets.EMPTY)));
form.setBorder(new Border(new BorderStroke(
Color.web("#e5eaf3"), BorderStrokeStyle.SOLID, new CornerRadii(8), new BorderWidths(1)
)));
// Añadimos componentes al GridPane: add(node, col, row)
form.add(lblNombre, 0, 0); form.add(tfNombre, 1, 0);
form.add(lblCorreo, 0, 1); form.add(tfCorreo, 1, 1);
form.add(lblTel, 0, 2); form.add(tfTel, 1, 2);
form.add(lblPais, 0, 3); form.add(cbPais, 1, 3);
form.add(lblComentarios, 0, 4); form.add(taComentarios, 1, 4);
// Permitimos que la columna 1 crezca (campos)
ColumnConstraints c0 = new ColumnConstraints();
c0.setMinWidth(100);
ColumnConstraints c1 = new ColumnConstraints();
c1.setHgrow(Priority.ALWAYS);
form.getColumnConstraints().addAll(c0, c1);
// Insertamos el GridPane en CENTER
root.setCenter(form);
// ------------------------------------------------------------
// RIGHT: Acciones rápidas en FlowPane (botones sin funcionalidad)
// ------------------------------------------------------------
// Botones de acciones
Button btnGuardar = new Button("Guardar");
Button btnActualizar= new Button("Actualizar");
Button btnEliminar = new Button("Eliminar");
Button btnExportar = new Button("Exportar");
// FlowPane para disponerlos fluyendo
FlowPane quickActions = new FlowPane();
quickActions.setHgap(10);
quickActions.setVgap(10);
quickActions.setPadding(new Insets(12));
quickActions.setAlignment(Pos.TOP_CENTER);
quickActions.setPrefWidth(150);
quickActions.setBackground(fondo);
quickActions.setBorder(new Border(new BorderStroke(
Color.GREY, BorderStrokeStyle.DOTTED, CornerRadii.EMPTY, new BorderWidths(0,0,0,3)
)));
// Añadimos los botones al FlowPane
quickActions.getChildren().addAll(btnGuardar, btnActualizar, btnEliminar, btnExportar);
// Insertamos el FlowPane en RIGHT
root.setRight(quickActions);
// ------------------------------------------------------------
// BOTTOM: Barra de estado en HBox
// ------------------------------------------------------------
// Etiqueta de estado
Label status = new Label("Versión 1.0 | Usuario activo");
status.setTextFill(Color.web("#444"));
// Barra inferior
HBox statusBar = new HBox();
statusBar.setAlignment(Pos.CENTER);
statusBar.setPadding(new Insets(8));
statusBar.setBackground(new Background(new BackgroundFill(Color.web("#eef3ff"), CornerRadii.EMPTY, Insets.EMPTY)));
statusBar.getChildren().add(status);
// Insertamos la barra inferior en BOTTOM
root.setBottom(statusBar);
// ------------------------------------------------------------
// Escena y Stage
// ------------------------------------------------------------
// Creamos la escena con tamaño inicial
Scene scene = new Scene(root, 900, 560);
// Configuramos el Stage (ventana)
stage.setTitle("Panel de Control de Usuario");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Última modificación: domingo, 23 de noviembre de 2025, 18:45