what is java awt
Denna Java AWT-handledning förklarar vad som är Abstract Window Toolkit i Java och relaterade begrepp som AWT Color, Point, Graphics, AWT vs Swing, etc:
Vi introducerades till de grundläggande GUI-termerna i en av våra tidigare handledning. I denna handledning kommer vi att diskutera en av de äldsta GUI-ramarna i Java som heter 'AWT Framework'. AWT är kortformuläret för “Abstract Window Toolkit”.
AWT är ett API för att skapa GUI-applikationer i Java. Det är ett plattformsberoende ramverk, dvs GUI-komponenterna som tillhör AWT är inte desamma över alla plattformar. Enligt plattformens utseende och känsla förändras utseendet på AWT-komponenterna också.
=> Kontrollera ALLA Java-handledning här.
Vad du kommer att lära dig:
JAVA AWT (Abstract Window Toolkit)
Java AWT skapar komponenter genom att anropa underrutinerna för infödda plattformar. Därför kommer ett AWT GUI-program att se ut som Windows OS när det körs på Windows och Mac OS ser ut och känns när det körs på Mac och så vidare. Detta förklarar plattformsberoendet för Abstract Window Toolkit-applikationer.
På grund av dess plattformsberoende och dess typ av komponenter av tung vikt används det sällan i Java-applikationer idag. Dessutom finns det också nyare ramar som Swing som är lätta och plattformsoberoende.
Swing har mer flexibla och kraftfulla komponenter jämfört med AWT. Swing tillhandahåller komponenter som liknar Abstract Window Toolkit och har också mer avancerade komponenter som träd, flikpaneler etc.
Men en sak att notera här är att Java Swing-ramverk är baserad på AWT. Med andra ord är Swing ett förbättrat API och det utökar ramarna för Abstract Window Toolkit. Så innan vi hoppar in i Swing-självstudier, låt oss få en översikt över detta ramverk.
AWT-hierarki och komponenter
Låt oss nu se hur Abstract Window Toolkit-hierarkin i Java ser ut.
Nedan visas diagrammet för AWT-hierarkin i Java.
Som visas i figuren ovan sträcker sig AWT-komponenten 'Component' från klass 'Object'. Komponentklassen är överordnad till de andra komponenterna inklusive etikett, knapp, lista, kryssruta, val, behållare etc.
En container är vidare uppdelad i paneler och fönster. En appletklass härrör från Panel medan Frame och Dialog härrör från Window-komponenten.
Låt oss nu kort diskutera dessa komponenter.
Komponentklass
Komponentklassen är roten till hierarkin. En komponent är en abstrakt klass och ansvarar för den aktuella bakgrunds- och förgrundsfärgen samt det aktuella textteckensnittet.
Komponentklassen inkapslar de visuella komponentegenskaperna och attributen.
Behållare
Container-AWT-komponenter kan innehålla andra komponenter som text, etiketter, knappar, tabeller, listor etc. Containern håller en flik över andra komponenter som läggs till i GUI.
Panel
Panelen är en underklass av Container-klassen. En panel är en konkret klass och innehåller inte titel, ram eller menyrad. Det är en behållare för att rymma de andra komponenterna. Det kan finnas mer än en panel i en ram.
Fönster klass
Windows-klass är ett fönster på högsta nivå och vi kan använda ramar eller dialogrutor för att skapa ett fönster. Ett fönster har inte ramar eller menyrader.
Ram
Ram kommer från fönstret och kan ändras. En ram kan innehålla olika komponenter som knapp, etiketter, fält, namnlist etc. Ramen används i de flesta applikationerna för abstrakt fönsterverktyg.
visa länkad lista c ++
En ram kan skapas på två sätt:
# 1) Genom att använda ramklassobjektet
Här skapar vi ett ramklassobjekt genom att starta ramklassen.
Ett programmeringsexempel ges nedan.
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 (); } }
Produktion:
# 2) Genom att utvidga ramklassen
Här skapar vi en klass som utökar ramklassen och sedan skapar komponenter i ramen i sin konstruktör.
Detta visas i programmet nedan.
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 (); } }
Produktion:
AWT-färgklass
AWT-utdata som vi har visat ovan hade standardfärger för bakgrund och förgrund. Abstract Window Toolkit tillhandahåller en färgklass som används för att skapa och ställa in färgen på komponenter. Vi kan också ställa in färgerna till komponenter med hjälp av ett ramverk via komponentegenskaper.
Färgklassen tillåter oss att göra samma program. För detta ändamål använder Color-klassen RGBA-färgmodellen (RGBA = RÖD, GRÖN, BLÅ, ALPHA) eller HSB (HSB = HUE, Mättnad, BRIC-komponenter).
Vi kommer inte att gå in på detaljerna i den här klassen, eftersom det ligger utanför ramen för denna handledning.
Följande tabell listar de olika metoderna som tillhandahålls av färgklassen.
Konstruktör / metoder | Beskrivning |
---|---|
getBlue () | Returnerar blå färgkomponent i intervallet 0-255. |
ljusare () | Skapa en ljusare version av den aktuella färgen. |
createContext (ColorModel cm, Rectangle r, Rectangle2D r2d, AffineTransform x, RenderingHints h) | Returnerar en ny PaintContext. |
mörkare () | Skapar en mörkare version av den aktuella färgen. |
avkoda (sträng nm) | Returnerar en specificerad ogenomskinlig färg genom att konvertera strängen till ett heltal. |
lika med (Objekt obj) | Kontrollerar om det angivna färgobjektet är lika med det aktuella objektet. |
getAlpha () | Returnerar alfavärdet för färg som sträcker sig från 0-255. |
getColor (sträng nm) | Returnerar en färg från systemegenskaperna. |
getColor (sträng nm, färg v) | |
getColor (String nm, int v) | |
getColorComponents (ColorSpace cspace, float () compArray) | Returnerar en matris av typfloat som innehåller färgkomponenterna från det angivna ColorSpace. |
getColorComponents (float () compArray) | Returnerar en matris av typfloat som innehåller färgkomponenterna från ColorSpace för Color. |
getColorSpace () | returnerar ColorSpace för den aktuella färgen. |
getGreen () | Returnerar grön färgkomponent i intervallet 0-255 i standard sRGB-utrymme. |
getRed () | Returnerar röd färgkomponent i intervallet 0-255 i standard sRGB-utrymme. |
getRGB () | Returnerar RGB-värdet för den aktuella färgen i standard sRGB ColorModel. |
getHSBColor (float h, float s, float b) | Skapar ett färgobjekt med hjälp av HSB-färgmodellen med angivna värden. |
getTransparency () | returnerar transparensvärdet för den här färgen. |
hash-kod() | Returnerar hashkod för den här färgen. |
HSBtoRGB (flottör h, flottör s, flottör b) | Konvertera den givna HSB till ett RGB-värde |
RGBtoHSB (int r, int g, int b, float () hsbvals) | konverterar givna RGB-värden till HSB-värden. |
AWT-punkt i Java
Poängklassen används för att ange en plats. Platsen är från ett tvådimensionellt koordinatsystem.
Metoder | Beskrivning |
---|---|
att stränga() | Returnera strängrepresentationen för punkten. |
är lika med (Objekt) | Kontrollera om två poäng är lika. |
getLocation () | Returnera platsen för den aktuella punkten. |
hash-kod() | Returnerar hashkoden för den aktuella punkten. |
flytta (int, int) | Flyttar den angivna punkten till den angivna platsen i (x, y) koordinatsystemet. |
setLocation (int, int) | Ändrar punktplatsen till den angivna platsen. |
setLocation (Point) | Ställer in platsen för punkten till den angivna platsen. |
översätt (int, int) | Översätt aktuell punkt till punkt vid x + dx, y + dy. |
AWT-grafikklass
Alla grafiska sammanhang i Abstract Window Toolkit för att rita komponenter i en applikation härrör från grafikklassen. Ett grafikklassobjekt innehåller den tillståndsinformation som behövs för att återge operationer.
Tillståndsinformationen innehåller vanligtvis:
- Vilken komponent ska ritas?
- Rendering och klippning av koordinater.
- Den aktuella färgen, teckensnittet och klippet.
- Den aktuella åtgärden på den logiska pixeln.
- Den aktuella XOR-färgen
Grafikklassens allmänna förklaring är följande:
public abstract class Graphics extends Object
AWT Headless Mode och Headlessexception
När vi har ett krav på att vi ska arbeta med den grafikbaserade applikationen men utan ett verkligt tangentbord, en mus eller till och med en bildskärm, så kallas det en ”huvudlös” miljö.
JVM bör vara medveten om en sådan huvudlös miljö. Vi kan också ställa in den huvudlösa miljön med hjälp av Abstract Window Toolkit.
Det finns vissa sätt att göra detta enligt nedan:
# 1) Ställ systemegenskapen 'java.awt.headless' till true med programmeringskoden.
#två) Använd kommandoraden för att ställa in följande egenskap utan huvudläge till sann:
använder matriser i funktioner c ++
java -Djava.awt.headless = sant
# 3) Lägg till '-Djava.awt.headless = true' till miljövariabeln 'JAVA_OPTS' med hjälp av ett serverstartskript.
När miljön är utan huvud och vi har en kod som är beroende av skärm, tangentbord eller mus, och när den här koden körs i en huvudlös miljö höjs undantaget 'HeadlessException'.
Den allmänna förklaringen om HeadlessException ges nedan:
public class HeadlessException extends UnsupportedOperationException
Vi går till huvudlöst läge i applikationer som kräver till exempel bildbaserad inloggning. Till exempel, om vi vill ändra bilden med varje inloggning eller varje gång sidan uppdateras, så laddar vi i sådana fall bilden och vi behöver inte tangentbord, mus etc.
Java AWT Vs Swing
Låt oss nu titta på några av skillnaderna mellan Java AWT och Swing.
AWT | Gunga |
---|---|
AWT fungerar med 21 kamrater eller widgets i operativsystemet som motsvarar varje komponent. | Swing fungerar bara med en kollega som är Window Object. Alla andra komponenter ritas av Swing inuti Window-objektet. |
AWT står för 'Abstract Windows Toolkit'. | Swing kommer från Java Foundation Classes (JFC). |
AWT-komponenter är tunga eftersom AWT direkt ringer underrutiner till operativsystemets underrutiner. | Gungkomponenter skrivs ovanpå AWT och därför är komponenterna lätta. |
AWT-komponenter ingår i paketet java.awt. | Gungkomponenter är en del av paketet javax.swing. |
AWT är plattformsberoende. | Swing-komponenter är skrivna i Java och är plattformsoberoende. |
AWT har inte sitt utseende. Den anpassar utseendet och känslan på plattformen där den körs. | Swing ger ett annat utseende och en annan känsla. |
AWT har bara grundläggande funktioner och stöder inte avancerade funktioner som tabellen, flikpanelen etc. | Swing ger avancerade funktioner som JTabbed-panel, JTable, etc. |
AWT är lika bra som ett tunt lager av klasser som sitter ovanpå operativsystemet vilket gör det plattformsberoende. | Swing är större och innehåller också rik funktionalitet. |
AWT får oss att skriva många saker. | Swing har de flesta inbyggda funktioner. |
Vanliga frågor
F # 1) Vad är AWT i Java?
Svar: AWT i Java även känt som “Abstract Window Toolkit” som är ett plattformsberoende grafiskt ram för användargränssnitt som föregår Swing-ramverket. Det är en del av Java-standard GUI API, Java Foundation Classes eller JFC.
F # 2) Används Java AWT fortfarande?
Svar: Det är nästan föråldrat i Java som spärrar några komponenter som fortfarande används. Det finns också fortfarande några gamla applikationer eller program som körs på äldre plattformar som använder AWT.
F # 3) Vad är AWT och Swing i Java?
Svar: Abstract Window-verktygslåda är ett plattformsberoende API för att utveckla GUI-applikationer i Java. En gunga å andra sidan är ett API för GUI-utveckling och härrör från Java Foundation Classes (JFC). AWT-komponenter är tunga medan Swing-komponenter är lätta.
F # 4) Vad är ramen i Java AWT?
Svar: En ram kan definieras som det översta komponentfönstret som har en titel och en ram. Ramen har 'Gränslayout' som standardlayout. Ramar genererar också Windows-händelser som Stäng, Öppnat, Stängning, Aktivera, Inaktiverad, etc.
F # 5) Vad är import av Java AWT?
Svar: Importera Java AWT (import java.awt. *) Indikerar att vi behöver AWT API: s funktionalitet i vårt program så att vi kan använda dess komponenter som TextFields, Buttons, Labels, List, etc.
Slutsats
I denna handledning diskuterade vi översikten över Abstract Window Toolkit, som ett plattformsberoende API för GUI-utveckling i Java. Det är nästan föråldrat i Java och ersätts av andra API: er som Swings och JavaFX.
Vi har inte gått in på detaljerna i alla komponenter i Abstract Window Toolkit eftersom de sällan används nu. Därför diskuterade vi bara komponenter som ramar, färg etc. och det huvudlösa läget som ställs in med AWT.
I nästa handledning börjar vi med Java Swing-handledning och vi kommer att diskutera dem i detalj eftersom de flesta Java-applikationer idag använder Swing för GUI-utveckling.
=> Se upp den enkla Java-träningsserien här.
Rekommenderad läsning
- Java-gränssnitt och abstrakt klasshandledning med exempel
- Java Basics: Java Syntax, Java Class och Core Java Concepts
- Java-heltal och Java BigInteger-klass med exempel
- Typer av klasser i Java: Abstrakt, Betong, Slutlig, Statisk
- Java-distribution: Skapande och utförande av Java JAR-fil
- Java Scanner-klasshandledning med exempel
- Privata, abstrakta, array- och strängkonstruktörer i Java
- Java Class Vs Object - Hur man använder klass och objekt i Java