Qué es JavaFX

23
 d¿Qué es JavaFX? La plataforma JavaFX es la evolución de la plataforma del cliente Java diseñada para permitir a los desarrolladores de aplicaciones para crear y desplegar aplicacio nes ricas de Internet (RIAs) que se comportan de forma consistente en múltiples plataformas. Construido sobre la tecnología Java, la plataforma JavaFX proporciona un rico conjunto de gráficos y medios de comunicación de la API de alto rendimiento con aceleración por hardware de gráficos y los motores de los medios de comunicación que simplifican el desarrollo de aplicaciones basadas en datos de la empresa cliente. Invertir en la plataforma JavaFX proporciona las siguientes ventajas para los desarrolladores de Java y las empresas que forman parte del ecosistema de Java: * Dado que la plataforma JavaFX está escrito en Java, los desarrolladores de Java pueden aprovechar sus habilidades existentes y las herramientas para desarrollar aplicaciones  JavaFX. * Debido a que Java es ampliamente utilizada, es fácil encontrar desarrolladores Java con experiencia que puede convertirse rápidamente en la creación de aplicaciones JavaFX productiva. * Mediante el uso de un conjunto homogéneo de tecnologías Java para el servidor y las plataformas de cliente, la plataforma JavaFX reduce el riesgo de la inversión mediante la reducción de la complejidad de las soluciones de negocio. * Los costos de desarrollo también se han reducido debido a las ventajas antes mencionadas. * La plataforma JavaFX proporciona a los desarrolladores un marco de desarrollo y entorno de ejecución para crear aplicaciones empresariales y de negocios que se ejecutan en múltiples plataformas que soportan Java. Ver la arquitectura de JavaFX y el documento marco para conocer la arquitectura de la plataforma JavaFX y conceptos clave. Una breve historia de JavaFX En la conferencia de JavaOne 2007, Sun Microsystems introdujo la plataforma JavaFX para ayudar a los desarrolladores de contenido y desarrolladores de aplicaciones crear aplicaciones ricas en contenido para dispositivos móviles, escritorios, televisores y otros dispositivos de consumo. La oferta inicial consistía en la plataforma JavaFX Mobile y el lenguaje JavaFX Script. Varios comunicados públicos fueron entregados después del anuncio inicial, la versión 1.3 fue lanzada el 22 de abril de 2010. Después de la adquisición de Oracle de Sun Microsystems, Oracle ha anunciado durante la conferencia JavaOne 2010 que el apoyo al lenguaje JavaFX Script se suspendería. Sin embargo, también se anunció que la API de JavaFX Script será portado a Java y sería lanzado como parte del producto de JavaFX 2.0. Este anuncio significa que las capacidades JavaFX estará disponible para todos los desarrolladores de Java, sin necesidad de aprender un lenguaje de programación nuevo. Con este anuncio, Oracle se ha comprometido a JavaFX el medio ambiente principal para las aplicaciones de cliente enriquecido.

Transcript of Qué es JavaFX

Page 1: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 1/23

 

d¿Qué es JavaFX?

La plataforma JavaFX es la evolución de la plataforma del cliente Java diseñada para permitia los desarrolladores de aplicaciones para crear y desplegar aplicaciones ricas de Internet(RIAs) que se comportan de forma consistente en múltiples plataformas. Construido sobre latecnología Java, la plataforma JavaFX proporciona un rico conjunto de gráficos y medios decomunicación de la API de alto rendimiento con aceleración por hardware de gráficos y losmotores de los medios de comunicación que simplifican el desarrollo de aplicaciones basadaen datos de la empresa cliente.

Invertir en la plataforma JavaFX proporciona las siguientes ventajas para los desarrolladoresde Java y las empresas que forman parte del ecosistema de Java:

*

Dado que la plataforma JavaFX está escrito en Java, los desarrolladores de Java puedenaprovechar sus habilidades existentes y las herramientas para desarrollar aplicaciones

 JavaFX.*

Debido a que Java es ampliamente utilizada, es fácil encontrar desarrolladores Java con

experiencia que puede convertirse rápidamente en la creación de aplicaciones JavaFXproductiva.

*

Mediante el uso de un conjunto homogéneo de tecnologías Java para el servidor y lasplataformas de cliente, la plataforma JavaFX reduce el riesgo de la inversión mediante lareducción de la complejidad de las soluciones de negocio.

*

Los costos de desarrollo también se han reducido debido a las ventajas antesmencionadas.

*

La plataforma JavaFX proporciona a los desarrolladores un marco de desarrollo y entornode ejecución para crear aplicaciones empresariales y de negocios que se ejecutan enmúltiples plataformas que soportan Java.

Ver la arquitectura de JavaFX y el documento marco para conocer la arquitectura de laplataforma JavaFX y conceptos clave.Una breve historia de JavaFX

En la conferencia de JavaOne 2007, Sun Microsystems introdujo la plataforma JavaFX paraayudar a los desarrolladores de contenido y desarrolladores de aplicaciones crear aplicacionricas en contenido para dispositivos móviles, escritorios, televisores y otros dispositivos de

consumo. La oferta inicial consistía en la plataforma JavaFX Mobile y el lenguaje JavaFX ScripVarios comunicados públicos fueron entregados después del anuncio inicial, la versión 1.3 fulanzada el 22 de abril de 2010.

Después de la adquisición de Oracle de Sun Microsystems, Oracle ha anunciado durante laconferencia JavaOne 2010 que el apoyo al lenguaje JavaFX Script se suspendería. Sinembargo, también se anunció que la API de JavaFX Script será portado a Java y sería lanzadocomo parte del producto de JavaFX 2.0. Este anuncio significa que las capacidades JavaFXestará disponible para todos los desarrolladores de Java, sin necesidad de aprender unlenguaje de programación nuevo. Con este anuncio, Oracle se ha comprometido a JavaFX elmedio ambiente principal para las aplicaciones de cliente enriquecido.

Page 2: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 2/23

 

¿Qué hay de nuevo en JavaFX 2.0?

Las áreas de enfoque principal para el lanzamiento de JavaFX 2.0 incluye las siguientescaracterísticas, muchas de las cuales se describen también en la arquitectura de JavaFX y edocumento marco:

*

Java API para JavaFX que proporcionan todas las características del lenguaje familiar

(como los genéricos, anotaciones y múltiples hilos) que los desarrolladores de Java estánacostumbrados a usar. El API se han diseñado para ser amigable con alternativas de idiomas

 JVM, como JRuby y Scala. Debido a las capacidades JavaFX están disponibles a través de lasAPI de Java, se puede seguir utilizando sus herramientas favoritas de desarrolladores Java(como IDEs, refactorización de código, depuradores y analizadores) para desarrollaraplicaciones JavaFX.

*

Un nuevo motor gráfico para manejar las modernas unidades de procesamiento gráfico(GPU). La base de este nuevo motor es una aceleración por hardware pipeline de gráficos,llamado Prism, que se combina con un conjunto de herramientas de ventanas, llamado GlasEste motor gráfico es la base de los avances actuales y futuros para hacer gráficos ricos

simple, suave y rápido.*

FXML, un nuevo lenguaje de marcado declarativo que está basado en XML y se utiliza padefinir la interfaz de usuario en una aplicación de JavaFX. No es un lenguaje compilado y, potanto, no requiere volver a compilar el código cada vez que haga algún cambio en el diseño

*

Un nuevo motor de los medios de comunicación que soporta la reproducción de contenidweb multimedia. Proporciona una estable, de baja latencia marco de los medios decomunicación que se basa en el marco de GStreamer multimedia.

*

Uno de los componentes web que da la capacidad de incorporación de las páginas web euna aplicación JavaFX utilizando la tecnología de renderizado WebKit HTML. Representaciónde aceleración por hardware está disponible usando Prism.

*

Un navegador actualizado plug-in para JavaFX 2.0, que permite la carga de los applets JavaFX basadas en Prism.

*

Una amplia variedad de controles integrados de interfaz de usuario, que incluyen gráficotablas, menús y paneles. Además, una API se proporciona para permitir a terceros que

contribuyan controles de interfaz de usuario que la comunidad de usuarios puede utilizar.*

Aplicaciones de ejemplo que muestran las diferentes características de la tecnología JavaFX 2.0, junto con un gran número de ejemplos de código y fragmentos.

*

Un doclet actualizada utilizada con la herramienta Javadoc para generar documentaciónde la API de JavaFX en formato HTML. Información detallada sobre cómo utilizar este docletactualizada se puede encontrar en uso de un Doclet con JavaFX.

Page 3: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 3/23

 

¿Qué puedo crear con JavaFX?

La Tabla 1 muestra las imágenes en miniatura de algunos de los ejemplos de aplicaciones JavaFX que se incluyen con el lanzamiento de JavaFX 2.0. Haga clic en cada miniatura paraver una imagen más grande de la aplicación.

Para ejecutar estas y otras aplicaciones de ejemplo, vaya ahttp://www.oracle.com/technetwork/java/javafx/downloads/index.html. Descargue el archivozip que contiene las muestras de JavaFX 2.0 y extraer los archivos. El directorio de JavaFX,

muestras-2.0 \ created.Samples se encuentran en el directorio JavaFX-muestras-2.0 \. Sepuede ejecutar una muestra haciendo doble clic en uno de sus archivos ejecutables. Porejemplo, para ejecutar la aplicación Ensemble, haga doble clic en el archivo Ensemble.jar.Proyectos de NetBeans para las muestras se encuentran en el directorio de JavaFX, muestra2.0 \ src. Asegúrese de consultar al Sistema de JavaFX documento de Requisitos para laversión con soporte de NetBeans IDE que usted necesita para ejecutar estos proyectosNetBeans para las muestras.

Page 4: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 4/23

 

Primeros pasos con JavaFX

Si desea utilizar JavaFX para desarrollar rápidamente aplicaciones con una experiencia de usuario, entonces esta

introducción es para usted. Va a crear una simple aplicación en la Figura 1 y aprender lo fácil que es obtener

efectos gráficos complejos con la codificación de muy poco. Por supuesto, JavaFX es más que formas animadas

muy justo. Después de haber completado este tutorial, mira las muestras de JavaFX para una amplia gama de

aplicaciones que se pueden construir con JavaFX.

Figura 1 Aplicación círculos de colores

Descripción de la "Figura 1 Aplicación círculos de colores"

Es más fácil entender el código de la aplicación, si usted está familiarizado con el modelo de programación gráfic

escena de JavaFX. El escenario es el contenedor de alto nivel para la aplicación, y la escena es la superficie de

dibujo de los contenidos de la aplicación. El contenido está estructurado como un gráfico de la escena, que es un

árbol jerárquico de nodos.

La Figura 2 muestra el escenario gráfico para la ColorfulCircles aplicación. Los nodos que son las instancias d

poder del grupo de clase, y los nodos nonbranching, también conocido como nodos de la hoja, son instancias

del rectángulo y círculo de clases.

Figura 2 Gráfico de colores Escena Círculos

Page 5: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 5/23

 

Descripción de la "Figura 2 Gráfico de colores Escena Circles"

Configuración de la aplicación

Usted puede construir una aplicación JavaFX utilizando cualquier herramienta de desarrollo diseñado para crear

una aplicación Java. La herramienta que se utiliza en este tutorial de introducción ha sido el IDE NetBeans. Ante

de empezar, asegúrese de que la versión de NetBeans IDE que está utilizando admite JavaFX 2.0. Ver el Requis

del sistema para más detalles.

Configure su proyecto JavaFX en NetBeans IDE de la siguiente manera.

1. Desde el archivo de menú, seleccione Nuevo proyecto .

2. En la categoría de aplicaciones JavaFX, seleccione la aplicación JavaFX . Haga clic enSiguiente .

3. Nombre del proyecto ColorfulCircles y haga clic en Finalizar .

4. Abra el ColorfulCircles.java archivos, copia de las declaraciones de importación, y pegarlos en su proyect

reemplazando las declaraciones de importación que genera el IDE NetBeans.

O bien, puede generar las declaraciones de importación como usted trabaja su manera a través del tuto

utilizando la función de autocompletado de código o comandos Fix Imports en NetBeans IDE. Cuando ha

una selección de declaraciones de importación, elegir la que se inicia con JavaFX .

Crear los fundamentos de aplicaciones

Eliminar la clase ColorfulCircles que el IDE NetBeans genera y sustituirlo por el código en el ejemplo 1 . Este es

código mínimo necesario para ejecutar una aplicación JavaFX.

 

Ejemplo 1 de aplicación básica

ColorfulCircles público de clase se extiende la aplicación {

Page 6: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 6/23

 

 

public static void main (String [] args) {

lanzamiento (args);

}

 

@ Override

public void start (primaryStage escenario) {

 

primaryStage.show ();

}

}

La clase ColorfulCircles se extiende la aplicación de clase e incluye dos métodos. El primer método es el main

() método, que llama al lanzamiento () método. Como práctica recomendada de JavaFX, el lanzamiento de

() es el método sólo se llama en el main ()método.

A continuación, el ColorfulCircles clase tiene prioridad sobre el resumen start () en el método de

aplicación de clase. El start () método toma como argumento la primera etapa de la aplicación. La última lín

de código hace que el escenario visible.

Usted puede compilar y ejecutar la aplicación ColorfulCircles ahora, y en cada paso del tutorial, para ver los

resultados intermedios. Si llegas a tener problemas, echar un vistazo a el código de la ColorfulCircles.java archiv

Agregue la escena

Ahora bien, establecer una escena en el escenario mediante la adición de las tres líneas en negrita en el ejemplo

2 . Dos mejores prácticas se muestra en este código de crear un nodo de grupo como un nodo raíz de la escena

ajustar el ancho y alto de la escena, en este caso 800 por 600.

Añadir la escena y todo su contenido antes de que el primaryStage.show () de línea. Esta es otra de buenas

prácticas JavaFX.

Ejemplo 2 Escena

@ Override

public void start (primarystage escenario) {

  Raíz del grupo = new Grupo ();

escena Escena = Escena nueva (raíz, 800, 600, Color.black);

 primaryStage.setScene (escena);

primaryStage.show ()

Si ha ejecutado la aplicación en este punto, usted podría ver una escena completamente negro.

Agregar gráficos

A continuación, crear 30 círculos, agregue el código en el ejemplo 3 antes de laprimaryStage.show () de línea.

Ejemplo 3 30 Círculos

Círculos grupo = new Grupo ();

for (int i = 0; i <30; i + +) {

Círculo círculo = new Circle (150, Color.web ("blanco", 0,05));

Page 7: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 7/23

 

circle.setStrokeType (StrokeType.OUTSIDE);

circle.setStroke (Color.web ("blanco", 0,16));

circle.setStrokeWidth (4);

. circles.getChildren () suma (círculo);

}

. root.getChildren () para sumar (círculos);

Este código crea un grupo llamado los círculos , y luego utiliza una de bucle para añadir 30 círculos con elgrupo. Cada círculo tiene un radio de 150 , color de relleno de color blanco , y el nivel de opacidad del 5 por

ciento, lo que significa que es casi transparente.

Para crear un borde alrededor de los círculos, el código incluye la StrokeType clase. Un tipo de trazo

de EXTERIOR se entiende el límite del círculo se extiende fuera del interior de laStrokeWidth valor, que es 4 . El

color de la carrera es blanco , y el nivel de opacidad es 16 por ciento, por lo que es más brillante que el color de

los círculos.

La última línea añade el círculos de grupo para el nodo raíz. Esta es una estructura temporal.Más tarde,

modificará este gráfico de la escena para que coincida con la que se muestra en la Figura 2 .

La figura 3 muestra la aplicación. Dado que el código no ha especificado todavía un lugar único para cada círculo

el círculo se dibujan en la parte superior de uno al otro, con la parte superior izquierdo de la ventana como el

punto central de los círculos. La opacidad de los círculos superpuestos interactúa con el fondo negro, produciend

el color gris de los círculos.

Figura 3 Circles

Descripción de la "Figura 3 Circles"

Añadir un efecto visual

Continuar aplicando un efecto de desenfoque a la caja de los círculos para que se vean fuera de foco. El código

está en el ejemplo 4 . Añadir este código antes de la primaryStage.show ()de línea.

Ejemplo 4 Efecto Desenfoque de cuadro

circles.setEffect (nuevo BoxBlur (10, 10, 3));

Page 8: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 8/23

 

Este código establece el radio de desenfoque de 10 píxeles de ancho por 10 píxeles de alto, y la iteración de

desenfoque a 3, por lo que es aproximadamente un desenfoque gaussiano.Esta técnica de desenfoque produce

efecto suavizante en el borde de los círculos, como se muestra en la Figura 4 .

Figura 4 Desenfoque de cuadro en círculos

Descripción del "Desenfoque de cuadro la Figura 4 en círculos"

Crear un degradado de fondo

A continuación, cree un rectángulo y lo rellenamos con un gradiente lineal, como se muestra enel ejemplo 5 .

Agregue el código antes de la root.getChildren (). añadir (círculos) la línea de forma que el rectángulo

degradado aparece detrás de los círculos.

 

Ejemplo 5 degradado lineal 

Colores rectángulo = new Rectangle (scene.getWidth (), scene.getHeight (),

nueva linearGradient (0f, 1f, 1f, 0f, cierto, CycleMethod.NO_CYCLE, nuevo

Stop [] {

nueva parada (0, Color.web ("# f8bd55")),

nueva parada (0,14, Color.web ("# c0fe56")),

nueva parada (0,28, Color.web ("# 5dfbc1")),

nueva parada (0,43, Color.web ("# 64c2f8")),

nueva parada (0,57, Color.web ("# be4af7")),

nueva parada (0,71, Color.web ("# ed5fc2")),

nueva parada (0,85, Color.web ("# ef504c")),

nueva parada (1, Color.web ("# f2660f ")),}));

. root.getChildren () para sumar (colores);

Este código crea un rectángulo llamado colores . El rectángulo es la misma anchura y altura que la escena y se

llena con un gradiente lineal que comienza en la parte inferior izquierda esquina (0, 1) y termina en la parte

superior derecha de la esquina (1, 0). El valor de la verdad, la pendiente es proporcional a la del rectángulo,

y NO_CYCLE indica que el ciclo de color no se repetirá. El Stop [] secuencia indica que el gradiente de color deb

estar en un lugar determinado. La última línea de código añade el color rectángulo para el nodo raíz.

Los círculos grises con bordes borrosos aparecen ahora en la parte superior de un arco iris de colores, como se

muestra en la Figura 5 .

Page 9: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 9/23

 

Figura 5 degradado lineal 

Descripción de la "Figura 5 degradado lineal"

La figura 6 muestra el gráfico de la escena intermedia. En este punto, los círculos de grupos

ycolores rectángulo son hijos del nodo raíz.

Figura 6 Intermedio Escenario Gráfico

Descripción de la "Figura 6 Escenario Gráfico Intermedio"

Aplicar un modo de fusión

Ahora agregue color a los círculos y oscurecer la escena mediante la adición de un efecto de mezcla de

superposición. Esta tarea requiere un poco de limpieza. Va a borrar el círculo y el rectángulo grupo gradiente

lineal del gráfico de la escena y añadir al grupo de superposición nueva mezcla.

1. Eliminar las dos líneas siguientes de código:

. root.getChildren () para sumar (colores);

. root.getChildren () para sumar (círculos);

2. Agregue el código en el ejemplo 6 , donde ha quitado las dos líneas.

 

Ejemplo 6 modos de mezcla

Grupo blendModeGroup =

Page 10: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 10/23

 

Grupo nuevo (nuevo grupo (new Rectangle (scene.getWidth (), scene.getHeight

(),

, Color.black) los círculos), los colores);

colors.setBlendMode (BlendMode.OVERLAY);

. root.getChildren () para sumar (blendModeGroup);

El grupo blendModeGroup establece la estructura de la mezcla de superposición. El grupo está formado p

dos niños. El primer hijo es un nuevo (sin nombre) Grupo que contiene un nuevo (sin nombre) y el

rectángulo negro creado previamente círculos grupo. El segundo hijo es la creada

anteriormente colores rectángulo.

El setBlendMode () método se aplica la mezcla a la superposición de colores rectángulo.La última línea

código añade el blendModeGroup al escenario gráfico como un hijo del nodo raíz, como se muestra en la

Figura 2 .

Mezclas de superposición son efectos comunes en las aplicaciones de diseño gráfico. Pueden oscurecer una imag

o añadir destaca o ambos, dependiendo de los colores en la mezcla. En este caso, el rectángulo degradado linea

se utiliza como recubrimiento. El rectángulo negro sirve para mantener el fondo oscuro, mientras que los círculo

casi transparente recoger los colores del degradado, pero se oscurecen también.

La figura 7 muestra los resultados. Usted verá el efecto completo de la mezcla de recubrimiento cuando se anim

los círculos en el siguiente paso.

Figura 7 superposición de mezcla

Descripción de la "mezcla de superposición Figura 7"

Añadir animación

El paso final es el uso de animaciones JavaFX para mover los círculos:

1. Si usted no ha hecho, agregue java.lang.Math.random importación estática, a la lista de

declaraciones de importación.

2. Agregue el código de la animación en el ejemplo 7 antes de la primaryStage.show () de línea.

Ejemplo 7 Animation

Page 11: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 11/23

 

Cronología Cronología Cronología = new ();

de (Nodo círculo: circles.getChildren ()) {

timeline.getKeyFrames (). AddAll (

nuevo fotograma clave (Duration.ZERO, / start / establecer la posición

0

nueva KeyValue (circle.translateXProperty (), random () * 800),

nueva KeyValue (circle.translateYProperty (), random () * 600)

),

nuevo fotograma clave (Duración nuevo (40000), al final / / establecer

posición en 40 años

nueva KeyValue (circle.translateXProperty (), random () * 800),

nueva KeyValue (circle.translateYProperty (), random () * 600)

)

);

}

/ / Juego 40 de la animación

timeline.play ();

La animación es impulsado por una línea de tiempo, por lo que este código se crea una línea de tiempo,

luego utiliza una de bucle para añadir dos fotogramas clave para cada uno de los 30 círculos. El primer

fotograma clave en 0 segundos utiliza eltranslateXProperty y translateYProperty propiedades para

establecer una posición aleatoria dentro de la ventana. El segundo cuadro clave en 40 segundos hace lo

mismo.Así, cuando la línea de tiempo se juega, se anima a todos los círculos de una posición al azar a o

durante un período de 40 segundos.

La figura 8 muestra los 30 círculos de colores en movimiento, que completa la solicitud. Para el código fuente

completo, vea el ColorfulCircles.java archivo.

Figura 8 círculos animados

Descripción de la "Figura 8 círculos animados"

Implementar la aplicación

Page 12: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 12/23

 

Cuando se ejecuta la aplicación en el IDE NetBeans o utilizar el comando limpiar y construir, su aplicación está

empaquetada para todos los tipos de JavaFX de despliegue, con las opciones que se configuran como las

propiedades del proyecto. Vaya al directorio dist del directorio de su proyecto ColorfulCircles y haga doble clic en

cada uno de los tres archivos siguientes:

• ColorfulCircles.jar ejecuta la aplicación en modo autónomo.

• ColorfulCircles.jnlp ejecuta la aplicación en modo Web Start.

ColorfulCircles.html abre una página web que contiene un enlace Web Start y ejecuta la aplicación en elnavegador.

Para obtener más información acerca de la implementación, vea Implementar aplicaciones JavaFX .

Revisión

He aquí un resumen de la información presentada en este artículo acerca de las aplicaciones JavaFX:

• La clase principal se extiende la aplicación de clase.

• La clase principal anula el start () en el método de aplicación de clase.

• El start () método toma como argumento la primera etapa de la aplicación.

• El principal () llama al método de lanzamiento () método en la aplicación de clase.Una mejor

práctica es hacer que este método, el único método que el main () llama al método.

• La escena se agrega como un nodo raíz, que puede ser un nodo de grupo, como se muestra en este

tutorial, o cualquier otro nodo padre, como un panel de diseño.

• Una buena práctica consiste en establecer la altura y la anchura de la escena cuando lo cree, de lo

contrario los valores predeterminados de escena con el tamaño mínimo necesario para mostrar su

contenido.

• La sintaxis para agregar hijos al nodo raíz tiene esta forma: root.getChildren () para sumar

(círculos).

• El show () línea hace que el contenido de la fase visible. Como una buena práctica, este código debe se

última línea en el start () método.

• JavaFX ofrece intrincados efectos gráficos, como manchas, rellenos degradados, las mezclas, y la

animación.

A dónde ir desde aquí

Ahora que está familiarizado con JavaFX, aquí están algunas sugerencias sobre qué hacer a continuación:

• Pruebe las muestras de JavaFX, que se puede descargar

desdehttp://www.oracle.com/technetwork/java/javafx/downloads/index.htm . Especialmente echa

un vistazo a la aplicación de Ensemble, que proporciona las mejores prácticas para la creación de

aplicaciones JavaFX.

• Lea la documentación JavaFX en http://docs.oracle.com/javafx/ . Usted encontrará documentos sob

todo lo tratado en este tutorial, incluyendo detalles sobre el grafo de escena, efectos visuales y animació

Page 13: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 13/23

 

Introducción a FXML

FXML es nuevo para JavaFX 2.0, y usted podría preguntar: "¿Qué es FXML?" y "¿Es FXML para mí?" FXML es un

lenguaje basado en XML para la definición de marcado declarativo de la interfaz de usuario en una aplicación de

JavaFX. FXML es muy adecuado para la definición de diseño estático, como formularios, controles, y las

tablas. Con FXML, también se puede construir diseños de forma dinámica mediante la inclusión de un script.

Una de las ventajas de FXML es que se basa en XML y es familiar a la mayoría de los desarrolladores,

desarrolladores web y desarrolladores de todo el uso de otras plataformas RIA. Otra ventaja es que FXML no es u

lenguaje compilado, no es necesario volver a compilar el código para ver los cambios realizados. Una tercera

ventaja es que FXML hace que sea fácil ver la estructura de un escenario gráfico de la aplicación. Esto, a su vez,

hace que sea más fácil para colaborar en las interfaces de usuario entre los miembros de su equipo de desarroll

Para comparar JavaFX y FXML, vistazo a la interfaz de usuario en la Figura 1 . El gráfico de la escena que hace q

esta aplicación incluye un diseño de panel de la frontera con la parte superior y la región centro, donde cada uno

contiene una etiqueta.

Figura 1 Ejemplo de panel de borde simple

Descripción de la "Figura 1 Ejemplo de panel de borde simple"

Ejemplo 1 muestra el código JavaFX para la escena grafica en la figura 1 .

 

Ejemplo 1 JavaFX Escenario Gráfico

Frontera BorderPane = new BorderPane ();

Toppanetext etiqueta = new Label ("Título de la página");

border.setTop (toppanetext);

Centerpanetext etiqueta = new Label ("Algunos datos aquí");

border.setCenter (centerpanetext);

Ejemplo 2 muestra el mismo gráfico de escena como el ejemplo 1 , pero en FXML.

Ejemplo 2 FXML Escenario Gráfico

<BorderPane>

<top>

<label Text="Page Title"/>

</ Top>

<center>

<label Text="Some datos here"/>

</ Center>

</ BorderPane>

Page 14: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 14/23

 

La mejor manera de mostrar las ventajas de FXML es con un ejemplo. Este tutorial describe cómo crear la interf

de usuario de inicio de sesión se muestra en la Figura 2 .

Figura 2 Ingresar la interfaz de usuario

Descripción de la "Figura 2 Interfaz de usuario de inicio de sesión"

Antes de comenzar, a familiarizarse con el diseño de la interfaz de usuario de inicio de sesión, se muestra en

la Figura 3 . La interfaz de usuario utiliza un diseño de panel de la frontera que contiene dos regiones. La región

superior contiene un diseño panel de pila con el texto Ejemplo de etiqueta , que se superpone una imagen. La

región central incluye un diseño de panel de cuadrícula con una etiqueta, el campo de texto, el campo de

contraseña, y el botón.

Figura 3 Diseño de la interfaz de usuario Inicio de sesión

Descripción de la "Figura 3 Estructura de la interfaz de usuario Inicio de sesión"

Para crear la interfaz de usuario de inicio de sesión, se realizarán las siguientes tareas:

• Prepárese para este tutorial 

Page 15: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 15/23

 

• Configurar el proyecto

• Configuración de los conceptos básicos de aplicación

• Creación del archivo de propiedades

• Creación del archivo de FXML

• Definir un diseño de panel de la frontera

• Pila de texto sobre una imagen

• Agregar una cuadrícula de diseño y controles

• Añadir un evento de botón

• Use un lenguaje de scripting

• Use una hoja de estilo

Prepárese para este tutorial

Este tutorial usa el IDE NetBeans. Asegúrese de que la versión de NetBeans IDE que está utilizando admite Java

2.0. Ver el Requisitos del sistema para más detalles.

Para completar este tutorial, debe estar familiarizado con la forma de crear una interfaz de usuario mediante

programación con JavaFX. El conocimiento de cómo trabajar con un escenario gráfico es especialmente útil debi

a que la estructura jerárquica de FXML sigue de cerca la estructura del escenario gráfico JavaFX.

Configurar el proyecto

El primer paso es la creación de un proyecto JavaFX en NetBeans IDE.

1. Desde el archivo de menú, seleccione Nuevo proyecto .

2. En el JavaFX categoría de la aplicación, seleccione Aplicación FXML JavaFX . Haga clic en Siguiente

3. El nombre de la FXMLExample proyecto y haga clic en Finalizar . NetBeans IDE se abre un proyecto con

tres archivos: FXMLExample.java, Sample.fxml y Sample.java.

4. Descargue la imagen de la luz azul de la pendiente para el fondo al hacer clic derecho en este

enlace fx_boxback.jpg y guardarla en su escritorio. A continuación, arrastrarlo desde el escritorio a la

carpeta en el directorio fxmlexample Source Packages.

Configuración de los conceptos básicos de aplicación

Cada solicitud debe incluir FXML algún código JavaFX. Como mínimo, este es el código para crear el escenario y

escena y para iniciar la aplicación.

Abra el archivo FXMLExample.java , elimine el código que genera el IDE NetBeans, y sustituirlo por el código en

ejemplo 3 .

 

Ejemplo 3 FXMLExample.java

paquete fxmlexample;

 

importación java.util.ResourceBundle;

importación javafx.application.Application;

importación javafx.fxml.FXMLLoader;

Page 16: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 16/23

 

importación javafx.scene.Parent;

importación javafx.scene.Scene;

importación javafx.stage.Stage;

 

pública FXMLExample clase extiende la aplicación {

@ Override

public void start (etapa Etapa) throws Exception {

stage.setTitle ("Ejemplo FXML");

 

Raíz primaria = FXMLLoader.load (getClass (). GetResource

("fxml_example.fxml"),

ResourceBundle.getBundle ("fxmlexample.fxml_example"));

Escena = Escena nueva (raíz, 226, 264);

stage.setScene (escena);

stage.show ();

}

 

public static void main (String [] args) {

lanzamiento (args);

}

}

Como programador de JavaFX, el código para crear la escena y el escenario y lanzar la aplicación debe ser famil

para usted. Sin embargo, esta línea es específica para FXML:

Raíz primaria = FXMLLoader.load (. GetClass () getResource ("fxml_example.fxml"),

ResourceBundle.getBundle ("fxmlexample.fxml_example"));

El FXMLLoader.load () método carga la jerarquía de objetos de la fxml_example.fxml archivo de recursos y se

asigna a la variable llamada raíz . El getResources argumento añade un paquete de recursos que externaliza la

cadenas de la interfaz de usuario, lo que facilita tareas como la localización. En las dos secciones siguientes, se

realizará una copia del paquete de recursos con un archivo de propiedades y crear el archivo de origen FXML.

En general, un objeto de la escena se ha creado, con la raíz del conjunto de variables como la raíz del grafo de

escena. El elemento raíz en el marcado FXML se convierte en la raíz del escenario gráfico.

Creación del archivo de propiedades

Una práctica recomendada es de externalizar cadenas de texto para la interfaz de usuario en un archivo de

propiedades. Siga estos pasos para crear un archivo de propiedades de la interfaz de usuario de inicio de sesión

1. En la ventana de Proyectos, haga clic en la carpeta en el directorio fxmlexample Source Packages y

seleccione Nuevo , y luego otros .

2. En el cuadro de diálogo Nuevo archivo, haga clic en Otros , y luego Propiedades del archivo , a

continuación, en Siguiente .

3. Introduzca fxml_example como el nombre del archivo y haga clic en Finalizar . El IDE abre un archivo c

la extensión. Propiedades.

Page 17: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 17/23

 

4. Escriba los nombres de los recursos y sus valores, como se muestra en el ejemplo 4 .

 

Ejemplo 4 Los nombres de recursos en fxml_example.properties

loginExample = Login Ejemplo

signIn = Firma en:

userName = Nombre de Usuario:

password = Contraseña:

submit = Enviar

Creación del archivo de FXML

Ahora cree un archivo llamado FXML fxml_example.fxml e insertar la declaración XML y las declaraciones de

importación.

1. En la ventana de Proyectos, haga clic en la carpeta Sample.fxml fxmlexample y seleccioneCambiar

nombre .

2. Introduzca fxml_example archivo y haga clic en Aceptar .

3. Abra el archivo fxml_example, elimine el código generado por el IDE NetBeans, y sustituirlo por el códig

en el ejemplo 5 .

Ejemplo 5 Instrucciones de declaración y de importación

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

<? Javafx.scene.layout importación .*>

<? Javafx.scene.control importación .*>

<? Javafx.scene importación .*>

<? Javafx.scene.image importación .*>

Todos los archivos FXML debe comenzar con una declaración XML. Se define la versión de XML (1,0) y el

tipo de codificación (UTF-8).

Al igual que en JavaFX, los nombres de clase puede ser completo (incluyendo el nombre del paquete), o

pueden ser importados con la declaración de importación, como se muestra en el ejemplo 5 . Si lo prefie

puede utilizar las declaraciones de importación específicos que se refieren a las clases.

Definir un diseño de panel de la frontera

A continuación, empezar a construir la interfaz de usuario. Después de las declaraciones de importación, inserte

diseño de panel de la frontera se muestra en el ejemplo 6 .

Ejemplo 6 Layout Panel de Frontera

<BorderPane fx: controller = "fxmlexample.FXMLExampleController"

xmlns: fx = "http://javafx.com/fxml">

<top>

</ Top>

<center>

</ Center>

Page 18: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 18/23

 

</ BorderPane>

En este ejemplo, la raíz del grafo de escena es el BorderPane clase de diseño, que se define con dos regiones,

superior y central.

La fx: controlador de atributo identifica un archivo de controlador, que debe ser declarado en el elemento FX

raíz. Usted aprenderá más sobre el controlador más adelante en el tutorial.

El xmlns: fx = "http://javafx.com/fxml" mapas de atributos del espacio de nombres a la

URLhttp://javafx.com/fxml

. Usted debe declarar el espacio de nombres en el elemento FXML raíz. Este atribu

le permite utilizar etiquetas FXML que corresponden a los elementos de la API de JavaFX.

Pila de texto sobre una imagen

Ahora, el nido de un panel de pila en la región superior del diseño del panel de la frontera. El panel de pila

contiene una etiqueta de superposición de una imagen, como se muestra en la Figura 4 .

Figura 4 Región Fronteriza parte superior del panel, incluyendo panel de la pila

Descripción de la "Figura 4 Región Fronteriza parte superior del panel, incluyendo panel de pila"

El código para el panel de la pila se encuentra en el ejemplo 7 . Inserte el código entre las<top> y </

top> etiquetas.

Ejemplo 7 pila de texto sobre una imagen

<StackPane>

<children>

<ImageView><image>

<imagen Url="@fx_boxback.jpg"/>

</ Image>

</ ImageView>

<label Text="%loginExample" style="-fx-font: NORMAL 20 Tahoma;"/>

</ Hijos>

</ StackPane>

El StackPane disposición lugares sus nodos secundarios dentro de una sola pila, con cada nuevo nodo añadido e

la parte superior del nodo anterior. Este modelo de diseño proporciona una manera fácil de superposición de tex

en una imagen.

El <children> etiqueta agrega nodos secundarios al escenario gráfico, que es similar al uso de la GetChildren

(). add () método de JavaFX.

La imagen de clase carga el archivo fx_boxback.jpg, que se supone que se encuentra en una ruta relativa al

archivo de FXML actual. El ImageView clase muestra la imagen en pantalla.

Page 19: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 19/23

 

La etiqueta de clase tiene una propiedad de texto que figura en el nombre del recursologinExample . En FXML

un nombre de recurso es identificado por el operador%. Durante la carga, el cargador de FXML sustituye a

la loginExample nombre de recurso por su valor, Ejemplo Login.

Tenga en cuenta que FXML define estilos similares a los estilos CSS se definen en el setStyle () método en

código JavaFX. En el ejemplo 7 , la etiqueta de clase utiliza el estilo de etiqueta para definir el peso de la

fuente a la normalidad, la tipografía Tahoma, y el tamaño de letra de 20 puntos.

Otra forma de definir los estilos es añadir una hoja de estilo a la escena, de la misma manera que lo haría en

Java. Usando una hoja de estilo que hace que sea más fácil cambiar el estilo de su aplicación en una fechaposterior. Vea la sección de este tutorial titulado Use una hoja de estilo para obtener información sobre el uso de

una hoja de estilo con la aplicación FXMLExample.

Agregar una cuadrícula de diseño y controles

Nido próximo, un diseño de cuadrícula en la región centro del panel de la frontera. Se utiliza un diseño de

cuadrícula para colocar los controles en la pantalla en un patrón vertical y horizontal, como se muestra en la Fig

5 .

Figura 5 Panel de rejilla en la Región Centro del panel de la frontera

Descripción del "Panel de rejilla Figura 5 en la Región Centro del panel de la frontera"

Ejemplo 8 incluye el código para el diseño de cuadrícula. Insertarla entre las <center> y </ center> etiquetas.

 

Ejemplo 8 cuadrícula de diseño con controles

<GridPane alineación = "top_center" hgap = "8" vgap = "8"

style = "-fx-padding: 40 0 0 0">

<children>

Texto <Label = "% signIn"

style = "-fx-font: NORMAL 14 Tahoma;"

GridPane.columnIndex = "0" GridPane.rowIndex = "0" />

 

Texto <Label = "% username"

GridPane.columnIndex = "0" GridPane.rowIndex = "1"

labelFor = "$ usernameField" />

<TextField fx: id = "usernameField" prefColumnCount = "10"

GridPane.columnIndex = "1" GridPane.rowIndex = "1" />

Texto <Label = "% password"

GridPane.columnIndex = "0" GridPane.rowIndex = "2"

labelFor = "$ passwordField" />

Page 20: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 20/23

 

<PasswordField fx: id = "passwordField" prefColumnCount = "10"

GridPane.columnIndex = "1" GridPane.rowIndex = "2"

onAction = "# handlePasswordFieldAction" />

 

<Botón fx: id = "submitButton" text = "% submit"

GridPane.columnIndex = "1" GridPane.rowIndex = "3"

onAction = "# handleSubmitButtonAction" />

 

<Etiqueta fx: id = "buttonStatusText"

GridPane.columnIndex = "1" GridPane.rowIndex = "4"

style = "-fx-texto-fill: # ff0000;" />

</ Hijos>

</ GridPane>

El código debe ser conocido por ahora, pero algunos nuevos atributos debe ser

explicado. ElGridPane.columnIndex y GridPane.rowIndex atributos corresponden a la setColumnIndex

() ysetRowIndex () los métodos de la GridPane clase. La numeración de filas y columnas de la cuadrícula

empieza en cero. Por ejemplo, la ubicación de la primera etiqueta de control (0,0), lo que significa que está en

primera fila de la primera columna, o en la esquina superior izquierda. El prefColumnCount atributo se utiliza pa

el TextField y passwordField controles para ajustar el ancho de columna preferido 10.

Asignación de una fx: Identificación del valor a un elemento crea una variable en el espacio de nombres de

documento, que puede consultar más adelante en el código. Referencia de las variables se identifican con un

operador $. En el ejemplo 8 , el ID de TextField esusernameField . Este ID se asigna a la labelFor propiedad

la etiqueta de control, que establece una etiqueta para el TextField control.

Tenga en cuenta que la passwordField y botón de los controles tienen un onAction atributo. El signo de núme

se refiere a un método personalizado, que va a definir en la siguiente sección cuando se crea

el FXMLExampleController clase.

Mientras FXML es una manera conveniente para definir la estructura de la interfaz de usuario de una aplicación,

proporciona una forma de implementar el comportamiento de una aplicación. Este comportamiento debe ser

implementado en el código de Java, que se describe en la siguiente sección, o en un lenguaje de script, que se

describe en utilizar un lenguaje de secuencias de comandos.

Añadir un evento de botón

Ahora, cree un controlador para manejar el evento del botón. Este ejemplo muestra cómo asociar marcado FXM

con un controlador de eventos en Java.

1. En la ventana de Proyectos, haga clic en la carpeta Sample.java fxmlexample y seleccione Refactor , a

continuación, cambiar el nombre .

2. Introduzca FXMLExampleController y haga clic en Refactorizar .

3. Abra el archivo FXMLExampleController.java, elimine el código generado por el IDE NetBeans, y sustituir

por el código en el ejemplo 9 .

Ejemplo 9 FXMLExampleController.java

paquete fxmlexample;

 

Page 21: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 21/23

 

importación javafx.event.ActionEvent;

importación javafx.fxml.FXML;

importación javafx.scene.control.Label;

 

pública FXMLExampleController clase {

@ FXML etiqueta privada buttonStatusText;

 

@ FXML handleSubmitButtonAction protected void (ActionEvent evento) {

buttonStatusText.setText ("Enviar pulsa el botón");

}

@ FXML protegidos handlePasswordFieldAction vacío (ActionEvent evento) {

buttonStatusText.setText ("Enter presionada la tecla");

}

}

La anotación @ FXML se utiliza para etiquetar campos no públicos miembros de control y métodos de

control para el uso de marcas.

Además de el lenguaje de programación Java, también puede utilizar otros lenguajes compilados, como

Scala, para implementar un controlador.

Ahora puede ejecutar la aplicación. Prueba de la aplicación mediante la introducción de texto en los dos campos

hacer clic en Enviar.

Para el código fuente completo, puede descargar FXMLExample.zip .

Use un lenguaje de scripting

Como una alternativa al uso del código de Java para crear un controlador de eventos, se puede crear elcontrolador con cualquier lenguaje que proporciona un motor de scripting compatible con JSR223. Idiomas

incluyen JavaScript, Groovy, Jython, y Clojure. Editar el archivo FXML de la siguiente manera el uso de JavaScrip

en el ejemplo de inicio de sesión.

1. En el fxml_example.fxml archivo, agregue la declaración de JavaScript después de la declaración XML.

<? Javascript>

2. En el botón de marcado, cambiar el nombre de la función de lo que la llamada es el siguiente:

onAction = "handleSubmitButtonAction (evento);"

3. Actualizar el margen de beneficio en el passwordField algo parecido a esto:

onAction = "handlePasswordFieldAction (evento);"

4. Retire la fx: controlador de atributo de la BorderPane marcado y añadir la función de JavaScript en u

etiqueta <script> directamente debajo de él, como se muestra en el ejemplo 10 .

Ejemplo 10 JavaScript en FXML

<BorderPane Xmlns:fx="http://javafx.com/fxml">

<fx:script>

Page 22: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 22/23

 

handleSubmitButtonAction function () {

buttonStatusText.setText ("Llamando a la JavaScript");

}

función handlePasswordFieldAction (evento) {

buttonStatusText.text = "JavaScript Más";

}

</ Fx: script>

Alternativamente, usted puede poner las funciones de JavaScript en un archivo externo (como fxml_example.js)

incluir el script de esta manera:

<fx:script source="fxml_example.js"/>

Si usted está considerando usar un lenguaje de script con FXML, tenga en cuenta que una IDE puede no ser

compatible pasar a través de código de script durante la depuración.

Use una hoja de estilo

Como alternativa al uso de estilos en línea, usted puede añadir una hoja de estilo a la escena y luego establecer

una clase de estilo en un nodo. Siga estos pasos para crear una hoja de estilo que define un estilo para el diseño

de panel de red y control de etiqueta.

1. Crear la hoja de estilo.

a. En la ventana de Proyectos, haga clic en la carpeta en el directorio fxmlexample Source Package

seleccione Nuevo , y luego otros .

b. En el cuadro de diálogo Nuevo archivo, seleccione Otros , a continuación,Cascading Style

Sheet , y haga clic en Siguiente .

c. Introduzca fxmlstylesheet y haga clic en Finalizar .

d. Elimine el código generado por el IDE NetBeans y sustituirlo por el código deejemplo 11 .

Ejemplo 11 Contenido de la hoja de estilo

@ Charset "UTF-8";

/ *

Documento: FXMLstylesheet.css

* /

. Grid panel {

-Fx-padding: 80 0 0 0;

}

 

. Label {

-Fx-font: 36px Tahoma normal;

}

2. Abra el archivo FXMLExample.java y añadir la hoja de estilo a la escena mediante la inclusión de este

código antes de la línea s tage.show () .

Page 23: Qué es JavaFX

5/13/2018 Qué es JavaFX - slidepdf.com

http://slidepdf.com/reader/full/que-es-javafx 23/23

 

. scene.getStylesheets () para sumar ("fxmlexample / fxmlstylesheet.css");

3. Vaya al archivo fxml_example.fxml y agregar la clase de estilo.

a. Agregue una instrucción de importación para el elemento <String>.

<? Java.lang importación .*>

b. Vuelva a colocar el marcado de la GridPane con el código de ejemplo 12 .

 

Ejemplo 12 estilo de clase para panel de rejilla

<GridPane Alignment="top_center" hgap="8" vgap="8">

<styleClass>

<string Fx:value="grid-pane"/>

</ StyleClass>

c. Vuelva a colocar el marcado para el "Sign In" etiqueta con el código de ejemplo 13.

Ejemplo 13 estilo de clase de etiqueta

Texto <Label = "% signIn"

GridPane.columnIndex = "0" GridPane.rowIndex = "0">

<styleClass>

<string Fx:value="label"/>

</ StyleClass>

</ Label>

Cuando se utiliza la <styleClass> etiqueta en un objeto, el estilo se aplica a todas las instancia

de la misma clase, a menos que la clase tiene su propio estilo en línea. Por lo tanto, cuando se

ejecuta la aplicación FXMLExample, el estilo en elejemplo 13 se aplica no sólo a la sesión en la

etiqueta, sino también el nombre de usuario y contraseña etiquetas. El estilo no se aplica a la

etiqueta Ejemplo Login porque tiene un estilo en línea que prevalece sobre la hoja de estilo.