|
HOME |
FORUM |
INDICE |
PopupMenuEsempio.java
|
/*
L'esempio mostra l'utilizzo di un PopupMenu.
Autore: Agosto 2009, Giovanni Iacobelli - http://www.iacosoft.com
*/
import java.awt.*;
import java.awt.event.*;
class PopupMenuEsempio extends Frame
{
Button cmd= new Button("Clicca");
PopupMenu mnFile= new PopupMenu();
//coordinate del mouse
int posx=0;
int posy=0;
//costruttore
public PopupMenuEsempio()
{
//richiama il costruttore della classe base per impostare il titolo della finestra
super("Finestra Con PopupMenu");
int larg= 400;
int alt= 300;
//aggiunge il gestore per l'evento di chiusura della finestra
addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){System.exit(0);} });
//imposta la dimensione 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 della finestra centrata rispetto allo schermo.
setLocation((dim.width - larg)/2, (dim.height - alt)/2);
//nessun ManagerLayout
setLayout(null);
//imposta il carattere utilizzato per la label del pulsante
cmd.setFont(new Font("Arial", Font.BOLD, 14));
//posiziona e ridimensiona il pulsante
cmd.setBounds(100,100,70,20); //x,y,larghezza, altezza
//aggiunge il gestore per l'evento CLICK
cmd.addActionListener(new GestoreClickCmd(this));
add(cmd);
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);
/* 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 APRI TEMPLATE */
mnFile.addSeparator();
MenuItem mnChiudi= new MenuItem("Chiudi");
mnChiudi.addActionListener(gest);
mnFile.add(mnChiudi);
mnFile.addSeparator();
MenuItem mnEsci= new MenuItem("Esci");
mnEsci.addActionListener(gest);
mnFile.add(mnEsci);
/* FINE MENU FILE */
add(mnFile);
//enableEvents() farà in modo il metodo processMouseEvent() sia invocato
enableEvents(Event.MOUSE_ENTER);
enableEvents(Event.MOUSE_MOVE);
enableEvents(Event.MOUSE_DOWN);
enableEvents(Event.MOUSE_EXIT);
enableEvents(Event.MOUSE_UP);
//rende la finestra visibile
setVisible(true);
}
//override della classe base per catturare la posizione del mouse
protected void processMouseEvent(MouseEvent e)
{
posx= e.getX();
posy= e.getY();
}
//visualizza il popupmenu
public void VisualizzaMenu(Object obj)
{
mnFile.show((Component)obj,posx,posy);
}
//gestore per la selezione dei MenuItem
public class GestoreClickMenu implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
MenuItem m= (MenuItem) e.getSource();
String cmd= e.getActionCommand();
if (cmd.compareTo("Esci") == 0)
{
System.exit(0);
}
}
}
//gestore dell'evento CLICK del pulsante
public class GestoreClickCmd implements ActionListener
{
PopupMenuEsempio win= null;
public GestoreClickCmd(PopupMenuEsempio obj)
{
this.win= obj;
}
public void actionPerformed(ActionEvent e)
{
//visualizza il PopupMenu
VisualizzaMenu(win);
}
}
//punto d'ingresso dell'applicazione
public static void main(String[] args)
{
new PopupMenuEsempio();
}
}
|
|