Spis treści

REVEAL theme=simple&disableLayout=0&transition=none&controls=1&show_progress_bar=1&build_all_lists=0&show_image_borders=0&horizontal_slide_level=2&enlarge_vertical_slide_headers=0&show_slide_details=1&open_in_new_window=1&size=1024×768

<html> <style type=„text/css”> p { text-align: left;} .reveal { font-size: 30px; } .reveal section { width: 96%; margin: 0 auto; } .reveal .slides { width: 60% !important; } .reveal ul, .reveal ol { margin-left: 1.5em; } .reveal pre code {

height: 100%;
max-height: 100%;
box-sizing: border-box; }

</style> </html>

Zajęcia 6. - Graficzne interfejsy użytkownika - AWT

AWT - Abstract Window Toolkit

AWT to podstawowa, choć przestarzała, biblioteka do budowy interfejsów graficznych. Jest zależna od systemu operacyjnego - kontrolki mogą wyglądać inaczej na różnych platformach. AWT jest częścią frameworka JFC (Java Foundation Classes). Użycie kontrolek natywnych bywało jednym z powodów, dla których Java odbierana była jako obciążająca zasoby systemowe.

Dokumentacja: java.awt (Java SE 17 & JDK 17)

97_1.jpg

AWT - hierarchia elementów

java.awt.Component

Component jest abstrakcyjną superklasą dla elementów AWT, które nie posiadają menu. Komponenty mogą być lekkie (light-weight) lub ciężkie (heavy-weight). Komponenty lekkie nie są związane z natywnym oknem i nie wykorzystują bezpośrednio zasobów systemu operacyjnego; komponenty ciężkie korzystają z natywnych zasobów (typowe komponenty AWT).

Klasy dziedziczące po Component

Container

Container to obiekt mogący przechowywać komponenty AWT. Dodane obiekty traktowane są jak elementy listy; można dodawać je na określone pozycje lub domyślnie na koniec. Container jest superklasą dla Panel, ScrollPane, Window.

Panel

Panel to prosty kontener dostarczający przestrzeń do umieszczania innych komponentów. Nie posiada obramowań ani pasków menu.

ScrollPane

ScrollPane to kontener oferujący automatyczne przewijanie w poziomie i pionie dla elementów potomnych. Suwaki mogą pojawiać się wg potrzeby lub być zawsze widoczne. Domyślny rozmiar to 100×100 px i należy go dostosować w kodzie.

Window

Window to okno bez obramowań i menu; wymaga zdefiniowania właściciela przy tworzeniu. Okna można umieszczać na ekranach fizycznych lub wirtualnych, określając współrzędne. Window jest superklasą dla Dialog i Frame.

Dialog

Dialog to okno z obramowaniem i paskiem tytułowym, używane do komunikacji z użytkownikiem. Może mieć właściciela i działać modalnie (blokuje okna rodzica) lub niemodalnie.

FileDialog

Specjalny typ dialogu do wybierania plików przez użytkownika; również może być modalny lub niemodalny.

Frame

Frame to okno z tytułem i obramowaniem, wyposażone w przyciski minimalizacji/maksymalizacji i opcjonalne menu - różni się od Dialog przede wszystkim tymi elementami.

Reakcja na zdarzenia - zdarzenia i nasłuchiwacze

Java udostępnia mechanizm zdarzeń w postaci interfejsów w pakiecie java.awt.event. Zdarzenia są reprezentowane przez klasy, a obsługa przez implementację odpowiednich listenerów.

Klasy zdarzeń i odpowiadające im interfejsy nasłuchiwaczy:

ActionEvent - ActionListener MouseEvent - MouseListener MouseMotionListener MouseWheelEvent - MouseWheelListener KeyEvent - KeyListener ItemEvent - ItemListener TextEvent - TextListener AdjustmentEvent - AdjustmentListener WindowEvent - WindowListener ComponentEvent - ComponentListener ContainerEvent - ContainerListener FocusEvent - FocusListener

Obsługa zdarzeń

  1. Zarejestrować komponent z odpowiednim Listenerem (szczegóły w dokumentacji komponentu).
  2. Zaimplementować obsługę zdarzenia trzema sposobami:
    • wewnątrz klasy implementującej interfejs obsługi,
    • poprzez zewnętrzną klasę implementującą interfejs,
    • poprzez klasę anonimową.

Dostępne kontrolki (przykłady)

Button, Canvas, Label, Scrollbar, TextField, MenuItem, TextArea, Menu, Checkbox, PopupMenu, CheckboxGroup, Panel, Choice, Dialog, List.

UWAGA! Wygląd kontrolek zależny jest od systemu!