Literatur

JPopupMenu

Das Kontextmenü, auch Popup-Menü genannt, ist das Menü, welche sich nach einem Klick mit der rechten Maustaste öffnet. Dieses Menü wird in Java über die Klasse javax.swing.JPopupMenu realisiert. JPopupMenu ist wie JMenuBar ein Container für die Menü-Elemente und kann auch dieselben Objekte aufnehmen.

Die Klasse JPopupMenu besitzt neben dem Standardkonstruktor noch einen weiteren, der als Parameter den Titel für das Kontextmenü entgegennimmt.

Das Beispiel aus den vorangegenen Kapiteln erweitern wir jetzt um ein Kontextmenü. Da wir allerdings noch kein Event-Handling kennengelernt haben, erstellen wir hier zur Veranschaulichung lediglich ein statisches Kontextmenü. Von jedem Menüeintrag erzeugen wir nun ein zweites Objekt, welches wir dem JPopupMenu hinzufügen.

// Import-Anweisungen
import java.awt.Color;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JDialog;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JSeparator;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
 
public class PopupMenuBeispiel
{
    // main-Methode
    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 auf 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");
        // Erzeugung eines Objektes der Klasse JMenuItem
        JMenuItem item = new JMenuItem("Ich bin das JMenuItem");
        JMenuItem item2 = new JMenuItem("JMenuItem innerhalb eines JPopups");
        // Wir fügen das JMenuItem unserem JMenu hinzu
        menu.add(item);
        // Erzeugung eines Objektes der Klasse JSeparator
        JSeparator sep = new JSeparator();
        JSeparator sep2 = new JSeparator();
        // JSeparator wird unserem JMenu hinzugefügt         
        menu.add(sep);
        // Erzeugung eines Objektes der Klasse JCheckBoxMenuItem
        JCheckBoxMenuItem checkBoxItem = new JCheckBoxMenuItem
            ("Ich bin das JCheckBoxMenuItem");
        JCheckBoxMenuItem checkBoxItem2 = new JCheckBoxMenuItem
            ("JCheckBoxMenuItem innerhalb eines JPopups");
        // JCheckBoxMenuItem wird unserem JMenu hinzugefügt         
        menu.add(checkBoxItem);
        // Erzeugung eines Objektes der Klasse JRadioButtonMenuItem
        JRadioButtonMenuItem radioButtonItem = new JRadioButtonMenuItem
            ("Ich bin ein JRadionButtonMenuItem",true);
        JRadioButtonMenuItem radioButtonItem2 = new JRadioButtonMenuItem
            ("JRadionButtonMenuItem innerhalb eines JPopups",true);
        // JRadioButtonMenuItem wird unserem JMenu hinzugefügt           
        menu.add(radioButtonItem);
        // Menü wird der Menüleiste hinzugefügt         
        bar.add(menu);
        // Erzeugung eines JPopupMenu-Objektes
        JPopupMenu pop = new JPopupMenu();
        // Wir setzen die Position unseres Kontextmenüs 
        // auf die Koordinaten X = 100 und Y =100
        pop.setLocation(100, 100);
        // Wir fügen unsere Menüeinträge unserem Kontextmenü hinzu
        pop.add(item2);
        pop.add(sep2);
        pop.add(checkBoxItem2);
        pop.add(radioButtonItem2);
        // Menüleiste wird für den Dialog gesetzt
        meinJDialog.setJMenuBar(bar);
        // Wir lassen unseren Dialog anzeigen
        meinJDialog.setVisible(true);
        // Wir lassen unser JPopupMenu anzeigen
        pop.setVisible(true);
 
    }
}


Nach Ausführen des obigen Quellcodes, erhalten Sie (mit geöffnetem JMenu) folgendes Bild:

JPopupMenu in unserem Java Tutorial

Da wir hier lediglich ein statisches Popup-Menü implementiert haben, bleibt es auch dann bestehen, wenn wir das JMenu aufgeklappt haben. Ein dynamisches Popup-Menü werden wir implementieren, wenn wir das Thema EventHandling behandeln.