Ok.
Il discorso riguardante le interfaccie grafiche è un po' lungo, cercherò di sintetizzarlo al massimo.
In Java ci sono, essenzialmente, due tecnologie: AWT (più vecchia e non più usata, se non per la gestione di eventi e LayoutManager) e Swing (più recente, completa, articolata e ricca di strumenti).
Per cominciare a realizzare le GUI è necessario conoscere le basi della prima e poi concentrarsi sulla seconda, dato che tutto (o quasi) deriva dalla prima.
La documentazione Java è essenziale per chiunque voglia avvicinarsi alla programmazione visuale in questo linguaggio.
Questo è il link alla documentazione, da tenere sempre sotto mano.
Alla base di tutto c'è la classe Component, che deriva da Object e rappresenta qualsiasi componente grafico (finestre, pulsanti, etichette, liste, ecc). Da questa classe, poi, si può dire che iniziano 2 tipologie diverse di oggetti: i componenti semplici (come pulsanti, etichette, ecc) e i contenitori (Container), che sono dei particolari componenti che permettono, appunto, di contenerne altri (è il caso di Finestre, Pannelli, Aree scrollabili, ecc.).
Esistono, poi, una categoria a se stante di oggetti che non sono dei componenti, ma sono strettamente legati alle GUI: è il caso di immagini (Image), colori (Color), cursori (Cursor), ecc.
Veniamo, però, al nocciolo della questione: creare una finestra.
Creare una finestra è semplicissimo: sono sufficienti 6 righe di codice:
Il problema è che questa sarà una finestra minimale: senza titolo, senza niente dentro e che non fa assolutamente nulla (non si può nemmeno chiudere, se non terminando forzatamente il programma).codice:import java.awt.*; public class Finestra extends Frame { public static void main(String [] args) { Finestra f = new Finestra(); } }
Costruire i vari oggetti da inserire è piuttosto semplice: uno sguardo alla documentazione e si scopre quali sono i costruttori a disposizione, i metodi per poterci lavorare, ecc.
Poi, li si può aggiungere al contenitore (la finestra, ad esempio), attraverso il metodo add().
Le prime volte il risultato sarà pessimo, imprevedibile. Perchè tutto ruota attorno ad un concetto che in Java è predominante: il lay out dei componenti. Ovvero, la loro disposizione ed il loro ridimensionamento.
I contenitori, solitamente, prevedono dei particolari LayoutManager, ovvero delle apposite classi che si occupano di gestire il lay out dei componenti al loro interno. Esse si arrangiano a posizionarli e a ridimensionarli a seconda delle dimensioni attuali del contenitore.
Non approfondisco questo argomento, ci sono i libri che parlano adeguatamente di questi concetti.
Altro concetto importante in ambienti Event Driven come Windows, Linux e la maggior parte dei sistemi operativi odierni è proprio il concetto di Evento. Ciascuna azione dell'utente nel programma, genera un evento. Allo scatenarsi di eventi il programma reagisce secondo le istruzioni che gli sono impartite dal programmatore.
Anche Java, quindi, deve prevedere l'utilizzo degli eventi e a tale scopo esistono gli Ascoltatori.
Questi sono rappresentati da classi che "si mettono in ascolto" di particolari eventi e, al loro sollevarsi, entrano in gioco, modellando la situazione.
E' il caso degli ascoltatori per gli eventi delle finestre (WindowListener), per gli eventi dei click sui pulsanti (ActionListener), per gli eventi provenienti da tastiera (KeyListener), ecc.
Questi ascoltatori, ovviamente, devono essere associati (in termine tecnico, registrati) presso i componenti a cui sono destinati, in modo che qualsiasi azione su questi componenti venga recepita ed elaborata dai relativi ascoltatori.
Trovi, comunque, tutto sulla documentazione e sui libri.
E' il mixing di tutti questi (ed altri, molti altri) concetti che permette la realizzazione di programmi visuali. Tutti i componenti dialogano in armonia tra di loro attraverso questi strumenti.
Il discorso sarebbe notevolmente più lungo, ma, come già detto, ci sono i libri che affrontano per bene queste cose (capitoli e capitoli di concetti da leggere e imparare). Spero, con questa breve panoramica, di averti fatto conoscere un pochino quali sono gli strumenti con cui si deve "giocare" per poter scrivere un programma grafico.
Ciao.![]()



Rispondi quotando