Gli applet finalmente!

Scrivere un programma che faccia uso di mouse,grafica,etc come un applet e' ancora piu' difficile. Bisogna conoscere le librerie di classi disponibili e quali sono le classi che vanno usate o modificate e quali metodi saranno usati dal "sistema" per comunicare col vostro programma.
Inoltre un messaggio puo' essere inviato anche dall'utente tramite un evento come cliccare col mouse e bisogna conoscere tutti gli eventi e come devono essere trattati nel programma.Un evento,in Java, e' un oggetto ed esso e' associato a due altri oggetti:l'oggetto source(sorgente) che genera l'evento e l'oggetto listener che tratta l'evento. Gli oggetti grafici di AWT possono essere sorgente di una serie di eventi,ognuno dei quali e' caratterizzato da un nome.Ad esempio l'oggetto Button puo' generare gli eventi Action ,Focus,Key,Mouse e Component. Listener puo' essere invece una qualsiasi classe:basta che inizi con :
Class PincoPallino implements TipoeventoListener... 
Si dice in gergo che essa implementa l'interfaccia TipoeventoListener, nel senso che contiene delle (ri)definizioni di una serie di metodi predefiniti per trattare un certo tipo di evento.Quindi e' importante conoscere i nomi degli eventi e dei metodi ad essi associati.

Ad esempio per scrivere il classico CiaoATutti sotto forma di applet dobbiamo sapere che:

  1. Netscape si aspetta che gli scriviate una classe modificando quella di libreria chiamata "Applet"
  2. Per dipingere il contenuto dell'applet Netscape chiama il metodo(routine) paint della stessa classe che va percio' ridefinita.
  3. La classe "Graphics" permette di disegnare definendo un "contesto grafico" con metodi come drawString etc.
    import java.awt.*;
    import java.applet.*;
    public class CiaoATutti1 extends Applet {
    
     public void paint(Graphics g){
       g.drawString("CiaoATutti",5,25);
      }
     }
    

    Una semplicissima interazione come una scritta che segue il mouse,richiede le seguenti conoscenze:
    1. Quando l'utente fa "qualcosa" Netscape richiama un particolare metodo dell'oggetto listener per quell'evento.In questo caso "mouseMoved" dell'interfaccia "MouseMotionListener".
      Ma perche' questo accada sono necessarie 3 cose:
      1. L'oggetto "listener" deve essere aggiunto alla lista di listener nell'oggetto che genera l'evento usando il metodo addTipoeventoListener.
      2. La classe di oggetti "listener" deve implementare l'interfaccia "TipoeventoListener".
      3. Tutti i metodi dell'interfaccia devono essere ridefiniti:non solo quello che serve.
    2. Le informazioni su cosa e' successo sono passate alla routine attraverso un oggetto Tipoevento (in questo caso MouseEvent).
    3. Per aggiornare il disegno nella finestra occorre chiamare repaint() ; non paint() ! che puo' essere chiamata solo da Netscape.
    4. Prima che l'applet sia disegnato da paint() ,Netscape richiama una routine init() dove possiamo inizializzare le nostre variabili e fare un primo disegno dell'applet.
    5. Possiamo ottenere le dimensioni dell'applet con getSize().width e getSize.height
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
    public class Mousedemo extends Applet implements MouseMotionListener{
    
     int mousex , mousey;
    
     public void init(){
       mousex=0;
       mousey=getSize().height - 20;
       addMouseMotionListener(this);
       repaint();
       }
     public void mouseMoved(MouseEvent e){
        mousex = e.getX();
        mousey = e.getY();
        repaint();
        }
     public void mouseDragged(MouseEvent e){
        }
     public void paint(Graphics g){
        g.drawString("CiaoATutti",mousex,mousey);
        }
     }
    

    Sempre piu' difficile!Ora aggiungiamo un tasto che quando viene pigiato fa riscrivere la scritta in un colore scelto a caso.
    1. Viene fornita una classe Button. Button("scritta") permette di crearlo con una scritta.
    2. actionPerformed(ActionEvent e) di ActionListener puo' essere usata per rispondere al tasto .
    3. Possiamo usare il metodo add(oggetto) per aggiungere nella finestra dell'applet il tasto.
    4. Per definire i colori esiste un oggetto Color e vari metodi come g.setColor.
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
    public class Pigiami extends Applet implements ActionListener{
    
      Button tasto;
      Panel p;//aggiunta per far funzionare l'applet con Java 1.2
      Color colore;
    
      public void init(){
    
         add(p = new Panel());//aggiunta per far funzionare l'applet con Java 1.2
         p.add(tasto = new Button("pigiami!"));//modificata per Java 1.2
         tasto.addActionListener(this);
         colore = new Color(0,0,0);
         repaint();
         }
      public void actionPerformed(ActionEvent e){
         colore = new Color((int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256));
            repaint();
            }
      public void paint(Graphics g){
            g.setColor(colore);
            g.drawString("CiaoATutti",20,50);
           }
     }
    
    

    Questa pagina e' stata aggiornata all'awt 1.1.5.La vecchia pagina che funzionava con l'awt 1.0.2 e' disponibile qui.
    INDIETRO a Imparate Java in un'ora
    Maintained by Giuseppe Zito.Last revised .