Desarrollo de Aplicaciones Gráficas

Introducción a JavaFX

JavaFX es un conjunto de herramientas y librerías para la creación de aplicaciones de escritorio con interfaces gráficas de usuario (GUI) en Java. Aquí tienes una introducción básica:

Ventajas de JavaFX

  • Interfaz Moderna: Permite crear interfaces de usuario modernas y atractivas.
  • Rica en Características: Proporciona una amplia gama de componentes gráficos y efectos visuales.
  • Multiplataforma: Las aplicaciones JavaFX se pueden ejecutar en diferentes sistemas operativos sin cambios significativos.
  • Integración con Java: Se integra bien con el lenguaje Java y otras tecnologías de Java.

Ejemplo Básico de Aplicación JavaFX

				
					import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class MiAplicacionJavaFX extends Application {

    @Override
    public void start(Stage primaryStage) {
        // Crear un botón
        Button btn = new Button();
        btn.setText("¡Haz clic!");

        // Manejar eventos
        btn.setOnAction(e -> System.out.println("¡Hola, JavaFX!"));

        // Layout
        StackPane root = new StackPane();
        root.getChildren().add(btn);

        // Escena
        Scene scene = new Scene(root, 300, 250);

        // Configurar escenario principal
        primaryStage.setTitle("Mi Aplicación JavaFX");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

				
			

En este ejemplo:

  • Se crea una clase que extiende de Application.
  • Se implementa el método start() donde se configura la interfaz gráfica.
  • Se crea un botón y se maneja el evento de clic.
  • Se configura el layout y la escena.
  • Se inicia la aplicación llamando a launch().

Ejecución de la Aplicación

Para ejecutar la aplicación, necesitas configurar tu entorno de desarrollo para trabajar con JavaFX y luego ejecutar la clase principal.

Estructura básica de una aplicación JavaFX

La estructura básica de una aplicación JavaFX suele seguir un patrón estándar. Aquí tienes una estructura básica típica:

				
					MiAppJavaFX/
├── src/
│   └── miappjavafx/
│       ├── Main.java
│       └── VistaPrincipal.fxml
└── out/

				
			
  • src/: Directorio que contiene el código fuente de la aplicación.
    • miappjavafx/: Paquete principal de la aplicación.
      • Main.java: Clase principal que inicia la aplicación.
      • VistaPrincipal.fxml: Archivo FXML que define la interfaz gráfica principal.
  • out/: Directorio que contendrá los archivos compilados y generados por el IDE

Controles y eventos en JavaFX

En JavaFX, los controles son elementos visuales como botones, etiquetas, campos de texto, etc. Los eventos son acciones que ocurren en estos controles, como hacer clic en un botón o escribir en un campo de texto. Aquí tienes un ejemplo básico de cómo trabajar con controles y eventos en JavaFX:

Ejemplo de Controles y Eventos en JavaFX

VistaPrincipal.fxml

				
					<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Button?>
<?import javafx.event.ActionEvent?>

<VBox xmlns="http://javafx.com/javafx"
      xmlns:fx="http://javafx.com/fxml"
      fx:controller="miappjavafx.VistaPrincipalController">

    <Label text="Haz clic en el botón:" />
    
    <Button text="Haz clic aquí" onAction="#botonClicado" />

</VBox>

				
			

VistaPrincipalController.java

				
					package miappjavafx;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Label;

public class VistaPrincipalController {

    @FXML
    private Label etiqueta;

    @FXML
    private void botonClicado(ActionEvent event) {
        etiqueta.setText("¡Botón clicado!");
    }
}

				
			

Main.java

				
					package miappjavafx;

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

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        // Cargar la vista desde el archivo FXML
        Parent root = FXMLLoader.load(getClass().getResource("VistaPrincipal.fxml"));
        // Configurar la escena
        Scene scene = new Scene(root, 300, 200);
        // Configurar el escenario principal
        primaryStage.setTitle("Controles y Eventos en JavaFX");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

				
			

Explicación

  • En VistaPrincipal.fxml, creamos una etiqueta y un botón. El evento onAction del botón está vinculado al método botonClicado en el controlador.
  • En VistaPrincipalController.java, definimos el método botonClicado que se ejecutará cuando se haga clic en el botón. En este caso, cambia el texto de la etiqueta.
  • Main.java inicia la aplicación cargando la interfaz desde VistaPrincipal.fxml.

Diseño de interfaces gráficas

En JavaFX, puedes diseñar interfaces gráficas utilizando archivos FXML junto con CSS para estilizar los elementos. Aquí tienes un ejemplo básico de diseño de una interfaz gráfica en JavaFX:

Ejemplo de Diseño de Interfaz Gráfica en JavaFX

VistaPrincipal.fxml

				
					<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Button?>
<?import javafx.geometry.Insets?>

<VBox xmlns="http://javafx.com/javafx"
      xmlns:fx="http://javafx.com/fxml"
      fx:controller="miappjavafx.VistaPrincipalController"
      styleClass="contenedor">
    
    <Label text="¡Interfaz Gráfica en JavaFX!" styleClass="titulo" />
    
    <Button text="Haz clic aquí" onAction="#botonClicado" />
    
</VBox>

				
			

Estilos.css

				
					.contenedor {
    -fx-background-color: #f0f0f0;
    -fx-padding: 20px;
    -fx-spacing: 10px;
}

.titulo {
    -fx-font-size: 18px;
    -fx-font-weight: bold;
    -fx-text-fill: #333333;
}

.button {
    -fx-background-color: #4CAF50;
    -fx-text-fill: white;
    -fx-font-size: 14px;
    -fx-padding: 10px 20px;
    -fx-border-radius: 5px;
}

.button:hover {
    -fx-background-color: #45a049;
}

				
			

VistaPrincipalController.java

				
					package miappjavafx;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Label;

public class VistaPrincipalController {

    @FXML
    private Label etiqueta;

    @FXML
    private void botonClicado(ActionEvent event) {
        etiqueta.setText("¡Botón clicado!");
    }
}

				
			

Main.java

				
					package miappjavafx;

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

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        // Cargar la vista desde el archivo FXML
        Parent root = FXMLLoader.load(getClass().getResource("VistaPrincipal.fxml"));
        // Configurar la escena
        Scene scene = new Scene(root);
        scene.getStylesheets().add(getClass().getResource("Estilos.css").toExternalForm());
        // Configurar el escenario principal
        primaryStage.setTitle("Diseño de Interfaces Gráficas en JavaFX");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

				
			

Explicación

  • En VistaPrincipal.fxml, creamos una interfaz gráfica con una etiqueta y un botón.
  • En Estilos.css, definimos estilos CSS para los elementos de la interfaz.
  • En VistaPrincipalController.java, manejamos el evento del botón para cambiar el texto de la etiqueta.
  • Main.java inicia la aplicación cargando la interfaz y aplicando los estilos definidos en el archivo CSS.