what is java awt
Tento výukový program Java AWT vysvětluje, co je Abstract Window Toolkit v Javě a související pojmy jako AWT Color, Point, Graphics, AWT vs Swing atd.:
V jednom z našich dřívějších výukových programů jsme se seznámili se základními pojmy grafického uživatelského rozhraní. V tomto tutoriálu probereme jeden z nejstarších rámců GUI v Javě s názvem „AWT Framework“. AWT je zkratka pro „Abstract Window Toolkit“.
AWT je API pro vytváření aplikací GUI v Javě. Jedná se o platformu závislý rámec, tj. Komponenty grafického uživatelského rozhraní patřící k AWT nejsou na všech platformách stejné. Podle nativního vzhledu a chování platformy se také mění vzhled a chování komponent AWT.
=> Zkontrolujte VŠECHNY výukové programy Java zde.
Co se naučíte:
JAVA AWT (Abstract Window Toolkit)
Java AWT vytváří komponenty voláním podprogramů nativních platforem. Aplikace AWT GUI proto bude mít vzhled a dojem operačního systému Windows při běhu na Windows a vzhled a chování Mac OS při běhu na Macu a tak dále. To vysvětluje platformovou závislost aplikací Abstract Window Toolkit.
Díky své závislosti na platformě a jakési těžké povaze svých komponent se dnes v aplikacích Java používá jen zřídka. Kromě toho existují také novější rámce jako Swing, které jsou lehké a nezávislé na platformě.
Swing má ve srovnání s AWT flexibilnější a výkonnější komponenty. Swing poskytuje komponenty podobné nástroji Abstract Window Toolkit a má také pokročilejší komponenty, jako jsou stromy, panely s kartami atd.
Zde je však třeba si uvědomit, že Rámec Java Swing je založen na AWT. Jinými slovy, Swing je vylepšené API a rozšiřuje rámec Abstract Window Toolkit. Než tedy skočíme do výukových programů Swing, pojďme získat přehled o tomto rámci.
Hierarchie AWT a komponenty
Nyní se podívejme, jak vypadá hierarchie sady abstraktních oken v Javě.
Níže je uveden diagram hierarchie AWT v Javě.
Jak je znázorněno na obrázku výše, kořenová složka AWT „Component“ vychází ze třídy „Object“. Třída komponenty je nadřazenou součástí dalších komponent, včetně štítků, tlačítek, seznamu, zaškrtávacích políček, voleb, kontejnerů atd.
Kontejner je dále rozdělen na panely a okna. Třída appletu je odvozena z panelu, zatímco rám a dialog jsou odvozeny z komponenty okna.
Nyní pojďme stručně diskutovat o těchto součástech.
Třída součásti
Třída Component je kořenem hierarchie. Komponenta je abstraktní třída a je zodpovědná za aktuální barvy pozadí a popředí i za aktuální písmo textu.
Třída komponenty zapouzdřuje vlastnosti a atributy vizuální komponenty.
Kontejner
Součásti kontejneru AWT mohou obsahovat další součásti, jako je text, štítky, tlačítka, tabulky, seznamy atd. Kontejner udržuje kartu na dalších součástech, které jsou přidány do grafického uživatelského rozhraní.
Panel
Panel je podtřídou třídy Container. Panel je konkrétní třída a neobsahuje nadpis, ohraničení ani lištu nabídek. Jedná se o kontejner k uložení ostatních komponent. V rámečku může být více než jeden panel.
Třída okna
Třída Windows je okno na nejvyšší úrovni a k vytvoření okna můžeme použít rámečky nebo dialogy. Okno nemá ohraničení ani pruhy nabídek.
Rám
Rám pochází z třídy Window a lze jej změnit. Rámeček může obsahovat různé komponenty, jako je tlačítko, štítky, pole, záhlaví atd. Rámeček se používá ve většině aplikací Abstract Window Toolkit.
jak postavit firewall pro Windows
Rámeček lze vytvořit dvěma způsoby:
# 1) Použitím objektu třídy Frame
Zde vytvoříme objekt třídy Frame vytvořením instance třídy Frame.
Níže je uveden příklad programování.
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 (); } }
Výstup:
# 2) Rozšířením třídy Frame
Zde vytvoříme třídu, která rozšiřuje třídu Frame, a poté v jejím konstruktoru vytvoříme komponenty rámce.
To se zobrazuje v níže uvedeném programu.
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 (); } }
Výstup:
Barevná třída AWT
Výstup AWT, který jsme si ukázali výše, měl výchozí barvy pozadí a popředí. Sada nástrojů pro abstraktní okna poskytuje třídu Color, která se používá k vytvoření a nastavení barvy komponent. Můžeme také nastavit barvy na komponenty pomocí rámce prostřednictvím vlastností komponent.
Třída Color nám umožňuje programově to samé. Za tímto účelem používá třída Color barevný model RGBA (RGBA = RED, GREEN, BLUE, ALPHA) nebo model HSB (HSB = HUE, SATURATION, BRIComponents).
Nebudeme zacházet do podrobností o této třídě, protože to je nad rámec tohoto kurzu.
V následující tabulce jsou uvedeny různé metody poskytované třídou Color.
Konstruktor / metody | Popis |
---|---|
getBlue () | Vrátí modrou barevnou složku v rozsahu 0-255. |
jasnější () | Vytvořte jasnější verzi aktuální barvy. |
createContext (ColorModel cm, Rectangle r, Rectangle2D r2d, AffineTransform x, RenderingHints h) | Vrátí nový PaintContext. |
tmavší () | Vytvoří tmavší verzi aktuální barvy. |
dekódovat (String nm) | Vrátí zadanou neprůhlednou barvu převedením řetězce na celé číslo. |
rovná se (Object obj) | Zkontroluje, zda se daný barevný objekt rovná aktuálnímu objektu. |
getAlpha () | Vrátí hodnotu alfa barvy v rozsahu 0-255. |
getColor (String nm) | Vrátí barvu z vlastností systému. |
getColor (String nm, Color v) | |
getColor (String nm, int v) | |
getColorComponents (ColorSpace cspace, float () compArray) | Vrátí pole typu float obsahující barevné komponenty ze zadaného ColorSpace. |
getColorComponents (float () compArray) | Vrátí pole typu float obsahující barevné komponenty z ColorSpace Color. |
getColorSpace () | vrátí ColorSpace aktuální Color. |
getGreen () | Vrátí složku zelené barvy v rozsahu 0-255 ve výchozím prostoru sRGB. |
getRed () | Vrátí komponentu červené barvy v rozsahu 0-255 ve výchozím prostoru sRGB. |
getRGB () | Vrátí hodnotu RGB aktuální barvy ve výchozím sRGB ColorModel. |
getHSBColor (float h, float s, float b) | Vytvoří Color objekt pomocí barevného modelu HSB se zadanými hodnotami. |
getTransparency () | vrátí hodnotu průhlednosti pro tuto barvu. |
hashCode () | Vrátí hash kód pro tuto barvu. |
HSBtoRGB (float h, float s, float b) | Převeďte daný HSB na hodnotu RGB |
RGBtoHSB (int r, int g, int b, float () hsbvals) | převede dané hodnoty RGB na hodnoty HSB. |
AWT Point v Javě
Point Třída se používá k označení umístění. Umístění pochází z dvourozměrného souřadného systému.
Metody | Popis |
---|---|
toString () | Vrátí řetězcové vyjádření bodu. |
rovná se (Objekt) | Zkontrolujte, zda jsou dva body stejné. |
getLocation () | Vrátí polohu aktuálního bodu. |
hashCode () | Vrátí hashcode pro aktuální bod. |
přesunout (int, int) | Přesune daný bod na dané místo v souřadném systému (x, y). |
setLocation (int, int) | Změní umístění bodu na zadané umístění. |
setLocation (bod) | Nastaví umístění bodu na dané místo. |
přeložit (int, int) | Přeložit aktuální bod na bod na x + dx, y + dy. |
Grafická třída AWT
Všechny grafické kontexty v nástroji Abstract Window Toolkit pro kreslení komponent v aplikaci pocházejí z třídy Graphics. Objekt třídy Graphics obsahuje informace o stavu potřebné k vykreslení operací.
Informace o stavu obvykle obsahují:
- Který komponent má být nakreslen?
- Vykreslování a ořezávání souřadnic.
- Aktuální barva, písmo a klip.
- Aktuální operace na logickém pixelu.
- Aktuální barva XOR
Obecná deklarace třídy Graphics je následující:
public abstract class Graphics extends Object
Bezhlavý režim AWT a výjimka bez hlavy
Když máme požadavek, že bychom měli pracovat s grafickou aplikací, ale bez skutečné klávesnice, myši nebo dokonce displeje, pak se tomu říká „bezhlavé“ prostředí.
který z následujících není ve stavu testování systému?
Společnost JVM by si měla být vědoma takového bezhlavého prostředí. Prostředí Abstract Window Toolkit můžeme také nastavit bezhlavé prostředí.
Existuje několik způsobů, jak to provést, jak je uvedeno níže:
# 1) Pomocí programovacího kódu nastavte systémovou vlastnost „java.awt.headless“ na hodnotu true.
#dva) Pomocí příkazového řádku nastavte následující vlastnost bezhlavého režimu na true:
java -Djava.awt.headless = true
# 3) Přidejte „-Djava.awt.headless = true“ do proměnné prostředí s názvem „JAVA_OPTS“ pomocí spouštěcího skriptu serveru.
Když je prostředí bez hlavy a máme kód, který je závislý na displeji, klávesnici nebo myši, a když je tento kód spuštěn v bezhlavém prostředí, je vyvolána výjimka „HeadlessException“.
Obecná deklarace HeadlessException je uvedena níže:
public class HeadlessException extends UnsupportedOperationException
Jdeme do bezhlavého režimu v aplikacích, které vyžadují například přihlašování obrázků na základě obrázků. Například, pokud chceme změnit obrázek při každém přihlášení nebo při každé aktualizaci stránky, načteme v takových případech obrázek a nevyžadujeme klávesnici, myš atd.
Java AWT Vs Swing
Podívejme se nyní na některé rozdíly mezi Java AWT a Swing.
AWT | Houpačka |
---|---|
AWT pracuje s 21 partnery nebo widgety operačního systému, které odpovídají každé komponentě. | Swing pracuje pouze s jedním vrstevníkem, kterým je Window Object. Všechny ostatní komponenty jsou kresleny Swingem uvnitř okna. |
AWT je zkratka pro „Abstract Windows Toolkit“. | Swing je odvozen z Java Foundation Classes (JFC). |
Komponenty AWT jsou těžké, protože AWT přímo provádí volání podprogramů do podprogramů operačního systému. | Swing komponenty jsou psány na AWT a jako takové jsou komponenty lehké. |
Součásti AWT jsou součástí balíčku java.awt. | Swing komponenty jsou součástí balíčku javax.swing. |
AWT závisí na platformě. | Swing komponenty jsou psány v Javě a jsou nezávislé na platformě. |
AWT nemá svůj vzhled a dojem. Přizpůsobuje vzhled a chování platformy, na které běží. | Swing poskytuje svůj vlastní odlišný vzhled a dojem. |
AWT má pouze základní funkce a nepodporuje pokročilé funkce, jako je tabulka, panel s kartami atd. | Swing poskytuje pokročilé funkce, jako je panel JTabbed, JTable atd. |
AWT je stejně dobrá jako tenká vrstva tříd, která sedí na vrcholu operačního systému, díky čemuž je závislá na platformě. | Swing je větší a obsahuje také bohatou funkčnost. |
AWT nás nutí psát spoustu věcí. | Swing má zabudovanou většinu funkcí. |
Často kladené otázky
Otázka č. 1) Co je AWT v Javě?
Odpovědět: AWT v Javě také známý jako „Abstract Window Toolkit“, což je platforma závislá na grafickém uživatelském rozhraní, která předchází rámci Swing. Je součástí standardního Java GUI API, Java Foundation Classes nebo JFC.
Otázka 2) Je Java AWT stále používána?
Odpovědět: V Javě je téměř zastaralé, kromě několika komponent, které se stále používají. Stále existují některé staré aplikace nebo programy spuštěné na starších platformách, které používají AWT.
Otázka č. 3) Co je AWT a Swing v Javě?
Odpovědět: Sada nástrojů Abstract Window je platformově závislé API pro vývoj aplikací GUI v Javě. Swing na druhé straně je API pro vývoj GUI a je odvozen od Java Foundation Classes (JFC). Komponenty AWT jsou těžké, zatímco komponenty Swing jsou lehké.
Otázka č. 4) Jaký je rámec v Java AWT?
Odpovědět: Rámeček lze definovat jako okno komponenty nejvyšší úrovně, které má nadpis a ohraničení. Rám má jako výchozí rozvržení „Rozvržení okraje“. Rámečky také generují události systému Windows, jako je zavření, otevření, zavření, aktivace, deaktivace atd.
Otázka č. 5) Co je import Java AWT?
Odpovědět: Import Java AWT (import java.awt. *) Naznačuje, že v našem programu potřebujeme funkčnost AWT API, abychom mohli používat jeho komponenty jako TextFields, Buttons, Labels, List atd.
Závěr
V tomto tutoriálu jsme probrali přehled nástroje Abstract Window Toolkit jako API závislého na platformě pro vývoj GUI v Javě. V Javě je téměř zastaralý a nahrazují ho další API, jako jsou Swings a JavaFX.
Nezacházeli jsme do podrobností všech komponent nástroje Abstract Window Toolkit, protože se nyní používají jen zřídka. Proto jsme diskutovali pouze o součástech, jako jsou rámečky, barvy atd., A bezhlavý režim nastavený pomocí AWT.
V dalším kurzu začneme s výukovými programy Java Swing a podrobně je probereme, protože většina aplikací Java dnes používá Swing pro vývoj GUI.
=> Dávejte pozor na jednoduchou sérii školení Java zde.
Doporučené čtení
- Výukový program pro rozhraní Java a abstraktní třídu s příklady
- Základy jazyka Java: Syntaxe jazyka Java, třída Java a základní koncepty Java
- Celé číslo Java a třída Java BigInteger s příklady
- Typy tříd v Javě: abstraktní, konkrétní, konečné, statické
- Implementace Java: Vytvoření a spuštění souboru Java JAR
- Výukový program třídy skeneru Java s příklady
- Soukromé, abstraktní, maticové a řetězcové konstruktory v Javě
- Objekt Java Class Vs - Jak používat třídu a objekt v Javě