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);
}
- La clase creada herera de
javax.application.Application. El métodostart()es el punto de entrada a cualquier aplicación JavaFX. - La aplicación JavaFX define un contenedor para la aplicación que contiene un
stage(recibido por parámetro en el métodostart) y unscene.- La clase
Stagerepresenta en JavaFX un contenedor de máximo nivel. - La clase
Scenerepresenta un contenedor donde incluimos todos los demás elementos de la ventana (botones, etiquetas, gráficos, etc).
- La clase
- 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. - 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 elStage. - 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.
- El método
mainno es necesario para lanzar aplicaciones JavaFX. Sin embargo, es aconsejable utilizarlo e invocar desde él el métodolaunch(). Eso permite por ejemplo, que aplicaciones Swing (necesitan el métodomain), pueden embeber código Java FX.