Questo tutorial discute le basi della programmazione GUI (Graphical User Interface) e delle Java Foundation Classes o JFC in Java:
Nei nostri tutorial precedenti, abbiamo trattato argomenti che vanno dalle basi dei tipi di dati Java, variabili, decision-making e costrutti di loop, ecc. agli array, alle collezioni e ai metodi in Java.
Abbiamo anche discusso il concetto di multithreading e le eccezioni. Dopo di che, abbiamo imparato il supporto Java OOPS. Usando tutti questi concetti, possiamo sviluppare applicazioni di alto livello in Java che sono riutilizzabili e robuste, oltre che autocontenute.
=> Controlla qui per vedere A-Z dei tutorial di formazione Java.
In questo tutorial, inizieremo la nostra discussione sullo sviluppo grafico di applicazioni in Java. Come tutti gli altri concetti, Java fornisce numerose classi grafiche riutilizzabili e APIS in modo da poter sviluppare la nostra interfaccia grafica (GUI).
Che cos’è un’interfaccia grafica in Java
L’interfaccia grafica o semplicemente chiamata “GUI” è un termine generale usato nel mondo del software. Una GUI rappresenta un’applicazione che ha una visualizzazione per l’utente con controlli facili da usare. Una GUI generalmente consiste di componenti grafici come finestre, cornici, pulsanti, etichette, ecc.
Possiamo usare questi componenti per interagire con il sistema o anche con il mondo esterno. Java fornisce molte API e classi riutilizzabili con cui possiamo sviluppare applicazioni GUI. Uno dei più vecchi kit forniti da Java è “Abstract Windowing ToolKit” o AWT. Tutte le più recenti API o componenti come Swing; JavaFX, ecc. si basano su questo AWT.
I programmi per console che abbiamo scritto finora sono ugualmente importanti ma dobbiamo sapere che tutte le più recenti applicazioni desktop moderne sono abilitate graficamente. Questo significa che hanno una GUI pronta all’uso che rende più facile per l’utente finale usare l’applicazione con un clic del mouse.
Nota che scrivere GUI non è facile come disegnare alcune forme o includere immagini. La GUI contiene una sequenza di attività che innescano anche alcuni eventi che a loro volta eseguono alcune azioni sull’invocazione di un componente o parte di un componente come cliccando un pulsante si innescano alcune azioni.
Quindi un’applicazione GUI è un framework composto da componenti grafici & eventi che possono essere innescati su questi componenti e le azioni che eseguono come risultato dell’innesco degli eventi.
I framework di solito forniscono classi precompilate e componenti riutilizzabili che possiamo trascinare nell’area di disegno e poi associare gli eventi e le azioni a questi componenti.
Java fornisce i seguenti framework principali.
Java fornisce i seguenti framework per la programmazione GUI:
- Abstract Windowing Toolkit: Questo è il framework più vecchio in Java ed è stato introdotto per la prima volta in JDK 1.0. La maggior parte dei componenti AWT sono ora superati e sono sostituiti dai componenti Java swing.
- Swing API: Questo è un insieme di librerie grafiche sviluppate sopra il framework AWT ed è una parte di Java Foundation Classes (JFC). Swing ha un’architettura modulare in cui possiamo usare plug-and-play per i componenti.
- JavaFX: L’ultimo framework è disponibile da Java 8 in poi.
Ci sono vari framework grafici di terze parti come Standard Widget Toolkit (SWT) di Eclipse o Google Web Toolkit (GWT) usato su Android.
Java Foundation Classes (JFC)
Java fornisce un insieme di caratteristiche e funzionalità per sviluppare interfacce utente grafiche o GUI. Questo insieme di caratteristiche è conosciuto come Java Foundation Classes o JFC.
Utilizzando JFC possiamo aggiungere ricche funzionalità grafiche alle applicazioni e anche renderle più interattive. JFC contiene un insieme di componenti grafici che possono essere facilmente inseriti nella nostra applicazione e programmati secondo le nostre esigenze. Ma programmare questi componenti di solito richiede solo poche righe di codice.
JFC contiene classi dai pacchetti java.awt e javax.swing. Oltre a queste, contiene anche classi relative a Java 3D, Java 2D, Java Accessibility, ecc. JFC è in sincronia con il modello di oggetti e componenti di Java e quindi è facile da usare.
Il seguente diagramma riassume i vari componenti in JFC.
Come mostrato sopra, JFC contiene classi AWT e Swing. Discuteremo ciascuna di queste man mano che procederemo con i tutorial di Java AWT e Java Swing. JFC fornisce anche vari metodi che possiamo usare nella nostra applicazione.
Alcuni dei metodi comunemente usati sono:
Metodo | Descrizione |
---|---|
public void add(Component c) | Aggiunge un componente al componente padre che invoca il metodo. |
public void setSize(int width,int height) | Imposta le dimensioni di un componente con una larghezza e altezza specificata. |
public void setLayout(LayoutManager m) | Imposta il layout manager specificato per questo componente. |
public void setVisible(boolean b) | Imposta la visibilità del componente secondo il valore booleano. Per default la visibilità è false. |
Ora passiamo a discutere i componenti GUI a livello generale. Poi, nei nostri tutorial successivi, discuteremo i pacchetti AWT e Swing e i loro componenti nello specifico.
Componenti della finestra
Sappiamo che il contenitore principale di qualsiasi applicazione GUI è una finestra che può contenere uno o più frame.
Una GUI generalmente include elementi dell’interfaccia utente o gli elementi che vengono visualizzati come parte della GUI nell’applicazione.
Questi componenti della finestra sono i seguenti:
- Elementi informativi: Gli elementi o componenti che ci forniscono informazioni come etichette, icone, banner o finestre di dialogo dei messaggi.
- Controlli di input: Campi di testo, pulsanti, elenchi a discesa, caselle di controllo, pulsanti radio, ecc. sono i controlli di input che ci permettono di leggere i dati dall’utente.
- Componenti di navigazione: Componenti come il menu, le barre laterali, le briciole di pane, ecc. ci aiutano a navigare nell’applicazione.
Descriviamo ora alcuni importanti componenti della GUI.
Frame in Java
Un frame è una finestra grafica visibile sullo schermo. Un frame può essere visto come un componente, ma poiché forma una finestra fisica che possiamo vedere sullo schermo, è trattato diversamente dagli altri componenti. Un frame può avere altri componenti grafici come pulsanti, campi di testo, ecc. e anche pannelli.
I frame hanno anche metodi che non sono supportati da altri componenti. “java.awt.Frame” rappresenta una classe in AWT mentre JFrame è la classe contenuta nel pacchetto Java Swing che rappresenta un Frame.
Quindi qualsiasi applicazione GUI inizierà costruendo un oggetto JFrame che forma la finestra principale. Una volta creato l’oggetto JFrame, possiamo impostare la sua proprietà visible su true chiamando setVisible (‘true’). Poi possiamo trascinare e rilasciare gli altri componenti in questo frame.
Tutti i componenti della GUI, inclusi i frame, hanno alcune proprietà comuni in quanto fanno parte di una gerarchia di eredità comune mostrata sopra. Quindi possiamo dire che c’è un potente caso di condivisione del codice nel pacchetto Java Swing.
La figura seguente mostra una tipica finestra di frame nell’editor GUI.
Come possiamo vedere dalla figura precedente, la finestra più esterna nell’editor di design (segnata con una piccola freccia rossa) è il frame. All’interno di questa cornice, abbiamo vari altri componenti o componenti figli della cornice.
Questo è evidente dal pannello sul lato sinistro che mostra una struttura ad albero dei componenti. Come segnato da una freccia rossa più grande, JFrame è il componente radice e poi tutti gli altri componenti sono i suoi componenti figli.
JPanel in Java
Il contenitore JPanel fa parte del pacchetto Swing in Java. JPanel memorizza un gruppo di componenti. JPanel organizza i componenti usando il layout impostato da esso. Vari layout possono aiutare JPanel ad organizzare meglio i componenti.
JPanel è considerato come un blocco di base per la disposizione dei componenti in un frame o all’interno di altri pannelli. Un’applicazione GUI di solito ha Frame come finestra principale e uno o più pannelli al suo interno per contenere e organizzare vari componenti.
L’immagine seguente mostra un semplice esempio di un pannello all’interno di un frame.
Come mostrato sopra, un contenitore Panel è incorporato in un contenitore della finestra Frame. Possiamo avere uno o più pannelli o anche un pannello dentro un pannello. Poi possiamo applicare qualsiasi gestore di layout al pannello che organizzerà i componenti o gli elementi all’interno del pannello. Il gestore di layout predefinito per JPanel è “FlowLayout”.
I Layout dell’interfaccia utente in Java
Il contenitore Java usa un layout automatico dei componenti sullo schermo. Ma le dimensioni e le posizioni dei componenti sono prese in carico dal “layout manager”. Il gestore del layout è impostato per un contenitore al momento della progettazione. Può anche essere cambiato dinamicamente.
I layout comuni usati in Java GUI sono:
#1) BorderLayout
Il layout dei bordi divide il componente in 5 aree come mostrato sotto.
Di queste, 4 aree cioè “Nord”, “Sud”, “Est” e “Ovest” non sono ridimensionabili. L’area “Centro” è ridimensionabile. Si noti che ogni area ha un limite di un solo componente e i pannelli possono essere usati per contenere più componenti.
#2) FlowLayout: Questo layout è usato per contenere più componenti. I componenti multipli sono disposti orizzontalmente e si avvolgono se la larghezza del contenitore è esaurita. Inoltre, i componenti sono visualizzati in ordine da sinistra a destra.
#3) BoxLayout: Usando il box layout, i componenti sono disposti sia verticalmente che orizzontalmente. Questa disposizione del box layout è indipendente dalla dimensione del contenitore. I componenti nel contenitore sono impostati in modo che riempiano il contenitore e abbiano dimensioni identiche.
Questi erano alcuni dei componenti importanti e comuni che abbiamo nello sviluppo della GUI. Nei nostri tutorial successivi su AWT e Swing, entreremo nei dettagli degli altri componenti forniti da questi pacchetti.
Domande frequenti
Q #1) Cos’è la programmazione GUI?
Risposta: I programmi sviluppati usando componenti grafici che interagiscono con il computer usando il dispositivo di puntamento ed è event-driven cioè esegue alcune azioni quando certi eventi sono innescati, ed è chiamata programmazione GUI.
Una programmazione GUI usa framework GUI in cui possiamo direttamente collegare e usare componenti grafici.
Q #2) Quale GUI usare con Java?
Risposta: Java supporta alcuni dei migliori framework che possiamo usare per sviluppare applicazioni GUI come mostrato di seguito:
- JavaFX.
- Swing GUI Java.
- AWT: Abstract Windowing Toolkit.
- SWT- Standard Widget Toolkit.
- Apache Pivot.
- SwingX.
- JGoodies.
- QtJambi.
Q #3) Quali sono i vantaggi di una GUI? I programmi GUI rendono le applicazioni interattive, intuitive e più facili da usare e imparare. Poiché forniscono all’utente delle immagini grafiche, le azioni hanno più effetto e quindi si ottiene un feedback visivo immediato sull’applicazione.
Q #4) Cos’è JavaFX API?
Risposta: JavaFX è l’ultima libreria Java scritta nel codice Java nativo e contiene classi e interfacce. JavaFX può essere usato per progettare applicazioni GUI nelle versioni Java successive a Java 8.
Q #5) Java è buono per le GUI? Anche se Java ha più strumenti per sviluppare applicazioni GUI insieme al miglior supporto, non è veloce ed efficiente come la libreria MFC di C++ che ha quasi tutte le caratteristiche per sviluppare applicazioni GUI avanzate.
Conclusione
In questo tutorial, abbiamo esplorato la programmazione GUI in Java. Abbiamo introdotto alcuni dei concetti importanti della programmazione GUI in Java e abbiamo anche visto una panoramica dei framework GUI supportati da Java. Abbiamo discusso la panoramica della libreria JFC.
=> Controlla TUTTI i tutorial Java qui.