clase 01 - programacion javafx 2
TRANSCRIPT
PROGRAMACIÓN JAVAFX 2.0INTRODUCCIÓN
Claudio Carmona C.
Contenidos
RoadMap de JavaFX 2.0 Descarga de aplicaciones y APIs Introducción al lenguaje Creación de una Interfaz Simple de
Usuario
RoadMap de JavaFX 2.0
En 2005, Sun Microsystems adquiere la compañía SeeBeyond donde trabaja el ingeniero de software Chris Oliver creador de un lenguaje script rico en gráficos llamado F3 (Form Follows Function)
James Gosling (Sun) junto a Chris Oliver
RoadMap de JavaFX 2.0
import f3.ui.canvas.\*;
import f3.ui.\*; Canvas {
content: Rect { x: 20 y: 20 height: 80 width: 300 arcHeight: 20 arcWidth: 20 fill: cyan stroke: purple strokeWidth: 2
} }
Ejemplo F3
RoadMap de JavaFX 2.0
En JavaOne 2007 Sun presento F3 como JavaFX
El 20 de abril 2009 Oracle anuncia la compra de Sun
RoadMap de JavaFX 2.0
En JavaOne 2010 Oracle muestra el RoadMap de JavaFX que incluye el plan de Oracle para la fase de salida del lenguaje de script JavaFX y la re-creación de JavaFX para el lenguaje y la plataforma Java
JavaFX 2.0 SDK fue liberado en JavaOne el 3 de octubre de 2011
JavaFX SDK 1.3 fue liberado en abril de 2010, la versión 1.3.1 fue la última versión en ser liberada (Q.E.P.D.)
RoadMap de JavaFX 2.0
RoadMap de JavaFX 2.0
En JavaOne 2010 JavaFX 2.0 fue anunciado y los detalles son los siguientes:
JavaFX Script Language fue deprecado a favor de la API JavaFX 2.0 (Java, Groovy y JRuby)
Hacer las características atractivas de JavaFX Script Language como binding to expressions disponibles en la API JavaFX 2.0
Ofrecer un conjunto incrementado de componentes UI ricos a la API JavaFX 2.0
RoadMap de JavaFX 2.0
Proveer componentes Web para embeber HTML y JavaScript en aplicaciones JavaFX 2.0
Habilitar la interacción de JavaFX 2.0 con Swing
Reescribir la pila de multimedia desde la base
RoadMap de JavaFX 2.0
La arquitectura de JavaFX 2.0 consiste en: APIs públicas Scene Graph Quantum Toolkit Prism Glass Windowing Toolkit Media y Web Engines Java 2D/OpenGL/D3D JVM
RoadMap de JavaFX 2.0
RoadMap de JavaFX 2.0
RoadMap de JavaFX 2.0
El objetivo de JavaFX 2.0 es ser usado a través de muchos tipos de dispositivos; dispositivos móviles, Smartphones, TVs, Tablets y Desktops.
Requerimientos
JDK 7 + JavaFX 2 (x86)http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1637583.html
NetBeans 7http://netbeans.org/downloads/index.html
Documentaciónhttp://docs.oracle.com/javafx/
JavaFX 2.0 en NetBeans 7.2
JavaFX 2.0 en NetBeans 7.2
JavaFX 2.0 en NetBeans 7.2
Ciclo de vida JavaFX 2.0
El punto de entrada para las aplicaciones JavaFX 2.0 es la clase Application. En tiempo de ejecución JavaFX realiza en orden lo siguiente:
Construye una instancia de la aplicación especifica
Llama al método init() Llama al método
start(javafx.stage.Stage)
Ciclo de vida JavaFX 2.0
Espera que la aplicación finalice, lo que ocurre cuando se cierra la ventana o cuando la aplicación llama a Platform.exit()
Llama al método stop()
Notas: El método start es abstracto y debe ser
overridden Los métodos init() y stop() están
implementados
Elementos de la Interfaz Simple
La aplicación base de JavaFX 2.0 es Application:public abstract class Application extends java.lang.Object
Las aplicaciones deben extender a javafx.application.Application
http://docs.oracle.com/javafx/2/api/javafx/application/Application.html
Métodos de Application
Modificador y Tipo
Método Descripción
HostServices getHostServices() Obtiene los HostServices para la aplicación
Application.Parameters
getParameters() Recupera los parámetros para la aplicación
void init() Método de inicialización de la aplicación
static void launch(java.lang.Class<? extends Application> appClass, java.lang.String... args)
Lanza aplicación independiente (standalone)
static void launch(java.lang.String... args)
Lanza aplicación independiente (standalone)
void notifyPreloader(Preloader.PreloaderNotification info)
Notifica al precargador con una notificación generada en la aplicación
abstract void start(Stage primaryStage) Punto principal de entrada para todas las aplicaciones JavaFX
void stop() Método llamado cuando la aplicación debería detenerse. Provee un lugar conveniente para preparar la aplicación para salir y destruir los recursos asociados.
Método start()
JavaFX crea un Thread de aplicación para ejecutar el método start
La creación de los objetos Scene y Stage, así como la modificación de operaciones del gráfico de scene para los objetos que están «vivos« (todos los objetos vinculados a una scene) debe realizarse en el thread de aplicación JavaFX
El constructor de la aplicación y el método init son llamados en el launcher thread, no en el thread de aplicación JavaFX
Clase Stage
public class Stage extends Window La clase Stage es el nivel superior de JavaFX
en contenedores El stage primario es construido por la
plataforma Objetos stage adicionales pueden ser
construidos por la aplicación Los objetos stage deben ser construidos y
modificados en el thread de aplicación JavaFX
http://docs.oracle.com/javafx/2/api/javafx/stage/Stage.html
Clase Scene
@DefaultProperty(value="root") public class Scene extends java.lang.Object implements EventTarget La clase Scene es el contenedor para todo el
contenido de un gráfico scene El tamaño de scene debe ser inicializado por
la aplicación durante la construcción Los objetos scene deben ser construidos y
modificados en el thread de aplicación JavaFX
http://docs.oracle.com/javafx/2/api/javafx/scene/Scene.html
Clase StackPane
public class StackPane extends Pane StackPane ordena los nodos de acuerdo a
una pila, es decir, el primer nodo en entrar quedará abajo, mientras que el último en entrar quedará arriba
Para distribuir (layout) los nodos se puede usar el constraint alignment. Para cada constraint, stackpane provee un método estático para setear la posición del nodo.
http://docs.oracle.com/javafx/2/api/javafx/scene/layout/StackPane.html
Clase Button
public class Button extends ButtonBase Button es un control simple de botón El botón puede contener un texto y/o un
gráfico (imagen) Cuando un botón es presionado y liberado
un ActionEvent es enviado Los botones también pueden responder a
mouse events por la implementación de EventHandler para procesar MouseEvent
http://docs.oracle.com/javafx/2/api/javafx/scene/control/Button.html