Literatur

JMenu

Die Java-Klasse javax.swing.JMenu dient als Container für die eigentlichen Menüpunkte. Ein JMenu ist z.B. vergleichbar mit dem Menüeintrag "Ansicht", welchen Sie z.B. in der oberen Menüleiste von diversen Browsern oder Textverarbeitungsprogrammen finden. Wenn Sie das Menü "Ansicht" auswählen, sehen Sie die eigentlichen Menüpunkte, welche man in Java mit der Klasse JMenuItem realisieren könnte.

Objekte der Klasse JMenu können einer JMenuBar (siehe vorheriges Kapitel) oder einem JPopupMenu hinzugefügt werden. Die Menüs können auch geschachtelt werden. Wenn Sie z.B. im Firefox-Browser im Menü "Ansicht" den Menüpunkt "Symbolleisten" selektieren, öffnet sich ein weiteres Menü, in dem Sie wieder die Auswahl zwischen verschiedenen Menüpunkten haben.

Schauen wir uns dazu ein Beispiel an:

// Import-Anweisungen
import java.awt.Color;
import javax.swing.JDialog;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
 
public class JMenu_Beispiel
{
     public static void main(String[] args)
    {
        /* Erzeugung eines neuen Dialoges */
        JDialog meinJDialog = new JDialog();
        meinJDialog.setTitle("JMenuBar für unser Java Tutorial Beispiel.");
        // Wir setzen die Breite auf 450 und die Höhe 300 Pixel
        meinJDialog.setSize(450,300);
        // Zur Veranschaulichung erstellen wir hier eine Border
        Border bo = new LineBorder(Color.yellow);
        // Erstellung einer Menüleiste
        JMenuBar bar = new JMenuBar();
        // Wir setzen unsere Umrandung für unsere JMenuBar
        bar.setBorder(bo);
        // Erzeugung eines Objektes der Klasse JMenu
        JMenu menu = new JMenu("Ich bin ein JMenu");
        // Menü wird der Menüleiste hinzugefügt
        bar.add(menu);
        // Menüleiste wird für den Dialog gesetzt
        meinJDialog.setJMenuBar(bar);
        // Wir lassen unseren Dialog anzeigen
        meinJDialog.setVisible(true);
    }
}


Wie Sie sehen, haben wir das Beispiel unseres vorherigen Kapitels einfach erweitert. Wir erzeugen nun, nachdem wir unsere Border gesetzt haben, ein Objekt der Klasse JMenu, deren Konstruktor wir direkt den Titel übergeben können. Anschließend fügen wir das JMenu-Objekt der JMenuBar hinzu. Wenn wir obigen Java-Quellcode ausführen, erhalten wir nun folgenden Dialog:

JMenuBar mit einem JMenu

An dem obigen Screenshot können Sie nun erkennen, dass unsere Border nicht mehr verwendet werden müsste, um die JMenuBar sehen, da diese jetzt über ein Menü verfügt, welches allerdings noch über keine Menüpunkte verfügt.

Die Klasse JMenu besitzt zahlreiche Methoden, über die wir in der folgenden Tabelle einen kurzen Überblick geben wollen:

Methode Beschreibung
JMenuItem add(JMenuItem menuItem) Diese Methode fügt dem JMenu ein Objekt der Klasse JMenuItem hinzu, wodurch das Menü um einen Menüeintrag erweitert wird.
JMenuItem add(String s) Diese Methode erzeugt ein Objekt der Klasse JMenuItem mit dem Namen des übergebenen Strings und fügt es als Menüpunkt dem aufrufenden JMenu-Objekt hinzu.
void addSeparator() Diese Methode fügt ein Objekt der Klasse JSeperator als Trennlinie einem JMenu hinzu.
JMenuItem insert(JMenuItem mi, int pos) Diese Methode fügt ein Objekt der Klasse JMenuItem an der Position pos als Menüpunkt einem JMenu hinzu.
void insert(String s, int pos) Diese Methode erzeugt ein Objekt der Klasse JMenuItem mit dem Namen des übergebenen Strings und fügt es dem JMenu an der Position pos als Menüpunkt hinzu.
void insertSeparator(int index) Diese Methode fügt ein Objekt der Klasse JSeperator als Trennlinie an der Position pos einem JMenu hinzu.
boolean isTopLevelMenu( Diese Methode überprüft, ob das JMenu ein direktes "Kind" einer Menübar ist.  Dies ist nicht möglich, wenn diese JMenu einem JPopupMenu hinzugefügt wurde.
void remove(int pos) Diese Methode entfernt eine Komponente an der übergebenen Position pos.
void remove(JMenuItem item) Diese Methode entfernt das übergebene Objekt der Klasse JMenuItem aus dem JMenu.
void removeAll() Diese Methode entfernt alle Objekte aus dem JMenu.
void setMenuLocation(int x, int y) Diese Methode setzt die Position einer Popup-Komponente auf die Koordinaten x und y.

Diese Methoden sollten ausreichend sein, damit Sie mit einem Menü umgehen können.

Wie man unser Menü nun mit Menüpunkten (JMenuItem) bestückt, erfahren Sie im folgenden Kapitel unseres Java-Tutorials.