what is java awt
Questo tutorial Java AWT spiega cos'è Abstract Window Toolkit in Java e concetti correlati come AWT Color, Point, Graphics, AWT vs Swing, ecc:
Siamo stati introdotti ai termini della GUI di base in uno dei nostri tutorial precedenti. In questo tutorial, discuteremo uno dei più vecchi framework GUI in Java chiamato 'AWT Framework'. AWT è l'abbreviazione di 'Abstract Window Toolkit'.
AWT è un'API per la creazione di applicazioni GUI in Java. È un framework dipendente dalla piattaforma, ovvero i componenti della GUI appartenenti ad AWT non sono gli stessi su tutte le piattaforme. In base all'aspetto nativo della piattaforma, cambiano anche l'aspetto e il design dei componenti AWT.
=> Controlla TUTTI i tutorial Java qui.
Cosa imparerai:
JAVA AWT (Abstract Window Toolkit)
Java AWT crea componenti chiamando le subroutine delle piattaforme native. Quindi, un'applicazione GUI AWT avrà l'aspetto del sistema operativo Windows durante l'esecuzione su Windows e l'aspetto grafico del sistema operativo Mac durante l'esecuzione su Mac e così via. Questo spiega la dipendenza dalla piattaforma delle applicazioni Abstract Window Toolkit.
A causa della sua dipendenza dalla piattaforma e di una sorta di pesantezza dei suoi componenti, oggigiorno è usato raramente nelle applicazioni Java. Inoltre, ci sono anche framework più recenti come Swing che sono leggeri e indipendenti dalla piattaforma.
Swing ha componenti più flessibili e potenti rispetto ad AWT. Swing fornisce componenti simili a Abstract Window Toolkit e ha anche componenti più avanzati come alberi, pannelli a schede, ecc.
Ma una cosa da notare qui è che il file Framework Java Swing è basato su AWT. In altre parole, Swing è un'API migliorata ed estende il framework Abstract Window Toolkit. Quindi, prima di passare ai tutorial Swing, diamo una panoramica di questo framework.
Gerarchia e componenti AWT
Ora vediamo come appare la gerarchia di Abstract Window Toolkit in Java.
Di seguito è riportato il diagramma della gerarchia AWT in Java.

Come mostrato nella figura sopra, il componente radice AWT 'Component' si estende dalla classe 'Object'. La classe componente è il genitore degli altri componenti inclusi Etichetta, Pulsante, Elenco, Casella di controllo, Scelta, Contenitore, ecc.
Un contenitore è ulteriormente suddiviso in pannelli e finestre. Una classe Applet deriva da Panel mentre Frame e Dialog derivano dal componente Window.
Ora esaminiamo brevemente questi componenti.
Classe componente
La classe Component è la radice della gerarchia. Un Component è una classe astratta ed è responsabile dei colori di sfondo e di primo piano correnti, nonché del carattere del testo corrente.
La classe component incapsula le proprietà e gli attributi del componente visivo.
Contenitore
I componenti AWT del contenitore possono contenere altri componenti come testo, etichette, pulsanti, tabelle, elenchi e così via. Il contenitore mantiene una scheda su altri componenti che vengono aggiunti alla GUI.
Pannello
Il pannello è una sottoclasse della classe Container. Un pannello è una classe concreta e non contiene il titolo, il bordo o la barra dei menu. È un contenitore per contenere gli altri componenti. Può esserci più di un pannello in una cornice.
Classe finestra
La classe Windows è una finestra al livello superiore e possiamo usare frame o finestre di dialogo per creare una finestra. Una finestra non ha bordi o barre dei menu.
Telaio
Frame deriva dalla classe Window e può essere ridimensionato. Un frame può contenere vari componenti come pulsanti, etichette, campi, barra del titolo, ecc. Il frame è utilizzato nella maggior parte delle applicazioni Abstract Window Toolkit.
domande e risposte dell'intervista di oracle sql per 3 anni di esperienza
Una cornice può essere creata in due modi:
# 1) Utilizzando l'oggetto della classe Frame
Qui creiamo un oggetto della classe Frame istanziando la classe Frame.
Di seguito viene fornito un esempio di programmazione.
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 (); } } Produzione:

# 2) Estendendo la classe Frame
Qui creiamo una classe che estende la classe Frame e quindi creiamo i componenti del frame nel suo costruttore.
Questo è mostrato nel programma sottostante.
come scrivere il test case nel foglio excel
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 (); } } Produzione:

Classe colore AWT
L'output AWT che abbiamo mostrato sopra aveva colori predefiniti per lo sfondo e il primo piano. Abstract Window Toolkit fornisce una classe Color che viene utilizzata per creare e impostare il colore sui componenti. Possiamo anche impostare i colori sui componenti utilizzando un framework tramite le proprietà dei componenti.
La classe Color ci consente di fare lo stesso a livello di codice. A tale scopo, la classe Color utilizza il modello di colore RGBA (RGBA = RED, GREEN, BLUE, ALPHA) o HSB (HSB = HUE, SATURATION, BRIComponents).
Non entreremo nei dettagli di questa classe, poiché va oltre lo scopo di questo tutorial.
La tabella seguente elenca i vari metodi forniti dalla classe Color.
| Costruttore / metodi | Descrizione |
|---|---|
| getBlue () | Restituisce il componente di colore blu nell'intervallo 0-255. |
| più luminoso () | Crea una versione più luminosa del colore corrente. |
| createContext (ColorModel cm, Rectangle r, Rectangle2D r2d, AffineTransform x, RenderingHints h) | Restituisce un nuovo PaintContext. |
| più scuro () | Crea una versione più scura del colore corrente. |
| decodifica (String nm) | Restituisce un colore opaco specificato convertendo la stringa in un numero intero. |
| è uguale a (Object obj) | Controlla se l'oggetto di colore dato è uguale all'oggetto corrente. |
| getAlpha () | Restituisce il valore alfa del colore compreso tra 0 e 255. |
| getColor (String nm) | Restituisce un colore dalle proprietà di sistema. |
| getColor (String nm, Color v) | |
| getColor (String nm, int v) | |
| getColorComponents (ColorSpace cspace, float () compArray) | Restituisce un array di tipo float contenente i componenti del colore dal ColorSpace specificato. |
| getColorComponents (float () compArray) | Restituisce un array di tipo float contenente i componenti del colore da ColorSpace di Color. |
| getColorSpace () | restituisce il ColorSpace del colore corrente. |
| getGreen () | Restituisce il componente di colore verde nell'intervallo 0-255 nello spazio sRGB predefinito. |
| getRed () | Restituisce il componente di colore rosso nell'intervallo 0-255 nello spazio sRGB predefinito. |
| getRGB () | Restituisce il valore RGB del colore corrente nel ColorModel sRGB predefinito. |
| getHSBColor (float h, float s, float b) | Crea un oggetto Color utilizzando il modello di colore HSB con valori specificati. |
| getTransparency () | restituisce il valore di trasparenza per questo colore. |
| codice hash() | Restituisce il codice hash per questo colore. |
| HSBtoRGB (float h, float s, float b) | Converti l'HSB dato in un valore RGB |
| RGBtoHSB (int r, int g, int b, float () hsbval) | converte i valori RGB dati in valori HSB. |
Punto AWT in Java
La classe Point viene utilizzata per indicare una posizione. La posizione proviene da un sistema di coordinate bidimensionale.
| Metodi | Descrizione |
|---|---|
| accordare() | Restituisce la rappresentazione di stringa del punto. |
| è uguale a (oggetto) | Controlla se due punti sono uguali. |
| getLocation () | Restituisce la posizione del punto corrente. |
| codice hash() | Restituisce il codice hash per il punto corrente. |
| spostare (int, int) | Sposta il punto dato nella posizione data nel sistema di coordinate (x, y). |
| setLocation (int, int) | Cambia la posizione del punto nella posizione specificata. |
| setLocation (Point) | Imposta la posizione del punto nella posizione data. |
| tradurre (int, int) | Trasla il punto corrente in punto in x + dx, y + dy. |
Classe grafica AWT
Tutti i contesti grafici in Abstract Window Toolkit per disegnare componenti in un'applicazione derivano dalla classe Graphics. Un oggetto della classe Graphics contiene le informazioni sullo stato necessarie per eseguire il rendering delle operazioni.
Le informazioni sullo stato in genere contengono:
- Quale componente deve essere disegnato?
- Coordinate di rendering e ritaglio.
- Il colore, il carattere e la clip correnti.
- L'operazione corrente sul pixel logico.
- Il colore XOR corrente
La dichiarazione generale della classe Graphics è la seguente:
public abstract class Graphics extends Object Modalità senza testa AWT ed eccezione senza testa
Quando abbiamo il requisito di lavorare con l'applicazione basata su grafica ma senza una tastiera, un mouse o persino un display effettivi, si parla di ambiente 'headless'.
JVM dovrebbe essere consapevole di un tale ambiente senza testa. Possiamo anche impostare l'ambiente headless usando Abstract Window Toolkit.
Ci sono alcuni modi per farlo come mostrato di seguito:
# 1) Impostare la proprietà di sistema 'java.awt.headless' su true utilizzando il codice di programmazione.
#Due) Utilizzare la riga di comando per impostare la seguente proprietà della modalità headless su true:
java -Djava.awt.headless = true
# 3) Aggiungere '-Djava.awt.headless = true' alla variabile di ambiente denominata 'JAVA_OPTS' utilizzando uno script di avvio del server.
Quando l'ambiente è headless e abbiamo un codice che dipende dal display, dalla tastiera o dal mouse, e quando questo codice viene eseguito in un ambiente headless, viene sollevata l'eccezione 'HeadlessException'.
La dichiarazione generale di HeadlessException è riportata di seguito:
public class HeadlessException extends UnsupportedOperationException Andiamo per la modalità senza testa nelle applicazioni che richiedono ad esempio l'accesso tramite immagine basato su immagini. Per esempio, se vogliamo cambiare l'immagine ad ogni accesso o ogni volta che la pagina viene aggiornata, allora in questi casi, caricheremo l'immagine e non abbiamo bisogno di tastiera, mouse, ecc.
Java AWT vs Swing
Vediamo ora alcune delle differenze tra Java AWT e Swing.
| AWT | Swing |
|---|---|
| AWT funziona con 21 peer o widget del sistema operativo che corrispondono a ciascun componente. | Swing funziona con un solo peer che è Window Object. Tutti gli altri componenti vengono disegnati da Swing all'interno dell'oggetto Window. |
| AWT sta per 'Abstract Windows Toolkit'. | Swing è derivato da Java Foundation Classes (JFC). |
| I componenti AWT sono pesanti poiché AWT effettua direttamente chiamate di subroutine alle subroutine del sistema operativo. | I componenti Swing sono scritti sopra AWT e come tali i componenti sono leggeri. |
| I componenti AWT fanno parte del pacchetto java.awt. | I componenti Swing fanno parte del pacchetto javax.swing. |
| AWT dipende dalla piattaforma. | I componenti Swing sono scritti in Java e sono indipendenti dalla piattaforma. |
| AWT non ha il suo aspetto grafico. Adatta l'aspetto e la sensazione della piattaforma su cui viene eseguito. | Swing offre un aspetto e una sensazione diversi. |
| AWT ha solo funzionalità di base e non supporta funzionalità avanzate come la tabella, il pannello a schede, ecc. | Swing fornisce funzionalità avanzate come JTabbed panel, JTable, ecc. |
| AWT è buono come un sottile strato di classi che si trovano sopra il sistema operativo, il che lo rende dipendente dalla piattaforma. | Swing è più grande e contiene anche una ricca funzionalità. |
| AWT ci fa scrivere molte cose. | Swing ha la maggior parte delle funzionalità integrate. |
Domande frequenti
D # 1) Cos'è AWT in Java?
Risposta: AWT in Java noto anche come 'Abstract Window Toolkit' che è un framework di interfaccia utente grafica dipendente dalla piattaforma che precede il framework Swing. Fa parte dell'API GUI standard di Java, Java Foundation Classes o JFC.
D # 2) Java AWT è ancora utilizzato?
Risposta: È quasi obsoleto in Java ad eccezione di alcuni componenti che sono ancora utilizzati. Inoltre, ci sono ancora alcune vecchie applicazioni o programmi in esecuzione su piattaforme precedenti che utilizzano AWT.
D # 3) Cosa sono AWT e Swing in Java?
Risposta: Abstract Window toolkit è un'API dipendente dalla piattaforma per sviluppare applicazioni GUI in Java. Uno Swing d'altra parte è un'API per lo sviluppo di GUI ed è derivato da Java Foundation Classes (JFC). I componenti AWT sono pesanti mentre i componenti Swing sono leggeri.
D # 4) Qual è il frame in Java AWT?
Risposta: Una cornice può essere definita come la finestra del componente di primo livello che ha un titolo e un bordo. Il Frame ha 'Layout bordo' come layout predefinito. I frame generano anche eventi di finestre come Chiudi, Aperto, Chiusura, Attiva, Disattivato, ecc.
D # 5) Cos'è import Java AWT?
Risposta: Import Java AWT (import java.awt. *) Indica che abbiamo bisogno della funzionalità dell'API AWT nel nostro programma in modo da poter utilizzare i suoi componenti come TextFields, Buttons, Labels, List, ecc.
Conclusione
In questo tutorial, abbiamo discusso la panoramica di Abstract Window Toolkit, come un'API dipendente dalla piattaforma per lo sviluppo di GUI in Java. È quasi obsoleto in Java e viene sostituito da altre API come Swings e JavaFX.
Non siamo entrati nei dettagli di tutti i componenti di Abstract Window Toolkit poiché sono usati raramente ora. Quindi abbiamo discusso solo di componenti come Frames, Color, ecc. E la modalità headless impostata utilizzando AWT.
Nel prossimo tutorial, inizieremo con i tutorial Java Swing e li discuteremo in dettaglio poiché la maggior parte delle applicazioni Java oggi utilizza Swing per lo sviluppo della GUI.
=> Guarda qui la serie di formazione su Java semplice.
Lettura consigliata
- Tutorial sull'interfaccia Java e sulla classe astratta con esempi
- Nozioni di base su Java: sintassi Java, classe Java e concetti principali di Java
- Java Integer e Java BigInteger Class con esempi
- Tipi di classi in Java: astratta, concreta, finale, statica
- Distribuzione Java: creazione ed esecuzione di file JAR Java
- Tutorial di classe per scanner Java con esempi
- Costruttori privati, astratti, array e stringhe in Java
- Java Class Vs Object - Come utilizzare la classe e l'oggetto in Java