4.3. GUI aplikāciju veidošana

Ievads

Mērķi

  • Raksturot svarīgākos AWT komponentus un to izraisītos notikumus
  • Aprakstīt, kā izveidot izvēļņu joslu (menu bar), izvēlni (menu), izvēlnes elementus (menu item) Javas GUI saskarnē
  • Saprast, kā mainīt komponenta krāsu un fontu

Motivācija

  • Pēc iepazīšanās ar dažiem GUI komponentiem, noskaidrosim, kas vēl var būt nepieciešams pilnvērtīgas GUI saskarnes izveidošanai.
  • Kā GUI logam var pievienot izvēlni?

AWT komponenti

Button
Poga - taisnstūris ar uzrakstu, kas saņem peles klikšķus
Canvas
Audekls - panelis, uz kura var zīmēt
Checkbox
Rūtiņa - var izvēlēties elementu, rūtiņu ieķeksējot
CheckboxMenuItem
Ieķeksējams izvēlnes elements
Choice
Izkrītošs saraksts - elementu saraksts, kurā var izvēlēties vienu elementu
Component
No tā manto visi AWT komponenti, izņemot izvēlnes komponentus
Container
No tā manto visi AWT konteineri
Dialog
Patstāvīgs logs ar virsrakstu un ārējo robežu; dialogi var būt nemodāli (modeless) vai modāli (modal)
Frame
Freims - patstāvīgs logs ar loga kontroļiem (maksimizēšanai, minimizēšanai, aizvēršanai)
Label
Iezīme - tekstu saturošs komponents
List
Saraksts - redzami vairāki elementi, no tiem ar klikšķi var izvēlēties vienu (vai arī jebkādu skaitu) elementu
Menu
Izvēlne - Elements izvēļņu joslā, kurš satur izvēļņu elementus
MenuItem
Izvēlnes elements - ietilpst izvēlnē
Panel
Panelis - Bieži lietots konteiners, kuru lieto, lai veidotu sarežģītus izvietojumus
Scrollbar>
Ritjosla - komponents, ļauj lietotājam izvēlēties vērtību no intervāla
ScrollPane
Ritināmā rūts - konteiners, kurš nodrošina sava bērna komponentei automātisku horizontālu vai vertikālu ritināšanu
TextArea
Teksta apgabals - komponents atļauj lietotājam ierakstīt (vairākrindu) teksta gabalu
TextField
Teksta lauciņš - komponents atļauj lietotājam ierakstīt vienu teksta rindiņu
Window
Virsklase visiem GUI logiem, t.sk. bez loga pārvaldības kontroļiem

Komponentu notikumi

Komponenti un to izraisīto notikumu tipi

Kā izveidot izvēlni

  • Izveidojiet MenuBar objektu, un uzstādiet to konteineram, piemēram, Frame.
  • Izveidojiet vienu vai vairākus Menu objektus, un pievienojiet tos izvēļņu joslai
  • Izveidojiet vienu vai vairākus MenuItem - izvēlnes elementus, un pievienojiet tos atbilstošajiem izvēļņu objektiem.

MenuBar izveidošana

1  Frame f = new Frame("MenuBar");
2  MenuBar mb = new MenuBar();
3  f.setMenuBar(mb);
Tukša izvēļņu josla

Menu lietojuma piemērs

1      Frame f = new Frame("Menu");
2      MenuBar mb = new MenuBar();
3      Menu m1 = new Menu("File");
4      Menu m2 = new Menu("Edit");
5      Menu m3 = new Menu("Help");
6      mb.add(m1);
7      mb.add(m2);
8      mb.setHelpMenu(m3);
9      f.setMenuBar(mb);
Izvēļņu josla ar izvēlnēm

MenuItem lietojuma piemērs

1      MenuItem mi1 = new MenuItem("New");
2      MenuItem mi2 = new MenuItem("Save");
3      MenuItem mi3 = new MenuItem("Load");
4      MenuItem mi4 = new MenuItem("Quit");
5      mi1.addActionListener(this);
6      mi2.addActionListener(this);
7      mi3.addActionListener(this);
8      mi4.addActionListener(this);
9      m1.add(mi1);
10      m1.add(mi2);
11      m1.add(mi3);
12      m1.addSeparator();
13      m1.add(mi4);
Izvēļņu elementi darbībā

CheckBoxMenuItem lietojuma piemērs

1      MenuBar mb = new MenuBar();
2      Menu m1 = new Menu("File");
3      Menu m2 = new Menu("Edit");
4      Menu m3 = new Menu("Help");
5      mb.add(m1);
6      mb.add(m2);
7      mb.setHelpMenu(m3);
8      f.setMenuBar(mb);
9      .....
10      MenuItem mi2 = new MenuItem("Save");
11      mi2.addActionListener(this);
12      m1.add(mi2);
13      ......
14      CheckboxMenuItem mi5 = new CheckboxMenuItem("Persistent");
15      mi5.addItemListener(this);
16      m1.add(mi5);
Ieķeksējamie izvēļņu elementi

Vizuālie aspekti

Krāsas komponentiem uzstāda šādi:

  • setForeground()
  • setBackground()

Piemērs:

int r = 255;
Color c = new Color(r, 0, 0);

Swing

  • Swing ir nākošās paaudzes GUI bibliotēka
  • Swing balstās uz AWT, bet papildina to ar "vieglsvara" komponentu versijām
  • Swing ievieš dažus jaunus komponentus: JTable, JTree un JComboBox.

Jautājumi paškontrolei

  • Nosaukt svarīgākos AWT komponentus un to izraisītos notikumus
  • Aprakstīt, kā izveidot izvēļņu joslu, izvēlnes un to elementus ar Javas AWT
  • Saprast, kā izmainīt komponenta krāsu un fontu
  • Kādas problēmas rodas, ja GUI saskarnei ir jāgaida, kad aplikācijas loģikas metodes beigs darbu?
  • Kādas ir AWT nepilnības?