RELAZIONE 6 ANCARANI SILVIA OBIETTIVI: -costruzione ed esplorazione di applet java - utilizzo dell’applet via WEB DESCRIZIONE DEL PROBLEMA Costruire un Applet in java che rispecchi il funzionamento di uno dei componenti SW generati nell’esercitazione 4 (simulazioni) per testare le macchine genera punti. Si vuole poter inserire via GUI il n. di interazioni con cui si vuole far partire la simulazione. A tale scopo si crei quindi un pulsante START che dia il via alla simulazione. Rendere poi l’applet generato fruibile via WEB creando la pagina HTML che permette appunto di utilizzarlo. ANALISI Innanzitutto è necessario specificare che tutti gli applet sono sottoclassi della classe Applet contenuta nel package java.applet. Di particolare importanza è la caratteristica che gli applet non hanno un metodo main( ), ma hanno metodi che vengono richiamati quando si verificano eventi specifici durante l’esecuzione. Innanzitutto per inizializzare l’applet si usa il metodo init( ) e al suo interno viene definito lo stato iniziale, si possono creare oggetti necessari per l’applet, si possono caricare immagini e caratteri. L’altro metodo tipico dell’applet è start( ) e serve per dare l’avvio mentre, per arrestare l’esecuzione, si dispone del metodo stop( ). Il nostro scopo è comunque quello di creare una finestra con il pulsante per dare l’avvio all’esecuzione ed una griglia dove inserire il n. di interazioni desiderate. A tale scopo è necessario l’utilizzo della grafica in java e quindi dei packages java.awt e javax.swing. Nel metodo init( ) della classe MyPanel vengon infatti creati oggetti di tipo Jpanel, Jlabel, Jbutton e JtextField che sono necessari a realizzare l’applet voluto. Successivamente viene creata una simulazione e una macchina genera punti (scelta tra quelle create nella relazione 4). Per quanto riguarda l’inserimento dell’applet nella pagina WEB si utilizza il tag <APPLET> che è un comando di programmazione del linguaggio HTML. I browser abilitati per java utilizzano le informazioni contenute nel tag per creare ed eseguire i file di classe compilati dall’applet . La pagina HTML creata è “Test” e si può notare che viene richiamata l’esecuzione dell’Applet1. Nel caso in cui non si disponga di un browser abilitato per java, si utilizza il comando appletviewer pr il collaudo degli applet ma esso visualizza solo gli applet inclusi nella pagina WEB con l’applet. In tal modo il browser abilitato preleva ed esegue l’applet e i file necessari ad esso. PROGETTO Nella class MyPanel creo una PointGenerator e ne faccio una simulazione che viene eseguita sia come applicazione che come applet. La classe MyPanel è una sottoclase di Jpanel e per questo nel costruttore viene invocato super( ) per richiamare i metodi della classe base Jpanel. Occorre creare una finestra dove visualizzare ciò che la macchina genera punti disegna e una finestra di funzionamento dove inserire la griglia con il n. di interazioni ed il pulsante START. A tale scopo utilizzo la classe Frame e creo la sottoclasse MyFrame che eredita da quella base i metodi e genera la finestra con la relativa barra del titolo e il pulsante di chiusura. E’ bene ricordare che i frame ereditano il loro comportamento dalla classe Window, che eredita da Conteiner che eredita da Component e perciò i frame sono contenitori, come pure i pannelli, a cui possiamo aggiungere altri componenti utilizzando il metodo add( ). Al momento della creazione la finestra è invisibile e quindi occorre mostrarla con il metodo show( ). Una volta creato il pulsante START a partire dalla classe Jbutton, occore associarlo all’evento che deve generare quando viene premuto e perciò si utilizza l’interfaccia ActionListener che viene implementata con gli opportuni metodi per la gestione di eventi d’azione. Nel nostro caso quando viene inserito nella griglia il n. di interazioni voluto è necessario premere INVIO in modo che venga riconosciuto il n. immesso, e poi premere il pulsante START per dare inizio all’esecuzione. E’ ovvio che il pulsante START è associato alla classe ActionEvent per gestire l’azione del componente. Nel pannello inserisco inoltre la possibilità di scegliere il tipo di PoinGenerator (LineGenerator, HouseGenerator o CircleGenerator) grazie alla classe JcomboBox appartenente al package javax.swing. Anche questo evento è gestito tramite l’interfaccia ActionListener. Per gestire gli eventi della finestra, invece, si dispone dell’interfaccia WindowListener implementandola con gli opportuni metodi per la chiusura, apertura etc.. della finestra. E’ bene notare che per mandare in esecuzione l’applicazione viene usato il file PanelSuper.java che crea un oggetto di tipo Applet1 la cui classe di appartenenza crea un oggetto di tipo MyPanel. Per l’esecuzione dell’applet tramite la pagina HTML viene utilizzato invece la classe Applet1. IMPLEMENTAZIONE Codice e documantazione reltivi a: - Applet1.java - MyPanel.java - MyFrame.java E’ necessario, prima dei codici, importare i seguenti packages: ° java.awt.*; ° javax.swing.*; per la classe MyFrame; ° java.awt.*; ° javax.swing.*; ° java.applet.*; ° tools.*; per le classi Applet1 e MyPanel E’ possibile selezionare il tipo di PoinGenerator tra quelli creati nella relazione 4, ossia LineGenerator, HouseGenerator e CircleGenerator. Per poter osservare l’esecuzione dell’applicazione occorre infatti scegliere il tipo di macchina genera punti ed inserire il n. di interazioni volute, premere poi INVIO e quindi il pulsante START. Per una buona esecuzione si consiglia di inserire un elevato n. di interazioni nell’applicazione di CircleGenerator, mentre per gli altri PointGenerator è meglio mettere circa 10 interazioni o poco di più. CASI D’USO Codice e documentazione relativi alla classe AppletSuper e Test.html. Prima del codice del file AppletSuper.java vengono importati alcuni packages indispensabili per l’esecuzione: ° java.awt.*; ° javax.swing.*; ° java.applet.*; ° tools.* L’esecuzione è possibile sia come applicazione che come applet ed è fruibile via Internet con il file Test.html. NOZIONI ACQUISITE Con questo progetto ho acquisito le tecniche e i metodi necessari per la creazione e l’esecuzione degli applet, nonché l’utilizzo via WEB del medesimo. Ho infatti constatato una prima differenza tra applicazioni e applet ed è che il secondo non contiene un metodo main( ) per l’esecuzione. La classe pubblica Applet, contenuta nel package java.applet, mette a disposizione 2 tipi di comportamento che tutti gli applet devono avere: - possibilità di funzionare come parte di un browser e gestire eventi quali il fatto che venga ricaricata la pagina WEB; - possibiltà di presentare un’interfaccia utente grafica e gestire gli input degli utenti.