PROGRAMMAZIONE: JAVA
Introduzione
alla programmazione Java
Corso
sul JAVA di HTML.IT
Introduzione
al Java
Java
appena è uscito è stato accolto con molto entusiasmo dalla
comunità mondiale dei progettisti di software e dei provider
di servizi Internet, questo perché Java permetteva agli
utenti di Internet di utilizzare applicazioni sicure e
indipendenti dalla piattaforma, che si possono trovare in
qualsiasi punto della rete. Java è quindi nato come
linguaggio per la rete, per affiancare l' Hyper Text Markup
Language (HTML), il quale non è un linguaggio di
programmazione vero e proprio, e per dargli quella sicurezza
che l'HTML non ha. Da quando è nato Java sulla rete si è
iniziato a poter parlare di numeri di carte di credito e di
informazioni sicure, notizia che ha molto affascinato le
grosse società mondiali, le quali hanno trasformato la
vecchia Internet, rete ad appannaggio delle sole università e
centri di ricerca, nell'attuale mezzo di comunicazione aperto
a tutti.
Il linguaggio di programmazione Java è stato creato verso la
metà degli anni novanta, è il più recente tra i suoi
cugini, e per questo è ancora in fase evolutiva, tanto che
ogni anno circa ne viene rilasciata una nuova relase. Da
linguaggio nato solo per la rete è divenuto un vero e proprio
linguaggio di programmazione, paragonabile, dal punto di vista
delle funzionalità, al più blasonato C++.
Java e la maggior parte degli altri linguaggi possono essere
paragonati solo dal punto di vista delle funzionalità, perché
sono fondamentalmente molto diversi, infatti Java compila i
sorgenti dei suoi programmi in un codice detto Bytecode,
diverso dal linguaggio della macchina su cui è compilato,
mentre linguaggi come il C++ compilano i sorgenti dei
programmi in un codice che è il codice della macchina ( per
macchina intendo computer + sistema operativo ) su cui è
eseguito. Quindi per eseguire un programma Java occorre avere
uno strumento che è chiamato Java Virtual Machine, la quale
interpreta il bytecode generato dal compilatore Java e lo
esegue sulla macchina su cui è installato. Grazie alla Java
Virtual Machine Java è indipendente dalla piattaforma,
infatti il programma compilato Java è legato alla JVM e non
al sistema operativo, sarà quindi possibile eseguire lo
stesso programma Java, compilato una sola volta su una qualche
macchina con un compilatore Java versione X, su una
piattaforma Windows e su una piattaforma Linux, per fare
questo però c'è bisogno che sia Windows che Linux abbiano
installato una Java Virtual Machine che supporti la versione X
di Java. Le due JVM installate sulle due piattaforme diverse
sono lo stesso programma compilato una volta per Windows ed
una volta per Linux, come avveniva con i programmi scritti in
linguaggi come il C/C++.
Una Java Virtual Machine è implementata anche nei vari
Browser (Come Netscape e Explorer) per poter eseguire i
programmi Java incontrati nella rete, i cosidetti Applet.
Questo però, unito al fatto che Java ancora si evolve, causa
degli ovvi problemi di incompatibilità, infatti capita sempre
che il più moderno Browser supporti una versione precedente
di Java rispetto all' ultima versione rilasciata dalla Sun
Microsystem, inoltre bisogna tener presente che non tutti gli
utenti di Internet navigano usando l'ultima versione di
Netscape o di Explorer. Quindi volendo creare un' applet ed
inserirlo in un nostro documento HTML, dobbiamo tenere
presente questi problemi, e cercare di fare un programma che
sia compatibile con la maggior parte delle JVM implementate
nei vari browser.
Un altro problema da affrontare è quello della scelta del
compilatore Java da utilizzare, infatti esistono vari ambienti
integrati per editare, compilare, debuggare ed eseguire
programmi Java, come quelli della Broland, della Microsoft,
della Symantec. Tutti questi ambienti offrono dei tool di
sviluppo eccellenti, come editori grafici di finestre,
debugger molto interessanti, però hanno due problemi, il
primo è che si pagano, anche molto, il secondo è sempre lo
stesso della compatibilità, infatti essi spesso si trovano
indietro alla relase della sun, ed inoltre aggiungono delle
classi che poi le JVM implementate nei browser non hanno.
Il mio consiglio è quallo di usare le JDK ( Java Development
Kit ) della Sun, le quali comprendono sia il compilatore che
la Java Virtual Machine per eseguire i programmi da noi
compilati, inoltre sono freeware (non costano niente) e sono
scaricabili dalla rete ed i browser si adeguano pian piano a
questa versione di Java.
Se volete scrivere applet per i vecchi browser dovete
scaricarvi la versione 1.1 di Java, però questa versione è
niente alla versione attualmente più gettonata, ovvero alla
1.2.2 ( Chiamata per qualche motivo a me oscuro Java 2 , la si
può scaricare all'indirizzo http://java.sun.com/products/jdk/1.2/index.html
), alla quale farò riferimento anche io in questo corso e per
la quale Netscape versione 4.0x ed Explorer 5 hanno
implementato la Java Virtual Machine (quasi tutta, io ho avuto
qualche problema con le Swing, che sono una libreria standard
di Java 2).
Se avete intenzione di scaricarvi Java 2 vi consiglio di farlo
la mattina verso tra le nove e le undici, perché il sito è
affollato e lento, inoltre il file da scaricare è una ventina
di mega, se volete potete scaricarvi anche la documentazione
la quale è molto utile, però anch' essa è di circa venti
mega.
Io ho appena scaricato e installato la prossima versione,
ovvero la Relase Candidate del Java 2 Software Development Kit
versione 1.3 Relase Candidate 1, e vi assicuro che se la 1.2.2
era eccezionale questa è incredibile, ho anche appena
scoperto che è uscita la Relase Candidate 2 del JDK 1.3 e che
a fine aprile uscirà finalmente la relase (Io la aspetto, non
ho voglia di passare un'altra nottata in bianco per scaricarmi
una cosa che verrà rimpiazzata dalla relase tra meno di un
mese).
Per scaricarvi il prodotto dovrete iscrivervi, fatelo,
l'iscrizione è gratuita.
Un ultimo problema che ha Java è la lentezza, infatti, come
già detto, esso è interpretato, quindi le istruzioni Java
prima di essere eseguite dalla macchina vengono interpretate
dalla JVM, ovvero per eseguire ogni istruzione il computer
eseguirà un numero di istruzioni macchina che è più del
doppio delle istruzioni che eseguirebbe se la stessa
istruzione fosse stata scritta in C, quindi avrete bisogno di
computer veloci per eseguire bene programmi Java, e di questo
vi sarete sicuramente accorti anche navigando sulla rete.
Anche la memoria è importante, si compila e si esegue anche
con soli 32Mb di RAM, ma per fare le cose velocemente ne
occorrono almeno 64, pensate che l' ultimo ambiente integrato
della Borland, il Jbuilder 3, ha come requisito minimo di RAM
96 Megabyte.
Per finire ritorno al Java Development Kit della Sun
Microsystem, con questo è possibile produrre tutto il
software che si vuole senza dover pagare diritti di uso del
prodotto come avviene con il Borland Jbuilder, il Symantec
Cafe, e il Microsoft Visual Java, vi consiglio di leggervi la
licenza d'uso che troverete quando andrete a scaricare il JDK
prima di cominciare a produrre software.
Introduzione
alla programmazione Java
La
principale differenza tra Java e gli altri linguaggi di
programmazione ad oggetti è che mentre con questi ultimi è
possibile anche programmare ad oggetti con Java si deve
assolutamente programmare ad oggetti. Quindi punto
fondamentale a questo punto è spiegare cosa vuol dire
programmare ad oggetti. Sostanzialmente la programmazione
avviene allo stesso modo dei linguaggi "normali",
solo che sia i dati che le funzioni che li manipolano sono
racchiusi in delle strutture dette classi. Le classi sono dei
prototipi di oggetti, ovvero sono delle strutture astratte
(non troppo vedremo) che possono essere instanziate e quindi
creare un oggetto (ma anche più di uno).
La classe definisce tutte le proprietà degli oggetti
appartenenti a quella classe, detti attributi, e le funzioni
che verranno usate per agire su di essi, detti metodi. Ad
esempio è possibile definire una classe delle persone, come
segue:
Inizio classe persone
Attributo annodinascita
Metodo calcolaetà (annoattuale)
Fine classe persone
La classe delle persone così definita ha un attributo che è
annodinascita che sarà sicuramente un numero intero ed un
metodo che in base all' anno attuale passatogli calcola l'età
della persona. Usando il formalismo di Java,per definire la
classe persone scriveremo:
class persone
{
public int annodinascita;
public int calcolaeta ( int annoattuale )
{
return ( annoattuale - annodinascita );
}
}
Come si vede abbiamo dichiarato sia il metodo che l'attributo
come public, vedremo tra poco cosa significa, vediamo anche
che la classe comincia con { e finisce con }, così anche i
metodi. Questo ricorda molto il C, e devo dire che la sintassi
di Java è molto simile, anzi quasi uguale a quella del C,
mentre per chi non conosce il C, le parentesi graffe
rappresentano il begin e l'end del pascal. La classe avrà un
cosiddetto costruttore (o più di uno), che è un metodo
particolare che di solito viene utilizzato per inizializzare
gli attributi quando viene instanziata la classe in un
oggetto, esso è una funzione che non ha nessun tipo di
ritorno ed il nome uguale al nome della classe. Ho detto che i
costruttori possono essere più di uno, che però il nome del
costruttore deve essere lo stesso di quello della classe, chi
è abituato a programmare con linguaggi non orientati agli
oggetti troverà tutto questo strano, però è possibile perché
Java fa il cosidetto overloading di funzioni, ovvero funzioni
con lo stesso nome che hanno parametri diversi (detti in
informatica parametri formali) sono diverse, e al momento
dell'invocazione viene scelta la funzione in base al parametro
(detto parametro attuale). Questo vale per ogni metodo, non
solo per i costruttori.
class persone
{
public int annodinascita;
public String Cognome=new String();
// Costruttori
public persone(int annonascita)
{
this("Non Conosco");
this.annodinascita=annonascita;
}
public persone(String Cognome)
{
this(0);
this.Cognome=Cognome;
}
public persone(int annonascita , String Cognome)
{
annodinascita=annonascita;
this.Cognome=Cognome;
}
// Funzione che calcola l'età del soggetto;
public int calcolaeta ( int annoattuale )
{
return ( annoattuale - annodinascita );
}
}
Le linee che cominciano con // sono dei commenti, vengono
ignorati dal compilatore, vi sono altri due tipi di commenti,
quelli racchiusi tra /* e / che permettono di definire
commenti su più linee e quelli racchiusi tra /** e */, che
permettono sempre di definire commenti su più linee, sono
detti commenti di documentazione, essi si devono trovare
subito prima la dichiarazione di classi, di membri di classi
(attributi o metodi) o costruttori, e vengono inclusi nella
eventuale documentazione del codice generata automaticamente.
Nell'esempio vediamo che ci sono tre costruttori, diversi per
i parametri formali, che hanno lo stesso nome, vediamo inoltre
un nuovo attributo che è Cognome, esso è una Stringa,
definita come public String Cognome=new String(); la parte
prima dell'uguale è chiara, lo è meno quella a destra, quel
new String() crea un nuovo oggetto della classe String, e ne
invoca il costruttore che non ha parametri, questo è il modo
standard usato da Java per instanziare gli oggetti di una
classe. Non deve sorprendere che il tipo di dato stringa sia
una classe, in Java è possibile usare oggetti che
rappresentano tutti i tipi di dato del linguaggio, inseriti
per completezza del linguaggio, detti involucri che a volte
sono molto utili, è però possibile anche usare i valori.
Quindi ad esempio ci troveremo a lavorare sia con interi che
con oggetti che rappresentano interi. Un ultima cosa che salta
all'occhio dall'esempio è che i costruttori hanno volutamente
dei parametri che hanno lo stesso nome degli attributi, anche
questo è possibile in Java, il quale stabilisce che quando c'è
un assegnamento alla sinistra dell'uguale ci deve essere
l'attributo, e alla destra il parametro, comunque se non
vogliamo confonderci possiamo usare il riferimento this,
scrivendo ad esempio this.annodinascita intendiamo
l'attributo. This è un riferimento all'oggetto, e
nell'esempio lo troviamo anche come invocazione di funzione
this(0), in questo caso esso è un riferimento ad un
costruttore dell'oggetto, in questo caso chiama il costruttore
persone (int annodinascita), con il valore 0. E' quindi
possibile in un costruttore chiamare un costruttore diverso
della classe stessa, a patto che l'invocazione sia la prima
istruzione del costruttore e che il costruttore sia diverso da
quello attuale.
A
questo punto siamo pronti a creare oggetti appartenenti alla
classe da noi appena definita, abbiamo tre modi per farlo,
perché abbiamo creato tre costruttori, essi sono:
persone Pietro=new persone(1974);
oppure
persone Pietro=new persone("Castellucci");
oppure
persone Pietro=new persone(1974,"Castellucci");
ora vogliamo creare un altro oggetto della classe persone
persone Lina=new persone(1975);
oppure
persone Lina=new persone("Marucci");
oppure
persone Lina=new persone(1975,"Marucci");
a questo punto ho creato due oggetti della classe persone,
essi sono in una relazione con la classe detta di inst_of, gli
oggetti si chiamano uno Pietro e l'altro Lina, è possibile
anche copiare i riferimenti degli oggetti, ad esempio è
possibile scrivere:
persone Pietro2=Pietro;
Costruiti gli oggetti ne poso invocare i metodi, questo si fa
indicando Oggetto.Metodo, ad esempio è possibile invocare i
metodi:
Pietro.calcolaeta(2000);
Pietro2.calcolaeta(2000);
Lina.calcolaeta(2000);
Introduciamo
adesso degli attributi e dei metodi particolari, i cosidetti
membri statici. Per come abbiamo definito i membri della
classe non ci è possibile referenziare direttamente dalla
classe attributi e metodi ( persone.annodinascita è un
errore), questo perché essi lavorano su una istanza della
classe, ovvero su un oggetto, però a volte può essere utile
scrivere metodi e attributi che possano essere invocati senza
dover istanziare l'oggetto, ma direttamente dalla classe, per
fare questo occorre dichiararli static, ad esempio:
class TitoliAziendaVattelapesca
{
public static int TassodiInteresse=3;
public String Proprietario=new String();
public static float InteressiMaturati (int Periodo)
{
return((Periodo * TassodiInteresse )/100)
}
TitoliAziendaVattelapesca(String nome)
{
Proprietario=nome;
}
}
Quindi potremo decidere ad esempio di instanziare un oggetto
della classe TitoliAziendaVattelapesca solo se ci conviene, ad
esempio facendo:
if (TitoliAziendaVattelapesca.InteressiMaturati(12)>1000)
CompraAzioni(10000);
Dove CompraAzioni(int X) è una funzione che instanzia X
TitoliAziendaVattelapesca.
Introduciamo adesso la relazione is_a tra classi, data una
classe è possibile creare una nuova classe da questa facendo
come si dice in gergo una specializzazione della prima classe.
La nuova classe creata è in relazione is_a con la prima.
Creata una classe studente dalla classe (detta superclasse)
persone, la nuova classe eredita dalla prima tutti i metodi e
gli attributi, con la possibilità di definirne dei nuovo o di
ridefinirne alcuni, in Java l'estensione di una classe si
esplicita con la parola chiave extends.
class studente extends persone
{
int matricola;
// Costruttori
public studente(int annonascita)
{
super(annonascita,"Non Conosco");
}
public studente (String Cognome)
{
super(0,Cognome);
}
public studente(int annonascita , String Cognome)
{
super(annonascita,Cognome);
}
}
Come si vede dall'esempio la classe studente eredita tutti i
metodi e gli attrubuti della classe persone, definisce un
nuovo attributo matricola e nei suoi costruttori chiama i
costruttori della classe persone, con super().
super() può essere, come this(), una invocazione di un altro
costruttore (tra parentesi vanno i parametri eventuali) o un
riferimento alla classe (alla superclasse in questo caso),
quindi super.annodinascita rappresenta l'attributo
annodinascita della superclasse persone. Le relazioni is_a e
inst_of sono le due relazioni più importanti dei modelli ad
oggetti. Adesso concludo con un esempio ed alcune
considerazioni sull'esempio per spiegare il significato del
public che abbiamo introdotto sopra, e del private e protected
(attributi e metodi possono essere dichiarati come public,
private e protected).
class A
{
public int a;
private int b;
protected int c;
// Suoi medodi, attributi e costruttori
}
class B extends A
{
public float a;
private float b;
protected float c;
// Suoi medodi, attributi e costruttori
}
class C
{
// Suoi medodi, attributi e costruttori
}
Abbiamo definito tre classi, A,B e C, B è definita da A
ridefinendone i tre attributi, da interi a reali.
In A, nei suoi costruttori e nei suoi metodi ho libero accesso
ai propri attributi di tipo intero, senza limitazioni, ovvero
posso scriverli e leggerli a piacimento.
In B e C accade lo stesso per i propri attributi, ma vediamo
cosa succede per quelli delle altre classi.
Ad esempio in B (in un suo metodo ) se scrivo espressioni con
a,b e c, scriverò delle espressioni per dei float (in Java è
importantissimo il tipo delle espressioni), per referenziare
invece gli attributi omonimi di A da cui è ereditata,
dobbiamo scrivere come sappiamo, super.a, super.b e super.c (e
sono degli interi).
Il nostro compilatore Java non darà problemi per le prime due
ma ci darà errore per la terza, questo perché il c di A è
protected, questo vuol dire che è possibile leggere e
scrivere quell'attributo solo all'interno della classe a cui
appartiene, ma non è possibile leggerlo e scriverlo da classi
estranee o da sottoclassi.
A questo punto mettiamoci in un metodo di C, instanziamo qui
dentro un oggetto della classe B (lo chiamo b) e scriviamo le
espressioni b.a, b.b e b.c , il nostro simpatico compilatore a
questo punto ci darà buona solo la prima, questo perché la
terza è protected ed è quindi visibile solo nella classe di
appartenenza e la seconda è private, questo significa che è
visibile solo alla classe di appartenenza e alle sue
sottoclassi, e C non è sottoclasse di B.
Sopra ho un po' barato, ovvero ho parlato di attributi di
classi e di oggetti come se fossero la stessa cosa, ma in
effetti lo sono, solo con la piccola differenza che se accedo
all'attributo di una classe ( NOMECLASSE.NOMEATTRIBUTO )questo
sarà sicuramente static, e vi accederò solo in lettura, è
in pratica una costante. Quando instanzierò la classe in un
oggetto (NOMECLASSE NOMEOGGETTO= new NOMECLASSE (parametri);
), accedendo allo stesso attributo dell'oggetto (
NOMEOGETTO.NOMEATTRIBUTO ) accederò allo stesso valore di
prima, e non potrò modificarlo (è static). Se cercherò
invece di accedere ad un attributo non dichiarato static di
una classe avrò ovviamente errore, infatti questo attributo
verrà creato al momento della creazione dell'oggetto della
classe, ed il più delle volte verrà inizializzato dal
costruttore dell'oggetto.
Spero di essere stato abbastanza chiaro nella trattazione
dell'argomento, però devo dirvi che i modelli ad oggetti sono
piuttosto complicati, ed è impossibile spiegarli in dettaglio
in un solo paragrafo, occorrerebbe un corso dedicato
interamente a loro. Ovviamente quello che vi ho detto non è
tutto sui modelli ad oggetti, ho solo introdotto alcuni
concetti che ci basteranno per fare i nostri programmi in
Java, se dovessi accorgermi durante il corso di avere
tralasciato qualche punto importante per i nostri scopi il
corso aprirà sicuramente una piccola parentesi.
Per
il lettore che volesse approfondire l'argomento non mi sento
di consigliare un testo, perché ve ne sono vari
sull'argomento e tutti egregi, se invece vi accontentate di
una introduzione all'argomento potreste vedere i capitoli
iniziali di ogni buon manuale di programmazione per
principianti di Linguaggi ad oggetti (C++ o Java), come ad
esempio Java: Didattica e Programmazione di K.Arnold e
J.Gosling (Ed. Addison-Wesley) Capitoli 2,3 e 4.
Mi raccomando però che sia per principianti, perché sui
testi di programmazione avanzata l'argomento è dato per
scontato. Dopo questa introduzione dovresti esserti
fatto un'idea di cosa è e di come opera il JAVA, quindi sei
pronto/a ad affrontare il corso su JAVA della SUN
Microsystem su www.html.it
. Il corso è strutturato in 23 lezioni con punti di
approfondimento e la possibilità di scaricare gli esempi
dimostrativi che vengono utilizzati. Questo corso è
abbastanza complesso e quindi indirizzato agli utenti più
esperti che comunque, se seguito approfonditamente, può dare
solide basi anche ai principianti. Le lezioni sono le
seguenti, clicca sull'argomento al quale sei interessato anche
se ti consiglio (se sei alle prime armi) di seguire il corso
punto per punto data la correlazione tra una lezione e
l'altra. Buona fortuna.
Corso
sul JAVA di HTML.IT
Il package del linguaggio, diverse applicazioni Java e il
primo programma.
1. Cosa
sono i Package di Java
I package sono delle collezioni di classi, racchiuse in una
collezione che le accomuna. Sono in pratica delle librerie a
cui l'utente può accedere e che offrono varie funzionalità.
2. Scrittura
di applicazioni cosiddette "a console"
Le applicazioni più semplici da costruire, che non hanno
grafica e che hanno interfaccia a caratteri, tipo le vecchie
applicazioni DOS
3. Il
nostro primo programma in Java
Sulla base di quanto esposto finora creiamo il primo programma
in Java che faccia qualcosa
Gli esempi delle
prime 5 lezioni
Gli esempi di queste prime lezioni raccolto in un file .zip da
4Kb
Espressioni del linguaggio
4. Tipi
primitivi di Java e valori
Per tipi primitivi di un linguaggio si intende i tipi di dato
già definiti nel linguaggio e dai quali si può partire con
la costruzione di espressioni, o di tipi composti.
5. Variabili
Le variabili sono dei valori modificabili, ovvero sono dei
nomi che rappresentano un valore di un certo tipo, il valore
associato al nome può essere variato
6. Operatori
Gli operatori del linguaggio Java sono gli stessi degli altri
linguaggi, in più ogni nuovo tipo avrà i propri metodi che
ne implementeranno nuovi operatori
I costruttori del linguaggio
7. Istruzioni
Istruzioni for, do-while, while, break, continue, Etichette e
di return
8. Cenni
sulle eccezioni e cenni sui thread
Le eccezioni sono un modo chiaro per controllare gli errori,
senza confondere il codice con tante istruzioni di controllo
dell'errore
Gli esempi
pratici dalla lezione 6 a 10
Gli esempi di queste prime lezioni raccolto in un file .zip da
13Kb
Potenzialità di Java
8. Java
2 Advanced Program Interface: il package java.lang
Esame di alcune funzionalita' del Package lang non viste nelle
precedenti lezioni
9. Il
package java.util
Questo package è molto utile, esso mette a disposizione 34
classi e 13 interfacce che implementano alcune tra le
strutture dati più comuni, alcune operazioni su date e sul
calendario, e altre cose.
10. I
package java.util
In questa lezione vedremo la parte di java.util che tratta gli
utilissimi file .zip e i .jar Iniziamo a vedere java.util.zip
11. I
package java.net
Vari package per effettuare delle programmazione in Java.
12. Conclusioni
sui package
Nelle lezioni precedenti abbiamo visto alcuni package
contenenti le API del linguaggio Java, ma ce ne sono degli
altri...
Gli esempi
pratici dalla lezione 11 a 15
Gli esempi di queste prime lezioni raccolto in un file .zip da
29Kb
Applicazioni VS Applet
13. Interfacce
grafiche ed eventi
La programmazione di interfacce grafiche, quindi alla
creazione di applet e di applicazioni a finestre.
14. Cosa
è una applicazione a Finestre
E' l'applicazione che più spesso usiamo quando lavoriamo al
computer, essa è una applicazione che viene eseguita in
locale, che come interfaccia utente utilizza le tecnologia
delle finestre
15. Cosa
è un applet
Un'applet non è altro che una applicazione Java che gira su
web. L'applet presenta qualche differenza con le applicazioni
16. Applicazioni
miste
Possiamo creare delle appliczioni Java che usano altre
applicazioni Java, cosa che non accade nei normali linguaggi
di programmazione, ove è solo possibile invocare da un
programma altri programmi.
Gli
esempi pratici dalla lezione 16 a 19
Gli esempi di queste quattro lezioni raccolto in un file .zip
da 20Kb
Interfacce grafiche
17. GUI
e AWT
La programmazione di interfacce grafiche, quindi alla
creazione di applet e di applicazioni a finestre.
18. Le
etichette ed i bottoni
Prima di cominciare questo che sarà uno dei capitoli più
interessanti del corso, introduciamo il package awt e cosa è
un componente GUI.
19. Contenitori
e Gestione dei Layout
In questa lezione vedremo il funzionamento dei contenitori e
dei layout, e come sfruttarli per rendere migliori le nostre
interfacce.
20. Menu
Un menu in una applicazione non è altro che una MenuBar in
cui vi sono vari menu. Si pensi ad un programma qualsiasi con
le voci di menu File Edit ed Help.
A. 350
applet Java ordinate per argomento
In questa lezione esamineremo due componenti, i più semplici,
le Label e i Bottoni. Le prime non hanno nessun evento
associato mentre i secondi, a seconda del tipo di bottone
hanno due tipi di eventi associati.