| HOME | FORUM | INDICE |

download FinestraConMenu.java

/*
    L'esempio mostra coma aggiungere un menu' alla finestra.

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

*/


import java.awt.*;
import java.awt.event.*;
import java.awt.font.*;
import java.awt.geom.*;

class FinestraConMenu extends Frame
{
    Label status =new Label("", Label.CENTER);
    Menu mnFile= new Menu("File");
    Menu mnModifica = new Menu("Modifica");
    Menu mnGuida= new Menu("?");

    //costruttore
    public FinestraConMenu()
    {
        //richiama il costruttore della classe base per impostare il titolo della finestra
        super("Finestra Con Menu");

        int larg= 400;
        int alt= 300;

        //aggiunge un gestore all'evento di chiusura della finestra
        addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){System.exit(0);} });
        
        //imposta le dimensioni della finestra
        setSize(larg, alt);

        //determina le dimensioni dello schermo
        GraphicsEnvironment ge= GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice dv= ge.getDefaultScreenDevice();
        GraphicsConfiguration cfgScr= dv.getDefaultConfiguration();
        Rectangle dim= cfgScr.getBounds();

        //imposta la posizione centrata della finestra rispetto allo schermo
        setLocation((dim.width - larg)/2, (dim.height - alt)/2);
        
        //l'etichetta status avrà il compito di segnalare la voce di menu' selezionata
        status.setFont(new Font("Arial", Font.BOLD, 14));
        add(status);

        MenuBar mMain= new MenuBar();
        
        //viene creato il gestore del click sulla voce di menu' selezionata
        GestoreClickMenu gest= new GestoreClickMenu();

/* INIZIO MENU FILE */
        MenuItem mnApri= new MenuItem("Apri", new MenuShortcut(65)); //65 ascii di A (è usato CTRL + A)
        mnApri.addActionListener(gest);
        mnFile.add(mnApri);

        /* SUBMENU' APRI TEMPLATE */
        Menu mnApriTemplate= new Menu("Apri Template");
        
        MenuItem mnProgetto= new MenuItem("Progetto");
        mnProgetto.addActionListener(gest);
        mnApriTemplate.add(mnProgetto);

        MenuItem mnArchivio= new MenuItem("Archivio");
        mnArchivio.addActionListener(gest);
        mnApriTemplate.add(mnArchivio);
        
        mnFile.add(mnApriTemplate);
        /* FINE SUBMENU' APRI TEMPLATE */
        
        mnFile.addSeparator(); //barra separatrice

        MenuItem mnChiudi= new MenuItem("Chiudi");
        mnChiudi.addActionListener(gest);
        
        mnFile.add(mnChiudi);

        mnFile.addSeparator(); //barra separatrice

        MenuItem mnEsci= new MenuItem("Esci");
        mnEsci.addActionListener(gest);
        
        mnFile.add(mnEsci);
/* FINE MENU FILE */
        

/* INIZIO MENU MODIFICA */        
        CheckboxMenuItem mnSource= new CheckboxMenuItem("HTML");
        mnSource.setState(false);

        //aggiunge il relativo gestore dell'evento di cambio stato
        mnSource.addItemListener(new GestoreCheckMenu());

        mnModifica.add(mnSource);
/* FINE MENU MODIFICA */            
        
/* INIZIO MENU GUIDA */    
        MenuItem mnSommario= new MenuItem("Sommario");
        mnSommario.addActionListener(gest);
        mnGuida.add(mnSommario);
/* FINE MENU GUIDA */    

        mMain.add(mnFile);
        mMain.add(mnModifica);
        mMain.setHelpMenu(mnGuida);

        //aggiunge il menu' alla finestra
        setMenuBar(mMain);

        //rende visibile la finestra
        setVisible(true);

    }

    /*        
        punto d'ingresso dell'applicazione
    */

    public static void main(String[] args)
    {
        new FinestraConMenu();
    }

    //gestore del MenuItem di tipo Checkbox
    public class GestoreCheckMenu implements ItemListener
    {
        public void itemStateChanged(ItemEvent e)
        {
            //determina il MenuItem selezionato
            CheckboxMenuItem m= (CheckboxMenuItem) e.getSource();

            //visualizza nell'etichetta a video lo stato della voce di menu' selezionata
            status.setText(m.getLabel() + " " + m.getState());
        }
    }

    //gestore dei vari MenuItem
    public class GestoreClickMenu implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            //determina il MenuItem selezionato (non usato in questo contesto)
            MenuItem m= (MenuItem) e.getSource();

            String cmd= e.getActionCommand();
            
            if (cmd.compareTo("Esci") == 0)
            {
                //esce dall'applicazione
                System.exit(0);
            }

            //visualizza nell'etichetta la label della voce di menu' selezionata
            status.setText(cmd);
        }
    };
}