what is java awt
In diesem Java AWT-Tutorial wird erklärt, was das Abstract Window Toolkit in Java ist und verwandte Konzepte wie AWT-Farbe, Punkt, Grafik, AWT vs Swing usw.:
In einem unserer früheren Tutorials wurden wir in die grundlegenden GUI-Begriffe eingeführt. In diesem Tutorial werden wir eines der ältesten GUI-Frameworks in Java namens 'AWT Framework' diskutieren. AWT ist die Kurzform für das „Abstract Window Toolkit“.
AWT ist eine API zum Erstellen von GUI-Anwendungen in Java. Es ist ein plattformabhängiges Framework, d. H. Die zu AWT gehörenden GUI-Komponenten sind nicht auf allen Plattformen gleich. Entsprechend dem nativen Erscheinungsbild der Plattform ändert sich auch das Erscheinungsbild der AWT-Komponenten.
=> Überprüfen Sie ALLE Java-Tutorials hier.
Was du lernen wirst:
JAVA AWT (Abstract Window Toolkit)
Das Java AWT erstellt Komponenten durch Aufrufen der Unterprogramme nativer Plattformen. Daher hat eine AWT-GUI-Anwendung das Erscheinungsbild eines Windows-Betriebssystems unter Windows und das Erscheinungsbild eines Betriebssystems unter Mac und so weiter. Dies erklärt die Plattformabhängigkeit von Abstract Window Toolkit-Anwendungen.
Aufgrund seiner Plattformabhängigkeit und einer Art Schwergewicht seiner Komponenten wird es heutzutage in Java-Anwendungen selten verwendet. Daneben gibt es auch neuere Frameworks wie Swing, die leicht und plattformunabhängig sind.
Swing hat im Vergleich zu AWT flexiblere und leistungsstärkere Komponenten. Swing bietet Komponenten, die dem Abstract Window Toolkit ähneln, sowie erweiterte Komponenten wie Bäume, Registerkarten usw.
Aber eine Sache, die hier zu beachten ist, ist, dass die Java Swing Framework basiert auf der AWT. Mit anderen Worten, Swing ist eine erweiterte API und erweitert das Abstract Window Toolkit-Framework. Bevor wir uns den Swing-Tutorials zuwenden, wollen wir uns einen Überblick über dieses Framework verschaffen.
AWT-Hierarchie und -Komponenten
Nun wollen wir sehen, wie die Hierarchie des Abstract Window Toolkit in Java aussieht.
Unten ist das Diagramm der AWT-Hierarchie in Java angegeben.

Wie in der obigen Abbildung gezeigt, erstreckt sich die AWT-Stammkomponente 'Component' von der Klasse 'Object'. Die Komponentenklasse ist das übergeordnete Element der anderen Komponenten, einschließlich Beschriftung, Schaltfläche, Liste, Kontrollkästchen, Auswahl, Container usw.
Ein Container ist weiter in Paneele und Fenster unterteilt. Eine Applet-Klasse wird von Panel abgeleitet, während Frame und Dialog von der Window-Komponente abgeleitet werden.
Lassen Sie uns nun diese Komponenten kurz diskutieren.
Komponentenklasse
Die Component-Klasse ist die Wurzel der Hierarchie. Eine Komponente ist eine abstrakte Klasse und ist für die aktuellen Hintergrund- und Vordergrundfarben sowie die aktuelle Textschrift verantwortlich.
Die Komponentenklasse kapselt die Eigenschaften und Attribute der visuellen Komponenten.
Container
Container-AWT-Komponenten können andere Komponenten wie Text, Beschriftungen, Schaltflächen, Tabellen, Listen usw. enthalten. Der Container überwacht andere Komponenten, die der GUI hinzugefügt werden.
Panel
Das Panel ist eine Unterklasse der Container-Klasse. Ein Panel ist eine konkrete Klasse und enthält weder Titel noch Rahmen oder Menüleiste. Es ist ein Behälter für die anderen Komponenten. Es kann mehr als ein Panel in einem Rahmen geben.
Fensterklasse
Die Windows-Klasse ist ein Fenster auf der obersten Ebene, und wir können Frames oder Dialoge verwenden, um ein Fenster zu erstellen. Ein Fenster hat keine Rahmen oder Menüleisten.
Rahmen
Der Frame stammt aus der Window-Klasse und kann in der Größe geändert werden. Ein Rahmen kann verschiedene Komponenten wie Schaltflächen, Beschriftungen, Felder, Titelleiste usw. enthalten. Der Rahmen wird in den meisten Anwendungen des Abstract Window Toolkit verwendet.
Erstellen Sie eine Kopie eines Java-Arrays
Ein Rahmen kann auf zwei Arten erstellt werden:
# 1) Mit dem Frame-Klassenobjekt
Hier erstellen wir ein Frame-Klassenobjekt, indem wir die Frame-Klasse instanziieren.
Ein Programmierbeispiel ist unten angegeben.
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 (); } } Ausgabe:

# 2) Durch Erweitern der Frame-Klasse
Hier erstellen wir eine Klasse, die die Frame-Klasse erweitert, und erstellen dann Komponenten des Frames in seinem Konstruktor.
Dies wird im folgenden Programm gezeigt.
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 (); } } Ausgabe:

AWT-Farbklasse
Die oben gezeigte AWT-Ausgabe hatte Standardfarben für Hintergrund und Vordergrund. Das Abstract Window Toolkit bietet eine Farbklasse, mit der die Farbe erstellt und auf Komponenten festgelegt werden kann. Wir können die Farben auch mithilfe eines Frameworks über Komponenteneigenschaften auf Komponenten festlegen.
Die Farbklasse ermöglicht es uns, programmgesteuert dasselbe zu tun. Zu diesem Zweck verwendet die Farbklasse das Modell RGBA-Farbmodell (RGBA = ROT, GRÜN, BLAU, ALPHA) oder HSB-Modell (HSB = HUE, SATURATION, BRIComponents).
Wir werden nicht auf die Details dieser Klasse eingehen, da dies den Rahmen dieses Tutorials sprengt.
In der folgenden Tabelle sind die verschiedenen Methoden aufgeführt, die von der Color-Klasse bereitgestellt werden.
| Konstruktor / Methoden | Beschreibung |
|---|---|
| getBlue () | Gibt eine blaue Farbkomponente im Bereich von 0 bis 255 zurück. |
| heller () | Erstellen Sie eine hellere Version der aktuellen Farbe. |
| createContext (ColorModel cm, Rechteck r, Rechteck2D r2d, AffineTransform x, RenderingHints h) | Gibt einen neuen PaintContext zurück. |
| dunkler () | Erstellt eine dunklere Version der aktuellen Farbe. |
| decodieren (String nm) | Gibt eine angegebene undurchsichtige Farbe zurück, indem die Zeichenfolge in eine Ganzzahl konvertiert wird. |
| gleich (Objekt obj) | Überprüft, ob das angegebene Farbobjekt dem aktuellen Objekt entspricht. |
| getAlpha () | Gibt den Alpha-Wert der Farbe zwischen 0 und 255 zurück. |
| getColor (String nm) | Gibt eine Farbe aus den Systemeigenschaften zurück. |
| getColor (String nm, Farbe v) | |
| getColor (String nm, int v) | |
| getColorComponents (ColorSpace cspace, float () compArray) | Gibt ein Array vom Typ float zurück, das die Farbkomponenten aus dem angegebenen ColorSpace enthält. |
| getColorComponents (float () compArray) | Gibt ein Array vom Typ float zurück, das die Farbkomponenten aus dem ColorSpace der Farbe enthält. |
| getColorSpace () | Gibt den ColorSpace der aktuellen Farbe zurück. |
| getGreen () | Gibt eine grüne Farbkomponente im Bereich von 0 bis 255 im Standard-sRGB-Bereich zurück. |
| rot werden () | Gibt eine rote Farbkomponente im Bereich von 0 bis 255 im Standard-sRGB-Bereich zurück. |
| getRGB () | Gibt den RGB-Wert der aktuellen Farbe im Standard-sRGB-Farbmodell zurück. |
| getHSBColor (float h, float s, float b) | Erstellt ein Farbobjekt unter Verwendung des HSB-Farbmodells mit angegebenen Werten. |
| getTransparency () | Gibt den Transparenzwert für diese Farbe zurück. |
| Hash-Code() | Gibt den Hash-Code für diese Farbe zurück. |
| HSBtoRGB (float h, float s, float b) | Konvertieren Sie den angegebenen HSB in einen RGB-Wert |
| RGBtoHSB (int r, int g, int b, float () hsbvals) | konvertiert die angegebenen RGB-Werte in HSB-Werte. |
AWT-Punkt in Java
Die Punktklasse wird verwendet, um einen Ort anzugeben. Der Ort stammt aus einem zweidimensionalen Koordinatensystem.
So öffnen Sie die JSON-Dateierweiterung
| Methoden | Beschreibung |
|---|---|
| toString () | Gibt die Zeichenfolgendarstellung des Punkts zurück. |
| gleich (Objekt) | Überprüfen Sie, ob zwei Punkte gleich sind. |
| getLocation () | Position des aktuellen Punkts zurückgeben. |
| Hash-Code() | Gibt den Hashcode für den aktuellen Punkt zurück. |
| bewegen (int, int) | Verschiebt den angegebenen Punkt an die angegebene Position im (x, y) -Koordinatensystem. |
| setLocation (int, int) | Ändert die Punktposition in die angegebene Position. |
| setLocation (Punkt) | Legt die Position des Punkts auf die angegebene Position fest. |
| übersetzen (int, int) | Übersetzen Sie den aktuellen Punkt zu Punkt bei x + dx, y + dy. |
AWT-Grafikklasse
Alle Grafikkontexte im Abstract Window Toolkit zum Zeichnen von Komponenten in einer Anwendung stammen aus der Graphics-Klasse. Ein Graphics-Klassenobjekt enthält die Statusinformationen, die zum Rendern von Operationen erforderlich sind.
Die Statusinformationen enthalten normalerweise:
- Welche Komponente soll gezeichnet werden?
- Rendering- und Clipping-Koordinaten.
- Die aktuelle Farbe, Schriftart und der aktuelle Clip.
- Die aktuelle Operation auf dem logischen Pixel.
- Die aktuelle XOR-Farbe
Die allgemeine Deklaration der Graphics-Klasse lautet wie folgt:
public abstract class Graphics extends Object AWT Headless Mode und Headlessexception
Wenn wir die Anforderung haben, dass wir mit der grafikbasierten Anwendung arbeiten sollen, jedoch ohne tatsächliche Tastatur, Maus oder Anzeige, wird dies als 'kopflose' Umgebung bezeichnet.
JVM sollte sich einer solchen kopflosen Umgebung bewusst sein. Wir können die kopflose Umgebung auch mit dem Abstract Window Toolkit einstellen.
Es gibt bestimmte Möglichkeiten, dies zu tun, wie unten gezeigt:
# 1) Setzen Sie die Systemeigenschaft 'java.awt.headless' mit dem Programmcode auf true.
#zwei) Verwenden Sie die Befehlszeile, um die folgende Eigenschaft für den kopflosen Modus auf true zu setzen:
java -Djava.awt.headless = true
#3) Fügen Sie der Umgebungsvariablen 'JAVA_OPTS' mithilfe eines Server-Startskripts '-Djava.awt.headless = true' hinzu.
Wenn die Umgebung kopflos ist und wir einen Code haben, der von der Anzeige, der Tastatur oder der Maus abhängig ist, und wenn dieser Code in einer Umgebung ohne Kopf ausgeführt wird, wird die Ausnahme „HeadlessException“ ausgelöst.
Die allgemeine Erklärung von HeadlessException ist unten angegeben:
public class HeadlessException extends UnsupportedOperationException In Anwendungen, die beispielsweise eine bildbasierte Bildanmeldung erfordern, wählen wir den Headless-Modus. Beispielsweise, Wenn wir das Bild bei jedem Login oder bei jeder Aktualisierung der Seite ändern möchten, laden wir in solchen Fällen das Bild und benötigen keine Tastatur, Maus usw.
Java AWT gegen Swing
Schauen wir uns nun einige der Unterschiede zwischen Java AWT und Swing an.
| AWT | Schwingen |
|---|---|
| AWT arbeitet mit 21 Peers oder Widgets des Betriebssystems, die jeder Komponente entsprechen. | Swing funktioniert nur mit einem Peer, nämlich Window Object. Alle anderen Komponenten werden von Swing innerhalb des Window-Objekts gezeichnet. |
| AWT steht für 'Abstract Windows Toolkit'. | Swing wird von Java Foundation Classes (JFC) abgeleitet. |
| AWT-Komponenten sind schwergewichtig, da AWT Subroutinenaufrufe direkt an Subroutinen des Betriebssystems ausführt. | Swing-Komponenten sind auf AWT geschrieben und daher leicht. |
| AWT-Komponenten sind Teil des Pakets java.awt. | Swing-Komponenten sind Teil des Pakets javax.swing. |
| AWT ist plattformabhängig. | Swing-Komponenten sind in Java geschrieben und plattformunabhängig. |
| AWT hat kein Erscheinungsbild. Es passt das Erscheinungsbild der Plattform an, auf der es ausgeführt wird. | Swing bietet ein eigenes Erscheinungsbild. |
| AWT verfügt nur über grundlegende Funktionen und unterstützt keine erweiterten Funktionen wie Tabelle, Registerkarten usw. | Swing bietet erweiterte Funktionen wie JTabbed Panel, JTable usw. |
| AWT ist so gut wie eine dünne Schicht von Klassen, die auf dem Betriebssystem sitzen und somit plattformabhängig sind. | Swing ist größer und enthält auch umfangreiche Funktionen. |
| AWT bringt uns dazu, viele Dinge zu schreiben. | Swing verfügt über die meisten integrierten Funktionen. |
Häufig gestellte Fragen
F # 1) Was ist AWT in Java?
Antworten: AWT in Java wird auch als „Abstract Window Toolkit“ bezeichnet. Hierbei handelt es sich um ein plattformabhängiges Framework für grafische Benutzeroberflächen, das dem Swing-Framework vorausgeht. Es ist Teil der Java-Standard-GUI-API, der Java Foundation Classes oder der JFC.
F # 2) Wird Java AWT noch verwendet?
Antworten: In Java ist es fast veraltet, abgesehen von einigen Komponenten, die noch verwendet werden. Es gibt auch noch einige alte Anwendungen oder Programme, die auf älteren Plattformen ausgeführt werden, die AWT verwenden.
F # 3) Was ist AWT und Swing in Java?
Antworten: Das Abstract Window Toolkit ist eine plattformabhängige API zur Entwicklung von GUI-Anwendungen in Java. Ein Swing hingegen ist eine API für die GUI-Entwicklung und wird von Java Foundation Classes (JFC) abgeleitet. AWT-Komponenten sind schwer, während Swing-Komponenten leicht sind.
F # 4) Was ist der Frame in Java AWT?
Antworten: Ein Rahmen kann als das Komponentenfenster der obersten Ebene definiert werden, das einen Titel und einen Rahmen enthält. Der Rahmen hat als Standardlayout das Rahmenlayout. Frames generieren auch Windows-Ereignisse wie Schließen, Öffnen, Schließen, Aktivieren, Deaktivieren usw.
F # 5) Was ist Import Java AWT?
Antworten: Java AWT importieren (import java.awt. *) Gibt an, dass wir die Funktionalität der AWT-API in unserem Programm benötigen, damit wir ihre Komponenten wie TextFields, Buttons, Labels, List usw. verwenden können.
Fazit
In diesem Tutorial haben wir die Übersicht über das Abstract Window Toolkit als plattformabhängige API für die GUI-Entwicklung in Java erläutert. Es ist in Java fast veraltet und wird durch andere APIs wie Swings und JavaFX ersetzt.
Wir haben nicht auf die Details aller Komponenten des Abstract Window Toolkit eingegangen, da sie derzeit nur noch selten verwendet werden. Daher haben wir nur Komponenten wie Frames, Color usw. und den Headless-Modus besprochen, der mit AWT eingestellt wird.
Im nächsten Tutorial werden wir mit Java Swing-Tutorials beginnen und diese ausführlich diskutieren, da die meisten Java-Anwendungen heute Swing für die GUI-Entwicklung verwenden.
=> Sehen Sie sich hier die einfache Java-Schulungsreihe an.
Literatur-Empfehlungen
- Java Interface und Abstract Class Tutorial mit Beispielen
- Java-Grundlagen: Java-Syntax, Java-Klasse und Java-Kernkonzepte
- Java Integer und Java BigInteger Klasse mit Beispielen
- Arten von Klassen in Java: Abstrakt, Konkret, Endgültig, Statisch
- Java-Bereitstellung: Erstellung und Ausführung einer Java-JAR-Datei
- Java Scanner Class Tutorial mit Beispielen
- Private, abstrakte, Array- und String-Konstruktoren in Java
- Java Class Vs Object - Verwendung von Klasse und Objekt in Java