Es gibt eine Abart namens Choice, die nicht an eine Menüleiste
gebunden ist. Es ist immer genau ein Menüpunkt ausgewählt.
Choice erscheint als eine Art Knopf, in der die aktuelle
Auswahl angezeigt wird, und verwandelt sich beim Anklicken in ein
Menü.
Außerdem gibt es PopUp-Menüs, die automatisch erscheinen, wenn eine
angegebene Maustaste (meistens die rechte) irgendwo über der
Komponente gedrückt wird. Danach verhalten sie sich wie normale
Menüs.
Beispiel:
Wir bauen unser Event-Beispiel von Buttons auf Menüs um. Im
Menu "File" gibt es nur den Menüpunkt "Quit", im Menü
"Colors" die vier Farben.
- class ClickMeFrame extends Frame
{
static String mstring[]={ "Quit","Black","Red","Green","Blue" };
Color colors[]=new Color[]
{ Color.black, Color.red, Color.green, Color.blue };
int numcol;
static int count=0;
void CloseMe()
{
dispose();
if (--count==0) System.exit(0);
}
ClickMeFrame(int x, int y, int w, int h)
{
super("Click me!");
setLayout(new FlowLayout());
addWindowListener
( new WindowAdapter()
{ public void windowClosing(WindowEvent e) { CloseMe(); }
}
);
MenuItem[] mitems=new MenuItem[5];
for (int i=0;i<=4;++i)
{
final int icopy=i;
mitems[i]=new MenuItem(mstring[i]);
mitems[i].addActionListener
( new ActionListener()
{ public void actionPerformed(ActionEvent e)
{ if (icopy==0) CloseMe();
else numcol=icopy-1;
}
}
);
}
MenuBar mbar=new MenuBar();
Menu menu=new Menu("File");
menu.add(mitems[0]);
mbar.add(menu);
menu=new Menu("Colors");
for (int i=1;i<=4;++i) menu.add(mitems[i]);
mbar.add(menu);
setMenuBar(mbar);
// MouseListener und Rest unverändert
// ...
}
}