10 Las diferencias entre javafx y swing

Si usted es un programador de Java con experiencia, que sin duda han trabajado con Swing para crear interfaces de usuario. Oracle no ha abandonado por completo oscilación - no está en desuso, y aplicaciones Swing seguir trabajando. Pero no se está trabajando más para mejorar Swing, y Oracle ha dejado claro que JavaFX es el futuro.

Aquí hay diez diferencias básicas entre JavaFX y Swing.

En JavaFX, todo el mundo es un escenario

En Swing, la clase que contiene los componentes de la interfaz de usuario se denomina marco y se define por la JFrame clase. Una trama es esencialmente una ventana vacía a la que se puede añadir una panel, que sirve como un contenedor para los elementos de interfaz de usuario. Un panel se define por la JPanel clase.

Una aplicación Swing es en realidad una clase que amplíe la JFrame clase. Para visualizar los componentes de interfaz de usuario, agregar componentes a una JPanel y luego añadir el panel al marco.

JavaFX utiliza la metáfora de un teatro para modelar los contenedores de alto nivel de una aplicación. UN escenario (Definida por la Escenario clase) representa el recipiente más alto nivel - por lo general, una ventana, pero en algunos sistemas operativos, la etapa puede representar toda la superficie de la pantalla. Los controles individuales y otros componentes que forman la interfaz de usuario están contenidos en una escena (Definida por la Escena clase). Una aplicación puede tener más de una escena, pero sólo una de las escenas se puede mostrar en el escenario en un momento dado.

Una escena contiene una gráfico de la escena, que es el concepto más importante en JavaFX. El gráfico de escena es una colección de todos los elementos que componen una interfaz de usuario - grupos, diseños, controles, y formas. Estos objetos se denominan nodos y son todos derivados de la Nodo clase. los Nodo clase tiene muchas características útiles y capacidades que se realizan de forma automática a disposición de cualquier objeto que puede agregar a su interfaz de usuario. Por ejemplo, el Nodo clase define una setRotate método que le permite girar cualquier nodo en el escenario gráfico.

En JavaFX, controladores de distribución son nodos

En Swing, un diseño está asociado con una JPanel. El alto nivel JPanel da el diseño básico para el marco. Si desea anidar diseños adicionales en el diseño de alto nivel, debe crear adicional JPanels, establecer sus diseños asociados y, a continuación, añadirlos a la disposición de más alto nivel.

Video: AWT vs Swing vs JavaFX

En JavaFX, los diseños son subclases de la Nodo clase al igual que los controles y formas. Diseños contienen una colección de nodos, y cualquier nodo contenida en una disposición pueden ser cualquier tipo de nodo: un control, una forma, o de otra disposición. Este esquema es mucho menos engorroso que la asociación de oscilación de los diseños con paneles.

JavaFX tiene el control de eventos mejorado

Tanto JavaFX y el evento uso oscilación manejo para responder a eventos de entrada del usuario. Sin embargo, se dará cuenta de que los acontecimientos en JavaFX están mejor pensada y más consistente que sus equivalentes en Swing. Pero la mayor razón por la manipulación de eventos se mejora en JavaFX es debido a su dependencia de las propiedades.

JavaFX admite propiedades

JavaFX es compatible con los conceptos de propiedades y utiliza las propiedades extensivamente a través de sus clases. En pocas palabras, una propiedad es una variable cuyo valor se puede observar. Puede registrar un oyente con cualquier propiedad, que le permite escribir código que se activa automáticamente cada vez que cambia la propiedad. Además, se puede enlazar propiedades entre sí, lo que significa que si cambia el valor de una propiedad, el otro valor de la propiedad cambia automáticamente con él.

Debido a que casi todas las características de los elementos de interfaz de usuario son enviadas a través de propiedades, JavaFX proporciona el control de eventos que es insólito en Swing. Por ejemplo, en JavaFX, puede conectar un detector de eventos para el color de una forma. Si la forma cambia de color, se ejecuta el código detector de eventos. Puede que no tenga un uso para la capacidad, pero que se puede utilizar si es necesario.

JavaFX es personalizable con CSS

Una de las mejores características de JavaFX es que se puede controlar el formato con Cascading Style Sheets (CSS). Casi todos los aspectos de la apariencia de la interfaz de usuario puede ser establecido por una regla de estilo, y se puede fácilmente permitir al usuario seleccionar cuál de las varias hojas de estilo disponibles para aplicar a la escena. Por lo tanto, se puede cambiar todo el aspecto de su aplicación con una sola llamada al método.

JavaFX tiene un control más consecuente

En general, usted encontrará que la jerarquía de control JavaFX es más completa que la oscilación de. Ambos tienen todos los controles básicos - botones, casillas de verificación, cuadros combinados, y similares. Pero JavaFX tiene varios controles que se abren interesantes que no tiene, como el colapsable TitledPane el control y la Acordeón control que organiza múltiple TitledPane controla en una pila. Y el hecho de que todos estos controles son personalizable mediante CSS les da una gran ventaja sobre Swing.

JavaFX tiene efectos especiales

los javafx.scene.effect paquete contiene un número de clases que se pueden aplicar fácilmente efectos especiales a cualquier nodo en el escenario gráfico. Estas clases permiten aplicar fácilmente sombras, reflejos, desenfoques y otros efectos visuales interesantes que pueden transformar el aspecto de su interfaz de usuario.

La animación es más fácil en JavaFX

La animación es posible en Swing, pero balancee no proporciona ningún apoyo directo a ella. Para animar un componente Swing, debe configurar sus propios temporizadores y construir su propia lógica para ejecutar la animación.

Video: JavaOne 2012: JavaFX and Rich User Experience

Por el contrario, JavaFX ha incorporado en el soporte para animaciones sofisticadas que se pueden aplicar a cualquier nodo en el escenario gráfico. Puede utilizar una de las varias clases de transición incorporado para realizar animaciones comunes tales como fundidos, rotaciones, o rutas de movimiento. O bien, puede utilizar la KeyFrame y Cronología clases para configurar fácilmente animaciones personalizadas.

JavaFX es compatible con los dispositivos táctiles modernos

Oscilación carece de soporte para dispositivos táctiles modernos. En contraste, JavaFX ha incorporado en el soporte para gestos táctiles comunes, tales como el desplazamiento, deslizar, rotación y zoom. El manejo de estos eventos en JavaFX es tan fácil como el manejo de cualquier otro tipo de evento: Sólo tiene que instalar un detector de eventos en el evento de toque y luego escribir código que responde adecuadamente.

JavaFX no tiene equivalente a JOptionPane

No sería justo para llenar por completo esta lista de diez puntos con diferencias que favorecen claramente JavaFX. He aquí una pequeña molestia de JavaFX: No tiene ningún equivalente incorporada a Swing de JOptionPane clase, que es muy útil para la visualización de los mensajes de alerta cortos o conseguir de entrada sencilla para el usuario. En JavaFX, usted tiene que crear su propio equivalente a esta clase útil.

Artículos Relacionados