what is java awt
Deze Java AWT-zelfstudie legt uit wat Abstract Window Toolkit in Java is en gerelateerde concepten zoals AWT Color, Point, Graphics, AWT vs Swing, enz.:
We hebben in een van onze eerdere tutorials kennis gemaakt met de basis-GUI-termen. In deze tutorial bespreken we een van de oudste GUI-frameworks in Java genaamd 'AWT Framework'. AWT is de korte vorm voor 'Abstract Window Toolkit'.
AWT is een API voor het maken van GUI-applicaties in Java. Het is een platformafhankelijk raamwerk, d.w.z. dat de GUI-componenten die bij AWT horen niet op alle platforms hetzelfde zijn. Volgens de native look en feel van het platform, verandert ook de look en feel van de AWT-componenten.
Bekijk hier ALLE Java-tutorials.
Wat je leert:
JAVA AWT (Toolkit voor abstracte vensters)
De Java AWT maakt componenten door de subroutines van native platforms aan te roepen. Daarom zal een AWT GUI-applicatie het uiterlijk hebben van Windows OS terwijl het op Windows wordt uitgevoerd en Mac OS het uiterlijk en gevoel wanneer het op Mac wordt uitgevoerd, enzovoort. Dit verklaart de platformafhankelijkheid van Abstract Window Toolkit-applicaties.
Vanwege zijn platformafhankelijkheid en een soort zwaargewicht van zijn componenten, wordt het tegenwoordig zelden gebruikt in Java-applicaties. Daarnaast zijn er ook nieuwere frameworks zoals Swing die lichtgewicht en platformonafhankelijk zijn.
Swing heeft meer flexibele en krachtige componenten in vergelijking met AWT. Swing biedt componenten die lijken op de Abstract Window Toolkit en heeft ook meer geavanceerde componenten zoals bomen, panelen met tabbladen, enz.
Maar een ding om op te merken is dat de Java Swing-framework is gebaseerd op de AWT. Met andere woorden, Swing is een verbeterde API en breidt het Abstract Window Toolkit-framework uit. Dus voordat we naar Swing-tutorials gaan, laten we eerst een overzicht van dit framework bekijken.
AWT-hiërarchie en componenten
Laten we nu eens kijken hoe de hiërarchie van de Abstract Window Toolkit in Java eruitziet.
Hieronder is het diagram van de AWT-hiërarchie in Java weergegeven.
Zoals weergegeven in de bovenstaande afbeelding, strekt de root AWT-component ‘Component’ zich uit van de klasse ‘Object’. De componentklasse is de ouder van de andere componenten, waaronder Label, Button, List, Checkbox, Choice, Container, etc.
Een container is verder onderverdeeld in panelen en ramen. Een Applet-klasse is afgeleid van Panel, terwijl Frame en Dialog zijn afgeleid van de Window-component.
Laten we deze componenten nu kort bespreken.
Component Klasse
De Component-klasse is de wortel van de hiërarchie. Een Component is een abstracte klasse en is verantwoordelijk voor de huidige achtergrond- en voorgrondkleuren en voor het huidige tekstlettertype.
De componentklasse omvat de eigenschappen en attributen van de visuele componenten.
Container
Container AWT-componenten kunnen andere componenten bevatten, zoals tekst, labels, knoppen, tabellen, lijsten, etc. De container houdt een tabblad bij van andere componenten die aan de GUI zijn toegevoegd.
Paneel
Het paneel is een subklasse van de klasse Container. Een paneel is een concrete klasse en bevat niet de titel, rand of menubalk. Het is een container om de andere componenten in te bewaren. Er kan meer dan één paneel in een frame zitten.
Venster klasse
Windows-klasse is een venster op het hoogste niveau en we kunnen frames of dialoogvensters gebruiken om een venster te maken. Een venster heeft geen randen of menubalken.
Kader
Frame is afgeleid van de klasse Window en kan worden vergroot of verkleind. Een frame kan verschillende componenten bevatten zoals knoppen, labels, velden, titelbalk, etc. Het frame wordt gebruikt in de meeste Abstract Window Toolkit-applicaties.
de beste gratis muziekdownloader voor Android
Een frame kan op twee manieren worden gemaakt:
# 1) Door het klasseobject Frame te gebruiken
Hier maken we een klasse-object Frame door de klasse Frame te instantiëren.
Hieronder wordt een programmeervoorbeeld gegeven.
Uitgang:
# 2) Door de Frame-klasse uit te breiden
Hier maken we een klasse die de klasse Frame uitbreidt en vervolgens componenten van het frame in de constructor maken.
Dit wordt weergegeven in onderstaand programma.
Uitgang:
AWT-kleurklasse
De AWT-uitvoer die we hierboven hebben getoond, had standaardkleuren voor achtergrond en voorgrond. Abstract Window Toolkit biedt een kleurklasse die wordt gebruikt om de kleur van componenten te maken en in te stellen. We kunnen de kleuren van componenten ook instellen met behulp van een raamwerk via componenteigenschappen.
De klasse Color stelt ons programmatisch hetzelfde. Hiervoor gebruikt de klasse Color het RGBA-kleurmodel (RGBA = RED, GREEN, BLUE, ALPHA) of HSB (HSB = HUE, SATURATION, BRIComponents).
We zullen niet ingaan op de details van deze les, aangezien deze buiten het bestek van deze tutorial valt.
De volgende tabel geeft een overzicht van de verschillende methoden die door de klasse Color worden geboden.
Constructor / methoden | Omschrijving |
---|---|
getBlue () | Retourneert een blauwe kleurcomponent in het bereik van 0-255. |
helderder () | Maak een helderdere versie van de huidige kleur. |
createContext (ColorModel cm, Rectangle r, Rectangle2D r2d, AffineTransform x, RenderingHints h) | Retourneert een nieuwe PaintContext. |
donkerder () | Creëert een donkerdere versie van de huidige kleur. |
decoderen (String nm) | Retourneert een opgegeven dekkende kleur door de tekenreeks in een geheel getal te converteren. |
is gelijk aan (Object obj) | Controleert of het gegeven kleurobject gelijk is aan het huidige object. |
getAlpha () | Retourneert de alpha-waarde van kleur, variërend van 0-255. |
getColor (String nm) | Retourneert een kleur uit de systeemeigenschappen. |
getColor (String nm, kleur v) | |
getColor (String nm, int v) | |
getColorComponents (ColorSpace cspace, float () compArray) | Retourneert een array van het type float met daarin de kleurcomponenten van de opgegeven ColorSpace. |
getColorComponents (float () compArray) | Retourneert een array van het type float met de kleurcomponenten uit de ColorSpace van de kleur. |
getColorSpace () | geeft de ColorSpace van de huidige Color terug. |
getGreen () | Retourneert een groene kleurcomponent in het bereik van 0-255 in de standaard sRGB-ruimte. |
getRed() | Retourneert de rode kleurcomponent in het bereik 0-255 in de standaard sRGB-ruimte. |
getRGB() | Retourneert de RGB-waarde van de huidige kleur in het standaard sRGB ColorModel. |
getHSBColor (float h, float s, float b) | Maakt een kleurobject met behulp van het HSB-kleurmodel met gespecificeerde waarden. |
getTransparency () | geeft de transparantiewaarde voor deze kleur terug. |
hashCode () | Retourneert hashcode voor deze kleur. |
HSBtoRGB (float h, float s, float b) | Converteer de gegeven HSB naar een RGB-waarde |
RGBtoHSB (int r, int g, int b, float () hsbvals) | converteert de gegeven RGB-waarden naar HSB-waarden. |
AWT-punt in Java
De klasse Point wordt gebruikt om een locatie aan te geven. De locatie is van een tweedimensionaal coördinatensysteem.
Methoden | Omschrijving |
---|---|
toString () | Retourneer de tekenreeksweergave van het punt. |
is gelijk aan (Object) | Controleer of twee punten gelijk zijn. |
getLocation () | Retourneer de locatie van het huidige punt. |
hashCode () | Retourneert de hashcode voor het huidige punt. |
verplaatsen (int, int) | Verplaatst het gegeven punt naar de gegeven locatie in het (x, y) -coördinatensysteem. |
setLocation (int, int) | Verandert de puntlocatie naar de opgegeven locatie. |
setLocation (punt) | Stelt de locatie van het punt in op de opgegeven locatie. |
vertalen (int, int) | Vertaal het huidige punt zodat het naar x + dx, y + dy wijst. |
AWT grafische klasse
Alle grafische contexten in de Abstract Window Toolkit om componenten in een toepassing te tekenen, zijn afgeleid van de klasse Graphics. Een klasse-object Graphics bevat de statusinformatie die nodig is om bewerkingen weer te geven.
De statusinformatie bevat doorgaans:
- Welk onderdeel moet worden getekend?
- Coördinaten renderen en knippen.
- De huidige kleur, lettertype en clip.
- De huidige bewerking op de logische pixel.
- De huidige XOR-kleur
De algemene verklaring van de klasse Graphics is als volgt:
AWT Headless Mode en Headlessexception
Als we een vereiste hebben dat we moeten werken met de grafische applicatie, maar zonder een echt toetsenbord, muis of zelfs maar beeldscherm, dan wordt dit een 'headless' -omgeving genoemd.
JVM moet zich bewust zijn van een dergelijke headless-omgeving. We kunnen ook de headless-omgeving instellen met behulp van de Abstract Window Toolkit.
Er zijn bepaalde manieren om dit te doen, zoals hieronder wordt weergegeven:
defecte levenscyclus bij het testen van software
# 1) Stel de systeemeigenschap 'java.awt.headless' in op true met behulp van de programmeercode.
#twee) Gebruik de opdrachtregel om de volgende eigenschap van de headless-modus in te stellen op true:
java -Djava.awt.headless = waar
# 3) Voeg '-Djava.awt.headless = true' toe aan de omgevingsvariabele 'JAVA_OPTS' met behulp van een serveropstartscript.
Als de omgeving headless is en we een code hebben die afhankelijk is van het beeldscherm, het toetsenbord of de muis, en als deze code wordt uitgevoerd in een headless-omgeving, wordt de uitzondering 'HeadlessException' opgeworpen.
De algemene verklaring van HeadlessException wordt hieronder gegeven:
We gaan voor de headless-modus in applicaties die bijvoorbeeld image-based image login vereisen. Bijvoorbeeld, als we de afbeelding willen wijzigen bij elke login of elke keer dat de pagina wordt vernieuwd, dan laden we in dergelijke gevallen de afbeelding en hebben we geen toetsenbord, muis, enz. nodig.
Java AWT versus Swing
Laten we nu eens kijken naar enkele verschillen tussen Java AWT en Swing.
AWT | Schommel |
---|---|
AWT werkt met 21 peers of widgets van het besturingssysteem die overeenkomen met elk onderdeel. | Swing werkt met slechts één peer die Window Object is. Alle andere componenten worden getekend door Swing inside the Window-object. |
AWT staat voor 'Abstract Windows Toolkit'. | Swing is afgeleid van Java Foundation Classes (JFC). |
AWT-componenten zijn zwaar omdat AWT direct subroutine-oproepen doet naar subroutines van het besturingssysteem. | Swing-componenten zijn bovenop AWT geschreven en als zodanig zijn de componenten licht van gewicht. |
AWT-componenten maken deel uit van het pakket java.awt. | Swing-componenten maken deel uit van het javax.swing-pakket. |
AWT is platformafhankelijk. | Swing-componenten zijn geschreven in Java en zijn platformonafhankelijk. |
AWT heeft niet zijn look en feel. Het past de look en feel aan van het platform waarop het draait. | Swing geeft een geheel eigen look en feel. |
AWT heeft alleen basisfuncties en ondersteunt geen geavanceerde functies zoals de tafel, het paneel met tabbladen, enz. | Swing biedt geavanceerde functies zoals JTabbed-paneel, JTable, enz. |
AWT is zo goed als een dunne laag klassen die bovenop het besturingssysteem zitten, waardoor het platformafhankelijk is. | Swing is groter en bevat ook een rijke functionaliteit. |
AWT laat ons veel dingen schrijven. | Swing heeft de meeste ingebouwde functies. |
Veel Gestelde Vragen
V # 1) Wat is AWT in Java?
Antwoord: AWT in Java, ook bekend als 'Abstract Window Toolkit', een platformafhankelijk grafisch gebruikersinterfaceraamwerk dat voorafgaat aan het Swing-framework. Het maakt deel uit van de Java-standaard GUI API, Java Foundation Classes of JFC.
V # 2) Wordt Java AWT nog steeds gebruikt?
Antwoord: Het is bijna verouderd in Java, op enkele componenten na die nog worden gebruikt. Er zijn ook nog enkele oude applicaties of programma's die op oudere platforms draaien die AWT gebruiken.
V # 3) Wat is AWT en Swing in Java?
Antwoord: Abstract Window toolkit is een platformafhankelijke API om GUI-applicaties in Java te ontwikkelen. Een Swing daarentegen is een API voor GUI-ontwikkeling en is afgeleid van Java Foundation Classes (JFC). AWT-componenten zijn zwaar, terwijl Swing-componenten lichtgewicht zijn.
V # 4) Wat is het frame in Java AWT?
Antwoord: Een frame kan worden gedefinieerd als het componentvenster op het hoogste niveau dat een titel en een rand heeft. Het frame heeft de standaardlay-out 'Randlay-out'. Frames genereren ook Windows-evenementen zoals Sluiten, Geopend, Sluiten, Activeren, Gedeactiveerd, etc.
V # 5) Wat is Java AWT importeren?
Antwoord: Import Java AWT (import java.awt. *) Geeft aan dat we de functionaliteit van AWT API in ons programma nodig hebben, zodat we de componenten zoals TextFields, Buttons, Labels, List, etc. kunnen gebruiken.
Gevolgtrekking
In deze tutorial bespraken we het overzicht van Abstract Window Toolkit, als een platformafhankelijke API voor GUI-ontwikkeling in Java. Het is bijna verouderd in Java en wordt vervangen door de andere API's zoals Swings en JavaFX.
We zijn niet ingegaan op de details van alle componenten van Abstract Window Toolkit, aangezien ze nu zelden worden gebruikt. Daarom bespraken we alleen componenten zoals Frames, Color, etc. en de headless-modus die is ingesteld met AWT.
In de volgende tutorial zullen we beginnen met Java Swing-tutorials en we zullen ze in detail bespreken aangezien de meeste Java-applicaties Swing gebruiken voor GUI-ontwikkeling.
Bekijk hier de eenvoudige Java-trainingsserie.
Aanbevolen literatuur
- Java-interface en abstracte les met voorbeelden
- Java Basics: Java Syntax, Java Class en Core Java Concepts
- Java Integer en Java BigInteger Class met voorbeelden
- Soorten klassen in Java: abstract, concreet, definitief, statisch
- Java-implementatie: creatie en uitvoering van Java JAR-bestand
- Zelfstudie voor Java-scannerklassen met voorbeelden
- Private, Abstract, Array en String Constructors in Java
- Java Class Vs Object - Hoe klasse en object in Java te gebruiken