what is java awt
Ten samouczek Java AWT wyjaśnia, czym jest Abstract Window Toolkit w Javie i powiązane koncepcje, takie jak AWT Color, Point, Graphics, AWT vs Swing, itp.:
W jednym z naszych wcześniejszych samouczków poznaliśmy podstawowe pojęcia dotyczące interfejsu GUI. W tym samouczku omówimy jeden z najstarszych frameworków GUI w Javie, zwany „AWT Framework”. AWT to skrót od „Abstract Window Toolkit”.
AWT to API do tworzenia aplikacji GUI w Javie. Jest to framework zależny od platformy, tj. Komponenty GUI należące do AWT nie są takie same na wszystkich platformach. Zgodnie z natywnym wyglądem i działaniem platformy, zmienia się także wygląd i działanie komponentów AWT.
=> Sprawdź WSZYSTKIE samouczki Java tutaj.
Czego się nauczysz:
JAVA AWT (zestaw narzędzi abstrakcyjnych okien)
Java AWT tworzy komponenty, wywołując podprogramy platform natywnych. W związku z tym aplikacja AWT GUI będzie wyglądać i działać jak system operacyjny Windows podczas pracy w systemie Windows i Mac OS, wyglądając i działając na komputerach Mac i tak dalej. To wyjaśnia zależność aplikacji Abstract Window Toolkit od platformy.
Ze względu na jego zależność od platformy i rodzaj ciężkiej natury jego komponentów, jest obecnie rzadko używany w aplikacjach Java. Poza tym istnieją również nowsze frameworki, takie jak Swing, które są lekkie i niezależne od platformy.
Swing ma bardziej elastyczne i wydajniejsze komponenty w porównaniu do AWT. Swing zapewnia komponenty podobne do Abstract Window Toolkit, a także zawiera bardziej zaawansowane komponenty, takie jak drzewa, panele z zakładkami itp.
Należy jednak zauważyć, że plik Framework Java Swing opiera się na AWT. Innymi słowy, Swing jest ulepszonym API i rozszerza framework Abstract Window Toolkit. Zanim więc przejdziemy do samouczków Swing, zapoznajmy się z omówieniem tej struktury.
Hierarchia i komponenty AWT
Zobaczmy teraz, jak wygląda hierarchia Abstract Window Toolkit w Javie.
Poniżej przedstawiono schemat hierarchii AWT w Javie.
Jak pokazano na powyższym rysunku, główny komponent AWT „Component” pochodzi od klasy „Object”. Klasa komponentu jest nadrzędna dla innych komponentów, w tym etykiety, przycisku, listy, pola wyboru, wyboru, kontenera itp.
Kontener jest dalej podzielony na panele i okna. Klasa Applet pochodzi od Panel, podczas gdy Frame i Dialog pochodzą ze składnika Window.
Omówmy teraz pokrótce te komponenty.
Klasa komponentów
Klasa Component jest głównym elementem hierarchii. Komponent jest klasą abstrakcyjną i jest odpowiedzialny za bieżące kolory tła i pierwszego planu, a także bieżącą czcionkę tekstu.
Klasa komponentu hermetyzuje właściwości i atrybuty komponentu wizualnego.
Pojemnik
Komponenty kontenera AWT mogą zawierać inne komponenty, takie jak tekst, etykiety, przyciski, tabele, listy itp. Kontener przechowuje zakładkę na inne komponenty, które są dodawane do GUI.
Płyta
Panel jest podklasą klasy Container. Panel jest klasą konkretną i nie zawiera tytułu, obramowania ani paska menu. Jest to pojemnik do przechowywania pozostałych elementów. W ramce może być więcej niż jeden panel.
Klasa okna
Klasa Windows jest oknem na najwyższym poziomie i możemy użyć ramek lub okien dialogowych do stworzenia okna. Okno nie ma obramowań ani pasków menu.
Rama
Frame pochodzi z klasy Window i można zmieniać jej rozmiar. Ramka może zawierać różne komponenty, takie jak przycisk, etykiety, pola, pasek tytułu itp. Ramka jest używana w większości aplikacji pakietu Abstract Window Toolkit.
najlepsza firma zajmująca się odzyskiwaniem danych z dysków twardych
Ramkę można utworzyć na dwa sposoby:
# 1) Korzystając z obiektu klasy Frame
Tutaj tworzymy obiekt klasy Frame, tworząc instancję klasy Frame.
Poniżej podano przykład programowania.
import java.awt.*; class FrameButton{ FrameButton (){ Frame f=new Frame(); Button b=new Button('CLICK_ME'); b.setBounds(30,50,80,30); f.add(b); f.setSize(300,300); f.setLayout(null); f.setVisible(true); } public static void main(String args()){ FrameButton f=new FrameButton (); } }
Wynik:
# 2) Poprzez rozszerzenie klasy Frame
Tutaj tworzymy klasę, która rozszerza klasę Frame, a następnie tworzymy komponenty ramy w jej konstruktorze.
Pokazuje to poniższy program.
import java.awt.*; class AWTButton extends Frame{ AWTButton (){ Button b=new Button('AWTButton'); b.setBounds(30,100,80,30);// setting button position add(b);//adding button into frame setSize(300,300);//frame size 300 width and 300 height setLayout(null);//no layout manager setVisible(true);//now frame will be visible, by default not visible } public static void main(String args()){ AWTButton f=new AWTButton (); } }
Wynik:
Klasa koloru AWT
Wyjście AWT, które pokazaliśmy powyżej, miało domyślne kolory dla tła i pierwszego planu. Abstract Window Toolkit udostępnia klasę Color, która jest używana do tworzenia i ustawiania koloru komponentów. Możemy również ustawić kolory dla komponentów za pomocą frameworka poprzez właściwości komponentów.
Klasa Color pozwala nam na to programowo. W tym celu klasa Color wykorzystuje model kolorów RGBA (RGBA = CZERWONY, ZIELONY, NIEBIESKI, ALFA) lub HSB (HSB = BARWA, NASYCENIE, BRIComponents).
Nie będziemy wchodzić w szczegóły tej klasy, ponieważ wykraczają one poza zakres tego samouczka.
Poniższa tabela zawiera listę różnych metod udostępnianych przez klasę Color.
Konstruktor / Metody | Opis |
---|---|
getBlue () | Zwraca składową koloru niebieskiego z zakresu 0-255. |
jaśniejszy () | Utwórz jaśniejszą wersję bieżącego koloru. |
createContext (ColorModel cm, Rectangle r, Rectangle2D r2d, AffineTransform x, RenderingHints h) | Zwraca nowy PaintContext. |
ciemniejszy () | Tworzy ciemniejszą wersję bieżącego koloru. |
dekodować (String nm) | Zwraca określony nieprzezroczysty kolor, konwertując ciąg na liczbę całkowitą. |
równa się (Object obj) | Sprawdza, czy dany obiekt koloru jest równy bieżącemu obiektowi. |
getAlpha () | Zwraca wartość alfa koloru z zakresu od 0 do 255. |
getColor (ciąg nm) | Zwraca kolor z właściwości systemu. |
getColor (ciąg nm, kolor v) | |
getColor (String nm, int v) | |
getColorComponents (ColorSpace cspace, float () compArray) | Zwraca tablicę typu float zawierającą składniki koloru z określonego ColorSpace. |
getColorComponents (float () compArray) | Zwraca tablicę typu zmiennoprzecinkowego zawierającą składniki koloru z przestrzeni ColorSpace koloru. |
getColorSpace () | zwraca ColorSpace bieżącego koloru. |
getGreen () | Zwraca składową koloru zielonego z zakresu 0-255 w domyślnej przestrzeni sRGB. |
getRed () | Zwraca składową koloru czerwonego z zakresu 0-255 w domyślnej przestrzeni sRGB. |
getRGB () | Zwraca wartość RGB bieżącego koloru w domyślnym modelu kolorów sRGB. |
getHSBColor (float h, float s, float b) | Tworzy obiekt Color przy użyciu modelu kolorów HSB z określonymi wartościami. |
getTransparency () | zwraca wartość przezroczystości dla tego koloru. |
hashCode () | Zwraca kod skrótu dla tego koloru. |
HSBtoRGB (float h, float s, float b) | Zamień podany HSB na wartość RGB |
RGB doHSB (int r, int g, int b, float () hsbvals) | konwertuje podane wartości RGB na wartości HSB. |
Punkt AWT w Javie
Klasa Point służy do wskazania lokalizacji. Lokalizacja pochodzi z dwuwymiarowego układu współrzędnych.
Metody | Opis |
---|---|
toString () | Zwróć ciąg znaków reprezentujący punkt. |
równa się (obiekt) | Sprawdź, czy dwa punkty są równe. |
getLocation () | Zwróć lokalizację bieżącego punktu. |
hashCode () | Zwraca kod skrótu dla bieżącego punktu. |
move (int, int) | Przenosi dany punkt do podanej lokalizacji w układzie współrzędnych (x, y). |
setLocation (int, int) | Zmienia lokalizację punktu na określoną lokalizację. |
setLocation (punkt) | Ustawia położenie punktu w podanej lokalizacji. |
translate (int, int) | Przetłumacz bieżący punkt na punkt w x + dx, y + dy. |
Klasa grafiki AWT
Wszystkie konteksty graficzne w Abstract Window Toolkit do rysowania komponentów w aplikacji pochodzą z klasy Graphics. Obiekt klasy Graphics zawiera informacje o stanie potrzebne do wykonywania operacji renderowania.
Informacje o stanie zazwyczaj zawierają:
- Który element ma zostać narysowany?
- Współrzędne renderowania i przycinania.
- Bieżący kolor, czcionka i klip.
- Bieżąca operacja na pikselu logicznym.
- Aktualny kolor XOR
Ogólna deklaracja klasy Graphics jest następująca:
public abstract class Graphics extends Object
Tryb bezgłowy AWT i wyjątek bez głowy
Kiedy wymagamy, abyśmy pracowali z aplikacją graficzną, ale bez rzeczywistej klawiatury, myszy, a nawet wyświetlacza, nazywa się to środowiskiem „bezgłowym”.
JVM powinien być świadomy takiego bezgłowego środowiska. Środowisko bezgłowe możemy również ustawić za pomocą pakietu Abstract Window Toolkit.
Można to zrobić na kilka sposobów, jak pokazano poniżej:
# 1) Za pomocą kodu programistycznego ustaw właściwość systemową „java.awt.headless” na wartość true.
#dwa) Użyj wiersza poleceń, aby ustawić następującą właściwość trybu bezgłowego na wartość true:
java -Djava.awt.headless = true
# 3) Dodaj „-Djava.awt.headless = true” do zmiennej środowiskowej o nazwie „JAVA_OPTS”, używając skryptu uruchamiania serwera.
Gdy środowisko jest bezgłowe i mamy kod zależny od wyświetlacza, klawiatury lub myszy, a gdy ten kod jest wykonywany w środowisku bezgłowym, zgłaszany jest wyjątek „HeadlessException”.
Ogólna deklaracja HeadlessException znajduje się poniżej:
public class HeadlessException extends UnsupportedOperationException
Opieramy się na trybie headless w aplikacjach, które wymagają np. Logowania w oparciu o obraz. Na przykład, jeśli chcemy zmieniać obrazek przy każdym logowaniu lub przy każdym odświeżaniu strony to w takich przypadkach załadujemy obrazek i nie potrzebujemy klawiatury, myszki itp.
Java AWT Vs Swing
Przyjrzyjmy się teraz niektórym różnicom między Java AWT i Swing.
najlepszy downloader odtwarzacza mp3 dla Androida
AWT | Huśtawka |
---|---|
AWT współpracuje z 21 równorzędnymi lub widżetami systemu operacyjnego, które odpowiadają każdemu komponentowi. | Swing działa tylko z jednym peerem, którym jest Window Object. Wszystkie inne komponenty są rysowane przez Swing wewnątrz obiektu Window. |
AWT to skrót od „Abstract Windows Toolkit”. | Swing wywodzi się z Java Foundation Classes (JFC). |
Komponenty AWT są ciężkie, ponieważ AWT bezpośrednio wywołuje podprogramy do podprogramów systemu operacyjnego. | Komponenty huśtawki są napisane na AWT i jako takie są lekkie. |
Komponenty AWT są częścią pakietu java.awt. | Komponenty Swing są częścią pakietu javax.swing. |
AWT jest zależne od platformy. | Komponenty Swing są napisane w Javie i są niezależne od platformy. |
AWT nie ma swojego wyglądu i stylu. Dostosowuje wygląd i styl platformy, na której działa. | Swing zapewnia inny wygląd i własny styl. |
AWT ma tylko podstawowe funkcje i nie obsługuje zaawansowanych funkcji, takich jak tabela, panel z zakładkami itp. | Swing zapewnia zaawansowane funkcje, takie jak panel JTabbed, JTable itp. |
AWT jest tak dobry, jak cienka warstwa zajęć umieszczonych na wierzchu systemu operacyjnego, co sprawia, że jest zależny od platformy. | Swing jest większy i zawiera również bogatą funkcjonalność. |
AWT zmusza nas do pisania wielu rzeczy. | Swing ma większość wbudowanych funkcji. |
Często Zadawane Pytania
Pytanie 1) Co to jest AWT w Javie?
Odpowiedź: AWT w Javie, znany również jako „Abstract Window Toolkit”, będący zależną od platformy frameworkiem graficznego interfejsu użytkownika, który poprzedza strukturę Swing. Jest częścią standardowego interfejsu GUI API języka Java, klas Java Foundation Classes lub JFC.
Pytanie 2) Czy nadal jest używany Java AWT?
Odpowiedź: W Javie jest prawie przestarzały, z wyjątkiem kilku komponentów, które są nadal używane. Ponadto na starszych platformach, które używają AWT, nadal istnieją stare aplikacje lub programy.
Pytanie 3) Co to jest AWT i Swing w Javie?
Odpowiedź: Abstract Window to zależny od platformy interfejs API do tworzenia aplikacji GUI w języku Java. Z drugiej strony Swing jest interfejsem API do programowania GUI i pochodzi z Java Foundation Classes (JFC). Komponenty AWT są ciężkie, podczas gdy komponenty Swing są lekkie.
Q # 4) Jaka jest ramka w Java AWT?
Odpowiedź: Ramkę można zdefiniować jako okno składowe najwyższego poziomu, które ma tytuł i obramowanie. Domyślnym układem ramki jest „Układ obramowania”. Ramki generują również zdarzenia Windows, takie jak Zamknięcie, Otwarcie, Zamknięcie, Aktywacja, Dezaktywacja itp.
P # 5) Co to jest import Java AWT?
Odpowiedź: Import Java AWT (import java.awt. *) Wskazuje, że potrzebujemy funkcjonalności API AWT w naszym programie, abyśmy mogli używać jego komponentów, takich jak pola tekstowe, przyciski, etykiety, lista itp.
Wniosek
W tym samouczku omówiliśmy omówienie pakietu Abstract Window Toolkit jako zależnego od platformy interfejsu API do tworzenia graficznego interfejsu użytkownika w języku Java. Jest prawie przestarzały w Javie i jest zastępowany przez inne interfejsy API, takie jak Swings i JavaFX.
Nie zagłębiliśmy się w szczegóły dotyczące wszystkich składników pakietu Abstract Window Toolkit, ponieważ są one obecnie rzadko używane. Dlatego omówiliśmy tylko komponenty takie jak ramki, kolor itp. Oraz tryb bezgłowy, który jest ustawiany za pomocą AWT.
W następnym samouczku zaczniemy od samouczków Java Swing i omówimy je szczegółowo, ponieważ większość dzisiejszych aplikacji Java wykorzystuje Swing do programowania GUI.
=> Obejrzyj serię prostych szkoleń dotyczących języka Java.
rekomendowane lektury
- Interfejs Java i samouczek klasy abstrakcyjnej z przykładami
- Podstawy języka Java: składnia języka Java, klasa języka Java i podstawowe pojęcia dotyczące języka Java
- Klasa Java Integer i Java BigInteger z przykładami
- Rodzaje zajęć w Javie: abstrakcyjne, konkretne, końcowe, statyczne
- Wdrażanie Java: tworzenie i wykonywanie pliku Java JAR
- Samouczek klasy skanera Java z przykładami
- Konstruktory prywatne, abstrakcyjne, tablicowe i ciągowe w języku Java
- Obiekt klasy Java Vs - jak używać klasy i obiektu w języku Java