AWT representa Kit de herramientas de ventana abstracta. Es una API dependiente de la plataforma para crear GUI (interfaz gráfica de usuario) para programas java.
¿Por qué depende de la plataforma AWT? Java AWT llama subrutina de plataforma nativa (sistemas operativos) para crear componentes como cuadro de texto, casilla de verificación, botón, etc. estas plataformas se ven diferentes por sus botones nativos y AWT llama directamente a su subrutina nativa que crea el botón. En pocas palabras, una aplicación construida en AWT se vería como una aplicación de Windows cuando se ejecuta en Windows, pero la misma aplicación se vería como una aplicación de Mac cuando se ejecuta en Mac OS.
AWT rara vez se usa hoy en día debido a su naturaleza pesada y dependiente de la plataforma. Los componentes AWT se consideran pesados porque los genera el sistema operativo (SO) subyacente. Por ejemplo, si está creando una instancia de un cuadro de texto en AWT, significa que en realidad le está pidiendo al sistema operativo que cree un cuadro de texto para usted.
Swing es una API preferida para aplicaciones basadas en ventanas debido a su naturaleza liviana e independiente de la plataforma. Swing se basa en la API de AWT, sin embargo, proporciona un aspecto ajeno a la plataforma subyacente. Tiene componentes más potentes y flexibles que AWT. Además de los componentes familiares como botones, casillas de verificación y etiquetas, Swing proporciona varios componentes avanzados como paneles con pestañas, paneles de desplazamiento, árboles, tablas y listas. Discutiremos Swing en detalle en un tutorial separado.
Jerarquía AWT
Componentes y contenedores
Todos los elementos como botones, campos de texto, barras de desplazamiento, etc. Se les conoce como componentes. En AWT tenemos clases para cada componente como se muestra en el diagrama de arriba. Para tener todo colocado en una pantalla en una ubicación particular, necesitamos agregarlos a un contenedor. Un contenedor es como una pantalla donde colocamos componentes como botones, campos de texto, casillas de verificación, etc. En resumen, un contenedor contiene y controla el diseño de los componentes. Un contenedor en sí es un componente (que se muestra en el diagrama jerárquico anterior), por lo que podemos agregar un contenedor dentro del contenedor.
Tipos de contenedores:
Como se explicó anteriormente, un contenedor es un lugar donde agregamos componentes como campo de texto, botón, casilla de verificación, etc. Hay cuatro tipos de contenedores disponibles en AWT: ventana, marco, diálogo y panel. Como se muestra en el diagrama de jerarquía anterior, Frame y Dialog son subclases de la clase Window.
Ventana: Una instancia de la clase Window no tiene borde ni título
Diálogo: La clase de diálogo tiene un borde y un título. Una instancia de la clase Dialog no puede existir sin una instancia asociada de la clase Frame.
Panel: El panel no contiene barra de título, barra de menú ni borde. Es un contenedor genérico para contener componentes. Una instancia de la clase Panel proporciona un contenedor al que agregar componentes.
Marco: Un marco tiene barras de título, borde y menú. Puede contener diferentes componentes como botones, campos de texto, barras de desplazamiento, etc. Este es el contenedor más utilizado al desarrollar una aplicación en AWT.
Ejemplo de Java AWT
Podemos crear una GUI usando Frame de dos formas:
1) Ampliación de la clase Frame
2) Creando la instancia de la clase Frame
Echemos un vistazo a cada ejemplo.
Ejemplo 1 de AWT: creación de marcos ampliando la clase de marco
import java.awt.*; /* We have extended the Frame class here, * thus our class "SimpleExample" would behave * like a Frame */ public class SimpleExample extends Frame{ SimpleExample(){ Button b=new Button("Button!!"); // setting button position on screen b.setBounds(50,50,50,50); //adding button into frame add(b); //Setting Frame width and height setSize(500,300); //Setting the title of Frame setTitle("This is my First AWT example"); //Setting the layout for the Frame setLayout(new FlowLayout()); /* By default frame is not visible so * we are setting the visibility to true * to make it visible. */ setVisible(true); } public static void main(String args[]){ // Creating the instance of Frame SimpleExample fr=new SimpleExample(); } }
Producción:
Ejemplo 2 de AWT: creación de marcos mediante la creación de una instancia de la clase Frame
import java.awt.*; public class Example2 { Example2() { //Creating Frame Frame fr=new Frame(); //Creating a label Label lb = new Label("UserId: "); //adding label to the frame fr.add(lb); //Creating Text Field TextField t = new TextField(); //adding text field to the frame fr.add //setting frame size fr.setSize(500, 300); //Setting the layout for the Frame fr.setLayout(new FlowLayout()); fr.setVisible(true); } public static void main(String args[]) { Example2 ex = new Example2(); } }
Producción: