|   | 
      | 
  
  
    | 
      
     | 
    Exercici 1: Les interfaces Listener | 
  
  
    |   | 
      | 
  
  
    | 
      
     | 
    
       Es tracta de posar a prova el domini del paradigma 
         esdeveniment-oient (event-listener). 
        L'exercici consisteix a fer un nou projecte, 
        M5ex01, definit com a "Basic 
        Java Application", i del codi que automàticament escriu 
        JCreator al fitxer 
        M5ex01.java suprimir-ne el mètode 
        constructor 
       
      
        
           public M5ex01() { 
                addWindowListener(new WindowAdapter() { 
                    public void windowClosing(WindowEvent
            e) { 
                        dispose(); 
                        System.exit(0); 
                    } 
                }); 
            } | 
         
       
      i substituir-lo per aquest altre, molt més senzill: 
       
      
        
           public M5ex01() { 
                addWindowListener(this); 
            } | 
         
       
      Això implica que el listener
        dels esdeveniments java.awt.event.WindowEvent
        és ara el propi frame i per tant
        és necessari implementar-li la
        interfície java.awt.event.WindowListener. 
         
        Feu-ho per tal d'aconseguir: 
      
        - Que la finestra es tanqui
          i l'aplicació s'acabi quan es
          prem el botó "X" de dalt a la dreta (això
          ja ho feia sense cap variació en el codi que proposa JCreator)
 
           
         
        -  Que la finestra es torni de color
          gris clar (Color.LIGHT_GRAY) quan deixi de
          ser activa, (per exemple, quan cliquem
          alguna altra finestra de la pantalla) i que recuperi el color
          blanc (Color.WHITE) quan torni a ser activa
          (per exemple, quan hi cliquem a sobre).
 
           
         
        -  Que en reduïrla a una icona
          amb el botó corresponent de dalt a la dreta, les seves dimensions
          (mètode public
          void setSize(int width,int height)) passin a ser 200x200, cosa
          que veurem en desiconificar-la.
 
         
       
      Recordeu que per implementar
        una interface en una classe,
        cal afegir-li tots els mètodes
        propis d'aquesta interfície, encara
        que no es facin servir. Per saber quins són aquests mètodes,
        heu de consultar la documentació
        de la interfície. 
     | 
  
  
    |   | 
      | 
  
  
    |   | 
    Exercici 2: Un traductor de noms de nombres | 
  
  
    |   | 
      | 
  
  
    |   | 
    El següent exercici consisteix en un petit
      traductor de noms de nombres del zero al nou. Premeu el botó
      d'aquí sota per veure què heu d'aconseguir fer: | 
  
  
    |   | 
      | 
  
  
    |   | 
    
      
     | 
  
  
    |   | 
      | 
  
  
    |   | 
    
      
        - El projecte ha 
          de dir-se M5ex02.
 
           
         
        -  El frame ha de ser de 150x250.
 
           
         
        - El font del camp
          de text ha de ser "SansSerif",
          "plain" de mida
          10.
 
           
         
        - El font dels botons
          ha de ser "SansSerif",
          "plain" de mida
          30.
 
           
         
        - Recordeu que el mètode per
          obtenir un nombre enter (int)
          a partir d'una cadena (String)
          s és static
          int Integer.parseInt(String s) i que el mètode
          per convertir un nombre enter (int)
          num a cadena (String)
          és String String.valueOf(int num).
          Consulteu la documentació de
          les classes java.lang.Integer
          i java.lang.String. 
 
           
         
        - Les diverses traduccions, tal com hem fet al segon
          dels "Editor de missatges" (pràctica
          5, projecte Missatgeria02),
          han d'estar en un fitxer a part, Etiquetes.java
          el qual, no ho oblideu, heu de copiar a la
          carpeta del projecte i, a més, heu d'afegir
          al projecte des de JCreator.
 
           
         
        - El codi de M5ex02.java 
          ha de ser independent respecte a la quantitat 
          d'idiomes. Això vol dir que les variacions al fitxer 
          Etiquetes.java no han de suposar haver de 
          fer variacions al fitxer M5ex02.java.
 
       
     | 
  
  
    |   | 
      | 
  
  
    |   | 
    Exercici 3 (optatiu): Controls, layout managers,
      interfícies... | 
  
  
    |   | 
      | 
  
  
    |   | 
    Aquest exercici consisteix en canviar el segon
      dels "Editor de missatges" (pràctica
      5, projecte Missatgeria02)
      per tal que la selecció d'idioma es faci, no amb un Choice,
      sinó amb un CheckboxGroup. Premeu
      el botó d'aquí sota i vegeu què heu d'aconseguir: | 
  
  
    |   | 
      | 
  
  
    |   | 
    
      
     | 
  
  
    |   | 
      | 
  
  
    |   | 
    
      
        - El projecte ha 
          de dir-se M5ex03. Podeu fer servir el mateix 
          fitxer Etiquetes.java que, no ho oblideu, 
          heu de copiar a la carpeta del projecte 
          i, a més, heu d'afegir al projecte 
          des de JCreator. Afegiu-li la possibilitat 
          de la llengua francesa o una altra que us sigui avinent.
 
           
         
        - Ha de mantenir-se la independència 
          del codi respecte de la quantitat d'idiomes 
          i d'opcions per a cada idioma. Això 
          vol dir que les variacions al fitxer 
          Etiquetes.java no han de suposar haver de 
          fer variacions al fitxer M5ex03.java.
 
           
         
        - Heus aquí alguns consells:
 
           
          
            - Feu un panel especial pels checkboxes
              del checkboxgroup d'idiomes, amb
              java.awt.GridLayout com a layout
              manager. El nombre de files
              ha de ser 1 i el de columnes l'heu
              d'obtenir a partir del fitxer Etiquetes.java.
 
               
             
            - La classe java.awt.CheckboxGroup
              no disposa de cap mètode
              per saber l'índex, és
              a dir, el número d'ordre del checkbox
              que està seleccionat. Segurament,
              a manca d'una solució millor, us convé:
 
               
              
                - Fer servir i per tant definir,
                  una classe filla de java.awt.Checkbox
                  (digueu-li ElMeuCheckbox, per exemple)
                  amb una variable de classe
                  int index per enmagatzemar-hi la posició
                  del checkbox dins del checkboxgroup.
                  Llavors, al mètode constructor,
                  a més dels paràmetres
                  del constructor de java.awt.Checkbox,
                  hi heu d'incloure el paràmetre
                  int id, el valor
                  del qual es dipositarà a index.
                  Això demana, a més, un mètode
                  public int getIndex() per poder saber
                  l'índex d'un ElMeuCheckbox.
 
                   
                 
                - Fer servir i, per tant definir,
                  una classe filla de java.awt.CheckboxGroup
                  (digueu-li ElMeuCheckboxGroup, per
                  exemple) amb una variable de classe
                  ElMeuCheckbox[] checkboxes per emmagatzemar-hi
                  un array lineal amb els checkboxes
                  del checkboxgroup. Al mètode
                  constructor , a més
                  dels paràmetres del
                  constructor de java.awt.CheckboxGroup,
                  (no en té!) hi heu d'incloure el paràmetre
                  int numCheckboxes, el valor
                  del qual és el nombre d'idiomes disponible i que heu
                  d'obtenir a partir del fitxer
                  Etiquetes.java. La variable
                  checkboxes s'inicialitza
                  ara amb la línia de codi:
 
                   
                  
                    
                      | checkboxes=new ElMeuCheckbox[numCheckboxes]; | 
                     
                   
                   
                  Llavors, a la classe ElMeuCheckboxGroup,
                  hi ha d'haver els mètodes: 
                   
                  
                    - public void addCheckbox (ElMeuCheckbox
                      checkbox,int id), que ha de posar el checkbox
                      d'índex id
                      a la posició id de l'array
                      checkboxes.
 
                       
                     
                    - public ElMeuCheckbox getCheckbox (int
                      id), que ens ha de retornar
                      el checkbox a la posició
                      id de l'array
                      checkboxes.
 
                   
                 
               
             
           
         
       
     | 
  
  
    |   | 
    Tramesa al vostre tutor: | 
  
  
    |   | 
      | 
  
  
    |   | 
    Comprimiu les dues (o tres) carpetes 
      M5ex01 i M5ex02 (i M5ex03) 
      en un fitxer ZIP, 
      que es dirà <nom_usuari>_m5.zip 
      i trameteu-lo al vostre tutor. | 
  
  
    |   | 
      | 
  
  
    |   | 
      | 
  
  
    |   | 
    
      
     | 
  
  
      | 
  
  
    |   | 
      | 
  
  
    |   | 
      |