|
HOME |
FORUM |
INDICE |
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);
}
};
}
|
|