Saltar la navegación

4.3.- Estructura de una aplicación JavaFX.

Si editamos el fichero HolaMundoFX.java creado en el ejemplo anterior podremos observar el código que Netbeans ha generado automáticamente. Vamos a analizar dicho código para entender la estructura de una aplicación JavaFX.

public class HolaMundoFX extends Application {
    
    @Override
    public void start(Stage primaryStage) {
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() {
            
            @Override
            public void handle(ActionEvent event) {
                System.out.println("Hello World!");
            }
        });
        
        StackPane root = new StackPane();
        root.getChildren().add(btn);
        
        Scene scene = new Scene(root, 300, 250);
        
        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
  1. La clase creada herera de javax.application.Application. El método start() es el punto de entrada a cualquier aplicación JavaFX.
  2. La aplicación JavaFX define un contenedor para la aplicación que contiene un stage (recibido por parámetro en el método start) y un scene.
    • La clase Stage representa en JavaFX un contenedor de máximo nivel.
    • La clase Scene representa un contenedor donde incluimos todos los demás elementos de la ventana (botones, etiquetas, gráficos, etc).
  3. En las líneas del 20 a 23 se crea una escena con un determinado tamaño. Se añade un título al Stage, se le añade la escena creada y se hace visible.
  4. En JavaFX, el contenido de una escena es representado como una jerarquía de nodos gráficos. En el ejemplo, el nodo raíz es un objeto de tipo StackPane, el cual es un nodo contenedor redimensionable. Es decir, que modificará su tamaño automáticamente si es redimensionado el Stage.
  5. El nodo raiz contiene un nodo hijo, un botón con texto, con un manejador de eventos que imprime un mensaje cuando el botón es pulsado.
  6. El método main no es necesario para lanzar aplicaciones JavaFX. Sin embargo, es aconsejable utilizarlo e invocar desde él el método launch(). Eso permite por ejemplo, que aplicaciones Swing (necesitan el método main), pueden embeber código Java FX.