| HOME | FORUM | INDICE |

download CheckRadioEsempio2.java

/*
    L'esempio mostra l'utilizzo del controllo Checkbox.

    Autore: Agosto 2009, Giovanni Iacobelli - http://www.iacosoft.com

*/


import java.awt.*;
import java.awt.event.*;

class CheckRadioEsempio2 extends Frame
{
    Label msg_reddito= new Label("REDDITO (Euro): ", Label.LEFT);
    Label msg_hobby= new Label("HOBBIES: ", Label.LEFT);

    /*
        crea l'insieme dei controlli di tipo Checkbox
        a scelta esclusiva (Radio Option).
        L'associazione al gruppo reddito, istanza della
        classe CheckboxGroup, trasforma i Checkbox in Radio Option.
    */

    CheckboxGroup reddito= new CheckboxGroup();
    Checkbox r1= new Checkbox("0-10.000", true, reddito);
    Checkbox r2= new Checkbox("10.000-20.000", false, reddito);
    Checkbox r3= new Checkbox("20.000-30.000", false, reddito);
    Checkbox r4= new Checkbox("Oltre 30.000", false, reddito);

    //insieme dei controlli Checkbox
    Checkbox h1= new Checkbox("Lettura");
    Checkbox h2= new Checkbox("Musica");
    Checkbox h3= new Checkbox("Computer");
    Checkbox h4= new Checkbox("Pesca");
    Checkbox h_all= new Checkbox("Tutti");

    CheckRadioEsempio2 ObjMain;
    
    //costruttore della classe
    public CheckRadioEsempio2()
    {
        //aggiunge il gestore degli eventi alla finestra
        addWindowListener(new GestoreWindow());
        ObjMain= this;

        /*
            viene creato il pannello che conterrā
            i Radio Option
        */

        Panel con_red= new Panel();

        con_red.add(msg_reddito);
        con_red.add(r1);
        con_red.add(r2);
        con_red.add(r3);
        con_red.add(r4);
        
        //il pannello č aggiunto nella zona alta della finestra
        add(con_red, BorderLayout.NORTH);

        /*
            viene creato il pannello che conterrā
            i CheckBok
        */

        Panel con_hob= new Panel();

        con_hob.add(msg_hobby);
        
        //viene aggiunto il gestore degli eventi al Checkbox TUTTI
        h_all.addItemListener(new GestoreItemAll());
        con_hob.add(h_all);

        //viene aggiunto il gestore degli eventi ai rimanenti Checkbox
        GestoreItem gest= new GestoreItem();
        h1.addItemListener(gest);
        h2.addItemListener(gest);
        h3.addItemListener(gest);
        h4.addItemListener(gest);

        con_hob.add(h1);
        con_hob.add(h2);
        con_hob.add(h3);
        con_hob.add(h4);
        
        //il pannello č aggiunto nella zona centrale della finestra
        add(con_hob, BorderLayout.CENTER);

    }

    /*
        genera una stringa descrittiva relativa all'input dell'utente
    */

    public String Resoconto()
    {
        String ris= msg_reddito.getText() + " ";
        if (r1.getState())
        {
            ris += r1.getLabel();
        }
        
        if (r2.getState())
        {
            ris += r2.getLabel();
        }

        if (r3.getState())
        {
            ris += r3.getLabel();
        }

        if (r4.getState())
        {
            ris += r4.getLabel();
        }

        ris += "\n" + msg_hobby.getText();

        if (h1.getState())
        {
            ris += " " + h1.getLabel();
        }
        
        if (h2.getState())
        {
            ris += " " + h2.getLabel();
        }

        if (h3.getState())
        {
            ris += " " + h3.getLabel();
        }

        if (h4.getState())
        {
            ris += " " + h4.getLabel();
        }

        return ris;
    }

    //override del metodo ereditato
    public String toString()
    {
        return Resoconto();
    }

    //punto d'ingresso dell'applicazione
    public static void main(String[] args)
    {
        CheckRadioEsempio2 obj= new CheckRadioEsempio2();
        
        //imposta la posizione della finestra
        obj.setLocation(100,100);

        //imposta la dimensione della finestra
        obj.setSize(600,200);
        
        //imposta il titolo della finestra
        obj.setTitle("Test Check e Radio button");

        //rende visibile la finestra
        obj.show();
        
    }

    //gestore del Checkbox TUTTI
    class GestoreItemAll implements ItemListener
    {
        public void itemStateChanged(ItemEvent e)
        {
            /*
                il cambiamento dello stato del Checkbox TUTTI
                provoca l'uguale impostazione ai restanti
                Checkbox
            */

            boolean stato= h_all.getState();
        
            h1.setState(stato);
            h2.setState(stato);
            h3.setState(stato);
            h4.setState(stato);
        }
    }


    //gestore dei rimanenti Checkbox
    class GestoreItem implements ItemListener
    {
        public void itemStateChanged(ItemEvent e)
        {
            /*
                se tutti i checkbox sono stati settati a true,
                il checkbox TUTTI verrā impostato a true altrimenti
                a false
            */

            boolean stato= ( h1.getState()&&
                        h2.getState()&&
                        h3.getState()&&
                        h4.getState());

            h_all.setState(stato);
        }
    }

    //gestore degli eventi della finestra
    class GestoreWindow implements WindowListener
    {
        public void windowDeactivated(WindowEvent e)
        {}

        public void windowClosed(WindowEvent e)
        {}

        public void windowActivated(WindowEvent e)
        {}
        
        public void windowDeiconified(WindowEvent e)
        {}

        public void windowIconified(WindowEvent e)
        {}

        public void windowClosing(WindowEvent e)
        {

            /*
                visualizza nella console la stringa
                descrittiva delle scelte dell'utente
            */

            System.out.println(ObjMain);

            Window f= e.getWindow();
            
            f.dispose();
        }

        public void windowOpened(WindowEvent e)
        {}

    }
}