Java - Uvod u AWT (Abstract Window Toolkit)


Java AWT (Abstract Window Toolkit) je API za razvoj grafičkog korisničkog interfejsa (GUI) ili aplikacija zasnovanih na Windows-u u Javi. Java AWT komponente su zavisne od platforme, odnosno komponente se prikazuju prema prikazu operativnog sistema. AWT je težak, odnosno njegove komponente koriste resurse osnovnog operativnog sistema (OS). Paket java.awt pruža klase za AWT API kao što su: TextField, Label, TextArea, RadioButton, CheckBox, Choice, List itd. AWT će vam pomoći da razumije Java GUI programiranje u jednostavnim i lakim koracima.



Zašto je AWT nezavisan od platforme?

Java AWT poziva podprogram matične platforme (operativne sisteme) za kreiranje API komponenti kao što su: TextField, ChechBox, dugme, itd. Na primjer, AWT GUI sa komponentama kao što su TextField, oznaka i dugmad će imati drugačiji izgled za različite platforme kao što su: Windows, MAC OS i Unix. Razlog za to je što platforme imaju drugačiji izgled na svoje izvorne komponente i AWT direktno poziva nativni potprogram koji kreira te komponente. Jednostavnim riječima, AWT aplikacija će izgledati kao Windows aplikacija u Windows OS-u, dok će izgledati kao Mac aplikacija u MAC OS-u.



Java AWT hijerarhija

Hijerarhija Java AWT klasa je prikazana na sljedećoj slici:





Komponente (Components)

Svi elementi kao što su: dugme, tekstualna polja, trake za pomjeranje itd. nazivaju se komponentama. U Java AWT, postoje klase za svaku komponentu kao što je prikazano u gornjem dijagramu. Da bismo svaku komponentu postavili na određenu poziciju na ekranu, moramo je dodati u kontejner.


Kontejner (Container)

Kontejner je komponenta u AWT-u koja može da sadrži druge komponente kao što su: dugmad, tekstualna polja, oznake itd. Klase koje proširuju klasu Container poznate su kao okvir, dijalog i panel. To je u osnovi ekran na kojem se nalaze komponente na svojim specifičnim lokacijama. Zbog toga sadrži i kontroliše raspored komponenti.



Vrste kontejnera

Postoje četiri tipa kontejnera u Java AWT:

  • Window
  • Panel
  • Frame
  • Dialog

Window

Prozor (Window) je kontejner koji nema ivice i trake menija. Za kreiranje prozora morate koristiti okvir, dijalog ili drugi prozor. Moramo kreirati instancu klase Window da kreiramo ovaj kontejner.


Panel

Panel je kontejner koji ne sadrži naslovnu traku, ivicu ili traku menija. To je generički kontejner za držanje komponenti. Može imati druge komponente kao što su: dugme, tekstualno polje itd. Instanca Panel klase kreira kontejner u koji možemo dodati komponente.


Frame

Okvir (Frame) je kontejner koji sadrži naslovnu traku i ivicu i može imati trake menija. Može imati i druge komponente kao što su: dugme, tekstualno polje, traka za pomeranje itd. Okvir (Frame) je najčešće korišteni kontejner prilikom razvoja AWT aplikacije.



Korisne metode klase Component

Metoda Opis
public void add(Component c) Ubacuje komponentu na ovu komponentu.
public void setSize(int width,int height) Postavlja veličinu (širina i visina) komponente.
public void setLayout(LayoutManager m) Definiše upravitelja rasporeda za komponentu.
public void setVisible(boolean status) Mijenja vidljivost komponente, prema zadanim postavkama false.


Java AWT primjer

Da biste kreirali jednostavan AWT primjer, potreban vam je okvir. Postoje dva načina da kreirate GUI koristeći Frame u AWT-u:

  1. Proširenjem klase Frame (nasljeđivanje)
  2. Kreiranjem objekta klase Frame (asocijacije)

Pogledajmo jednostavan primjer AWT-a gdje nasljeđujemo klasu Frame. Ovdje prikazujemo komponentu dugmeta na okviru.

// Imortavanje Java AWT klase  
import java.awt.*;    
  
// Proširuje Frame klasu u našu Main klasu
public class Main extends Frame {    
  
   // Inicijalizacija pomoću konstruktora  
   Main() {  
  
      // Kreiranje dugmeta   
      Button b = new Button("Click Me!!");  
  
      // Podešavanje položaja dugmeta na ekranu
      b.setBounds(30,100,80,30);  
  
      // Dodavanje dugmeta na framu    
      add(b);  
  
      // Veličina forme 300px širina i 300px visina 
      setSize(300,300);  
  
      // Podešavanje naziva Frame  
      setTitle("Ovo je osnovni AWT primjer");   
          
      // Bez layout manager   
      setLayout(null);   
  
      // Sada će okvir biti vidljiv, po defaultu nije vidljiv    
      setVisible(true);  
}    
  
// Metoda main
public static void main(String args[]) {   
  
    // Kreiranje instance klase Frame
    Main f = new Main();    
    }  
}

Prikaz koda iz gornjeg primjera izgledaće ovako:



Pogledajmo jednostavan primjer AWT-a gdje kreiramo instancu klase Frame. Ovdje kreiramo komponentu TextField, Label i Button na okviru.

// Imortovanje Java AWT klase  
import java.awt.*;    
  
// Klasa Main direktno kreira istancu Frame klase  
class Main {    
  
   // Inicijalizacija pomoću konstruktora  
   Main() {  
  
      // Kreiranje Frame-a  
      Frame f = new Frame();  
  
      // Kreiranje Label  
      Label l = new Label("ID zaposlenog:");   
  
      // Kreiranje dugmeta  
      Button b = new Button("Pošalji");  
  
      // Kreiranje TextField  
      TextField t = new TextField();  
  
      // Podešavanje položaja gornjih komponenti u okviru (Frame)
      l.setBounds(20, 60, 80, 30);  
      t.setBounds(20, 100, 80, 30);  
      b.setBounds(100, 100, 80, 30);  
  
      // Dodavanje komponenti u okvir (Frame)    
      f.add(b);  
      f.add(l);  
      f.add(t);  
  
      // Veličina okvira 300px širina i 300px visina  
      f.setSize(400,300);  
  
      // Postavljanje naslova okvira (Frame)
      f.setTitle("Informacije o zaposlenima");   
          
      // Bez izgleda (no layout) 
      f.setLayout(null);   
  
      // Podešavanje vidljivosti okvira (Frame)
      f.setVisible(true);  
}    
  
// Metoda main  
public static void main(String args[]) {   
    // Kreiranje instance klase Frame  
    Main awt_obj = new Main();    
    }  
}

Prikaz koda iz gornjeg primjera izgledaće ovako: