Die Klasse enthält danach die fünf notwendigen Methoden des
MouseListener, die auf die Mouseaktionen achten. In
mousePressed(MouseEvent event) wird die das Menu erzeugende Methode
setMenu() aufgerufen. Die anderen Methoden bleiben leer.
Die Klasse Popup stellt das eigentliche Menu bereit. Es enthält vier einfache Einträge zum Ausschneiden, Kopieren, Einfügen und zum Beenden der Applikation bereit, sowie ein Untermenu mit zwei weiteren Elementen. Bis auf den Eintrag zum Beenden, erzeugen alle Elemente hier lediglich Textausgaben.
Die Klasse erweitert
JPopupMenu und implementiert einen
ActionListener zur Erzeugung der gewünschten Aktionen.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
public class Popup extends JPopupMenu implements ActionListener {
private static final long serialVersionUID = 1L;
JMenuItem bmi, ami, emi, kmi, dmi, vmi;
public Popup(JFrame parentComp, MouseEvent event){
// Submenu
JMenu menu = new JMenu("\u00D6ffnen");
dmi = new JMenuItem("Datei");
dmi.addActionListener(this);
menu.add(dmi);
vmi = new JMenuItem("Verzeichnis");
vmi.addActionListener(this);
menu.add(vmi);
add(menu);
ami = new JMenuItem("Ausschneiden");
ami.addActionListener(this);
add(ami);
kmi = new JMenuItem("Kopieren");
kmi.addActionListener(this);
add(kmi);
emi = new JMenuItem("Einf\u00FCgen");
emi.addActionListener(this);
add(emi);
addSeparator();
bmi = new JMenuItem("Beenden");
bmi.addActionListener(this);
add(bmi);
show(event.getComponent(), event.getX(), event.getY());
}
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand());
if (e.getSource() == bmi) {
System.exit(0);
}
}
}
Zunächst wird das Untermenu vom Typ
JMenu erzeugt, dem die Unterpunkte als
JMenuItem hinzugefügt werden. Vorher werden sie noch beim
ActionListener angemeldet. Das Untermenu wird schließlich dem Kontextmenu hinzugefügt.
Die anderen Elemente sind ebenfalls vom Typ
JMenuItem und werden dem Kontextmenu direkt hinzugefügt.
Abschließend muss unbedingt
show(event.getComponent(), event.getX(), event.getY()) aufgerufen werden. Der Methode wird die aufrufende Komponente, sowie die horizontale und vertikale Mausposition als linker. oberer Ursprung des Menus übergeben.