Umsetzung von JMenu und ActionListener

zer0

Erfahrenes Mitglied
Hallo :)

Ich brauch hilfe bei der Umsetzung einer JMenuBar + JMenu und den dazugehörigen ActionListenern. Ich suche eine saubere und professionelle Lösung (vllt aus eure eigenen Erfahrung).

Ich habe eine JMenuBar mit verschiedenen JMenu's (Datei, Bearbeiten, Hilfe) und den dazugehörigen JMenuItems (Neu, Kopieren, Einfügen, Ausschneiden, Hilfe...).

Nun habe ich vor für jeden JMenu eine ActionListener Klasse zu erstellen. Um herauszufinden welches Item gedrückt wurde muss ich also entweder mit ActionCommands arbeiten, oder ich übergebe meiner ActionListener-Klasse this und überprüfe in der ActionListener-Klasse dann mittels
Code:
if(e.getSource == guiInstanz.copyMenuItem) { }

Weiß nur nicht ob das wirklich sauber ist? :confused:

Vielleicht löst ihr das anders & könnt mir das mitteilen? :)
 
Hallo,
du brauchst nicht für jeden JMenu eine eigene Klasse. Eine einzige reicht völlig aus.

Ich übergebe auch immer mit "this" im Listener-Konstruktor eine Instanz der Klasse, welche den Listener benutzt.

MfG
hansmueller
 
Hey vielen Dank für deine Antwort!

Ja ich dachte das ganze könnte dann unübersichtlich werden wenn alle JMenuItem's-Actions da drin sind.

Das heißt du übergibst mit "this" eine Instanz und in der ActionListener-Klasse überprüfst du dann mittels if-Abfragen welches JMenuItem der auslöser war, seh ich das so richtig?
 
Richtig.
Wenn du die if-Abfragen schön der Reihe nach sortierst, wie sie im Menü vorkommen, ist die ganze Sache auch noch verhältnismäßig übersichtlich. Kommt natürlich darauf an wie viele Menü(unter)punkte du hast. Aber man kann ja auch durch das Auslagern in Methoden oder Klassen arbeiten.

Es gibt übrigens noch etwas, das nennt sich das MVC-Modell. (Model-View-Control)
Ist allerdings für meinen Geschmack (oder sollte ich besser Wissenstand und/oder Erfahrung sagen) noch etwas zu kompliziert.
Dieses Modell macht auch nicht immer Sinn.

MfG
hansmueller
 
Hallo,

Ich würde das auch so machen, wie hansmueller gesagt hat.
Außerdem würde ich dir empfehlen, mit actionCommands zu arbeiten. Ist meiner Erfahrung nach, insbesondere bei größeren Menüs, übersichtlicher. Sonst hast du nämlich irgendwann 100 Vergleiche drin und kennst dich nicht mehr aus, was jetzt überhaupt wozu gehört.
Und es ist pro Item nur eine Zeile mehr, was man der Übersichtlichkeit zuliebe hinnehmen kann.

Gruß,
Martin
 
Zurück