NOTA! Questo sito utilizza i cookie e tecnologie simili.

Se non si modificano le impostazioni del browser, l'utente accetta. Per saperne di piu'

Approvo

Guida Java 2D - Capitolo 07: La barra dei menù e i menù: JMenuBar, JMenu, JMenuItem.

 

Un menù è un oggetto un pò particolare: non va aggiunto, come le altre componenti GUI, al content pane di un JFrame, ma direttamente a tale contenitore, cosa che va fatta con il metodo:

setJMenuBar(JMenuBar jmb)   :   void

di JFrame.

 

Un menù è costituito da più oggetti, disposti secondo una certa 'gerarchia':

  • una barra del menù, contenente ...
  • ... uno o più menù (es. tipici: File, Finestra, Aiuto, ...), contenente a sua volta...
  • ... o altri menù, per implementare dei sotto-menù, o le vere e proprie voci del menù, che possono essere etichette testuali, pulsanti check box (selezione on/off non esclusiva) o pulsanti radio button (selezione on/off esclusiva per un gruppo di radio button logicamente connessi).

 

 

Le classi atte ad implementare tali elementi sono le seguenti (cliccate sulle varie voci per accedere alle relative API, che illustrano campi e metodi degli oggetti):

JMenuBar Implementa la barra dei menù.
JMenu Implementa un menù.
JMenuItem Implementa una voce di menù con etichetta testuale e/o un'icona.
JCheckBoxMenuItem Implementa una voce di menù selezionabile o deselezionabile.
JRadioButtonMenuItem Implementa una voce di menù appartenente ad un gruppo di voci ove la scelta è mutuamente esclusiva.

 

La gestione dell'evento di click su una voce di menù verrà trattata (molto) più avanti in questa guida.

 

Un interessante metodo, ereditato da AbstractButton, disponibile per i menù e i menù item, è:

setMnemonic(int code)   :   void

(con code che identifica, mediante una costante predefinita, come spiegato nel capitolo 5 di questa guida, un tasto della tastiera) che permette di impostare uno shortcut (tasto di scelta rapida) per aprire un menù o selezionare direttamente una sua voce (es.: CTRL+S per salvare, ...).

 

La porzione di codice qui sotto riportata definisce una classe eseguibile che mostra a video un JFrame completo di barra del menù popolata con alcune voci d'esempio.

 

 

 

Ecco il codice:

import java.awt.*;
import javax.swing.*;


public class ProvaMenu extends JFrame
{
private JMenuBar barraDeiMenu;
private JMenu menu1, menu2, menu3;
private JMenuItem menuItem1, menuItem2, menuItem3, menuItem4;


public ProvaMenu()
{
this.setTitle("Esempio di JFrame con menù");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Toolkit mioToolkit = Toolkit.getDefaultToolkit();
Dimension dimensioniSchermo = mioToolkit.getScreenSize();

int larghezzaFrame, altezzaFrame;
larghezzaFrame = (int) (dimensioniSchermo.getWidth()/2);
altezzaFrame = (int) (dimensioniSchermo.getHeight()/2);

this.setSize(larghezzaFrame, altezzaFrame);

// NOTA IMPORTANTE: l'origine del sistema di riferimento dello schermo (punto (0,0)) è situata IN ALTO A SINISTRA; valori y positivi 'scendendo', x positivi proseguendo 'verso destra'.
this.setLocation(((int)dimensioniSchermo.getWidth()/4), ((int)dimensioniSchermo.getHeight()/4));


// Credo ed aggiungo la barra del menù, alcuni menù e voci del menù di esempio
barraDeiMenu = new JMenuBar();

menu1 = new JMenu("File");
menu2 = new JMenu("Finestra");
menu3 = new JMenu("Aiuto");

menu1.setMnemonic('f');

menuItem1 = new JMenuItem("Apri");
menuItem2 = new JMenuItem("Esci");
menuItem3 = new JMenuItem("Schermo intero");
menuItem4 = new JMenuItem("?");

menuItem1.setMnemonic('a');

menu1.add(menuItem1);
menu1.add(menuItem2);
menu2.add(menuItem3);
menu3.add(menuItem4);

barraDeiMenu.add(menu1);
barraDeiMenu.add(menu2);
barraDeiMenu.add(menu3);

this.setJMenuBar(barraDeiMenu);
}



public static void main(String[] args)
{
ProvaMenu pm = new ProvaMenu();
pm.setVisible(true);
}
}

 

 

 
Vai all'inizio della pagina