Vorlesung Informatik 2 - Teil A: Java Kurs

7.1 Dropdown Menüs

Um zu einem JFrame Fenster eine Leiste mit Dropdown-Menüs hinzuzufügen verwendet man drei Klassen:

  • JMenuBar: ein Objekt dieser Klasse ist die Menüleiste, auf der mehrere Dropdown-Menüs platziert werden können.
  •  JMenu: ein Dropdown-Menü
  • JMenuItem: ein Eintrag in einem Dropdown-Menu.

Wir beginnen mit einem Menü-Eintrag zum Beenden der Anwendung, der in fast jeder Anwednung vorkommt:

public class BeendenMenuItem extends JMenuItem implements ActionListener{
public BeendenMenuItem() {
super("Beenden");
this.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}
}

Der Konstruktor bekommt als Parameter die Aufschrift des Menüeintrages. Wenn der Benutzer den Menüeintrag aktiviert, werden die registrierten ActionListener Objekte benachrichtigt. In diesem Fall ist der Menüeintrag selbst sein eigener ActionListener, wie wir es z.B bei JButton Objekten machen. In einer echten Anwendung würde man evtl. vorher noch fragen, ob die Anwendung wirklich beendet werden soll.

Im nächsten Schritt erzeugen wir ein Menü und fügen den Menüeintrag hinzu:

        JMenu menu = new JMenu("Datei");
menu.add(new BeendenMenuItem());

Und schließlich wird das Menü zu einer Menüleiste hinzugefügt und diese auf das Anwendungsfenster gelegt:

	JMenuBar leiste = new JMenuBar();
leiste.add(menue);
fenster.setJMenuBar(leiste);

Wobei fenster   vom Typ JFrame sein muss.

En anderer häufiger Fall ist ein Menüeintrag zum Öffnen einer Datei. Zunächst definieren wir folgendes Interface:

public interface DateiBearbeiter {
public void dateiBearbeiten(File file);
}

Ein Menüeintrag zum Öffnen einer Datei sieht folgendermaßen aus:

public class DateiOeffnenMenuItem extends JMenuItem implements ActionListener {
private DateiBearbeiter bearbeiter;
private JFileChooser fileChooser = new JFileChooser();;
public DateiOeffnenMenuItem(DateiBearbeiter bearbeiter) {
super("Öffnen");
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
this.bearbeiter = bearbeiter;
this.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
int antwort = fileChooser.showOpenDialog(this.getParent());
if(antwort==JFileChooser.APPROVE_OPTION) bearbeiter.dateiBearbeiten(fileChooser.getSelectedFile());
}
}

Bei Auswahl des Menüeintrages öffnet sich ein Dialog zur Auswahl einer Datei. Wenn der Benutzer eine Datei gewählt hat, wird die dateiBearbeiten Methode des DateiBearbeiters gerufen.

Lehrvideo (YouTube)