tutorial que interfaz grafica español ejemplos contenedores componentes java swing awt

java - que - swing containers netbeans



¿Cuál es la diferencia entre Swing y AWT? (8)

¿Puede alguien explicarme cuál es la diferencia entre Swing y AWT?

¿Hay casos en los que AWT sea más útil / aconsejable de usar que swing o viceversa?


AWT es una interfaz Java para el código GUI del sistema nativo presente en su sistema operativo. No funcionará igual en todos los sistemas, aunque lo intente.

Swing es una interfaz gráfica de usuario de Java más o menos pura. Utiliza AWT para crear una ventana de sistema operativo y luego pinta imágenes de botones, etiquetas, texto, casillas de verificación, etc., en esa ventana y responde a todos sus clics del mouse, entradas clave, etc., decidiendo por sí mismo qué hacer En lugar de dejar que el sistema operativo lo maneje. Por lo tanto, Swing es 100% portátil y es el mismo en todas las plataformas (aunque es personalizable y tiene una "apariencia de conexión" que puede hacer que se parezca más o menos a cómo se verían las ventanas y los widgets nativos).

Estos son enfoques muy diferentes a los kits de herramientas GUI y tienen muchas consecuencias. Una respuesta completa a tu pregunta trataría de explorar todos esos. :) Aquí hay una pareja:

AWT es una interfaz multiplataforma, por lo que a pesar de que utiliza el sistema operativo subyacente o el kit de herramientas GUI nativo para su funcionalidad, no proporciona acceso a todo lo que pueden hacer esos kits de herramientas. Es posible que los widgets AWT avanzados o más nuevos que puedan existir en una plataforma no sean compatibles con otra. Las características de los widgets que no son iguales en todas las plataformas podrían no ser compatibles, o peor aún, podrían funcionar de manera diferente en cada plataforma. La gente solía invertir mucho esfuerzo para lograr que sus aplicaciones AWT funcionen de manera coherente en todas las plataformas; por ejemplo, pueden intentar hacer llamadas a código nativo desde Java.

Debido a que AWT utiliza widgets GUI nativos, su sistema operativo los conoce y se encarga de ponerlos uno frente al otro, etc., mientras que los widgets Swing son píxeles sin sentido dentro de una ventana desde el punto de vista de su sistema operativo. Swing se encarga del diseño y apilamiento de tus widgets. La mezcla de AWT y Swing no es compatible y puede dar lugar a resultados ridículos, como los botones nativos que ocultan todo lo demás en el cuadro de diálogo en el que residen porque todo lo demás se creó con Swing.

Debido a que Swing intenta hacer todo lo posible en Java que no sean las rutinas de gráficos en bruto proporcionadas por una ventana GUI nativa, solía incurrir en una penalización de rendimiento en comparación con AWT. Esto hizo que Swing, lamentablemente, tardara en alcanzarla. Sin embargo, esto se ha reducido drásticamente en los últimos años debido a JVM más optimizadas, máquinas más rápidas y (supongo) optimización de los internos Swing. Hoy en día, una aplicación Swing puede ejecutarse lo suficientemente rápido como para ser útil o incluso rápida, y casi indistinguible de una aplicación que utiliza widgets nativos. Algunos dirán que tardó demasiado en llegar a este punto, pero la mayoría dirá que vale la pena.

Finalmente, es posible que también desee revisar SWT (el kit de herramientas GUI utilizado para Eclipse, y una alternativa tanto para AWT como para Swing), que es una especie de retorno a la idea de AWT de acceder a Widgets nativos a través de Java.


En cuanto a cuando AWT puede ser más útil que Swing -

  • puede estar apuntando a una JVM o plataforma más antigua que no es compatible con Swing. Esto solía realmente entrar en juego si estaba creando Applets: quería apuntar al denominador común más bajo para que la gente no tuviera que instalar un complemento Java más nuevo. No estoy seguro de cuál es la versión actual más extendida del complemento de Java, esto puede ser diferente hoy.
  • algunas personas prefieren el aspecto nativo de AWT sobre las pieles de plataforma ''no del todo'' de Swing. (Hay mejores skins de apariencia nativa de terceros que las implementaciones de Swing BTW) Mucha gente prefirió usar FileDialog de AWT sobre FileChooser de Swing porque dio el diálogo de archivos de la plataforma a la que la mayoría de las personas estaba acostumbrada, en lugar del Swing personalizado "extraño".

La diferencia básica de lo que ya todos mencionaron es que uno es pesado y otro ligero . Permítanme explicar, básicamente, lo que significa el término "peso pesado" es que cuando se usan los componentes awt, el sistema operativo genera el código nativo utilizado para obtener el componente de vista, por lo que la apariencia cambia de un sistema operativo a otro. Donde, como en los componentes de swing, es responsabilidad de JVM generar la vista de los componentes. Otra afirmación que vi es que el swing está basado en MVC y awt no.


Varias consecuencias resultan de esta diferencia entre AWT y Swing.

AWT es una capa delgada de código sobre el sistema operativo, mientras que Swing es mucho más grande. Swing también tiene una funcionalidad mucho más rica. Al usar AWT, usted mismo tiene que implementar muchas cosas, mientras que Swing las tiene integradas. Para el trabajo intensivo de GUI, AWT se siente muy primitivo con el trabajo en comparación con Swing. Debido a que Swing implementa la funcionalidad GUI en lugar de depender del sistema operativo host, puede ofrecer un entorno más rico en todas las plataformas en las que se ejecuta Java. AWT es más limitado en el suministro de la misma funcionalidad en todas las plataformas porque no todas las plataformas implementan los mismos controles de la misma manera.

Los componentes de Swing se denominan "ligeros" porque no requieren un objeto nativo del sistema operativo para implementar su funcionalidad. JDialog y JFrame son de peso pesado, porque tienen un igual. Por lo tanto, los componentes como JButton , JTextArea , etc., son ligeros porque no tienen un igual de sistema operativo.

Un par es un widget proporcionado por el sistema operativo, como un objeto de botón o un objeto de campo de entrada.


Swing vs AWT . Básicamente, AWT vino primero y es un conjunto de componentes de UI de peso pesado (lo que significa que son envoltorios para objetos del sistema operativo), mientras que Swing se construyó sobre AWT con un conjunto más rico de componentes livianos.

Cualquier trabajo serio de la interfaz de usuario de Java se realiza en Swing, no en AWT, que se utilizó principalmente para applets.


AWT 1. AWT ocupa más espacio de memoria 2. AWT depende de la plataforma 3. AWT requiere el paquete javax.awt

columpios 1. El swing ocupa menos espacio de memoria 2. El componente de giro es independiente de la plataforma 3. Swing requiere el paquete javax.swing


Oscilación:

  1. Swing es parte de las clases de fundación java.
  2. Los componentes Swing son independientes de la plataforma.
  3. Los componentes del columpio son componentes livianos porque el columpio se asienta en la parte superior del awt.

AWT:

  1. AWT se llama la herramienta de ventana abstracta.
  2. Los componentes de AWT dependen de la plataforma.
  3. Los componentes AWT son componentes de peso pesado.

  • El componente swing proporciona una interfaz de usuario muy flexible porque sigue el controlador de vista de modelo (mvc).
  • awt no está basado en mvc.
  • El swing funciona más rápido.
  • awt no funciona más rápido.
  • Los componentes del columpio son ligeros.
  • Los componentes de awt son pesados.
  • El swing ocupa menos espacio en la memoria.
  • awt ocupa más espacio de memoria.
  • El componente swing es independiente de la plataforma.
  • awt depende de la plataforma.
  • swing requiere javax.swing paquete.
  • awt requiere el paquete javax.awt.