Wie mach ich diesen MouseListener

Status
Nicht offen für weitere Antworten.

hdi

Top Contributor
Hey, und zwar würd ich gerne wissen wie man das am besten macht:

Eine JMenuBar mit einigen JMenus, die wiederum einige JMenuItems enthalten.

Ich könnte jetzt für jedes JMenuItem einen eigenen MouseListener adden, weil man ja aber immer alle Methoden implementieren muss hat man da bei 10 Menüpunkten schon gute 150 Zeilen Source-Code, der sich quasi ständig wiederholt (die meisten der implementierten Methoden braucht man ja eh nicht)

Ich wollte nun einen einzigen Listener für die komplette JMenuBar machen.
Hier mein Versuch:

Code:
        JMenuBar menu = new JMenuBar();
        menu.add(game);     // hat 3 JMenutItems
        menu.add(settings);  // hat 2
        menu.add(help);       // hat 3

        menu.addMouseListener(new MouseListener(){

            public void mouseClicked(MouseEvent e) {

                if (e.getSource() == this.getMenu(0).getItem(0)){
                    
                    // im Menü "game" wurde der erste Menüpunkt geklickt.
                }
                else if ....
                }
            }
       );

allerdings geht es nicht, da er die Methoden "getMenu()" und "getItem()" nicht kennt. Scheinbar ist "this" nicht das richtige, weglassen kann ich's aber auch nicht.

Wie würdet ihr das ganze jetzt lösen? Wie gesagt, ich brauch eigentlich nur die clicked-Methode für alle Items, und würde halt gerne per if-else abfrage dann alles in eine einzige Methode reinhauen und für jeden Menüpunkt halt dann seine Aktionen machen.

Dankeschön
 

angelchr

Mitglied
hi,
du brauchst keinen MouseListener.
Du kannst jedem JMenuItem ein ActionCommand zuweisen (setActionCommand) und dies dann im implementierten ActionLIstener mit evt.getActionCommand() abfragen.

Eine weitere möglichkeit wäre einfach über die Objekte zu gehen.

sieht etwa so aus:

Code:
...
...
menuItem_ES = new JMenuItem("Einzelspieler");
        menuItem_ES.addActionListener(this);
        menu.add(menuItem_ES);
...
...


public void actionPerformed(ActionEvent e) {
       if (e.getSource().equals(menuItem_ES)) {...}


Gruß

Angelchr
 
G

Guest

Gast
hey, irgendwie kann ich keinen ActionListener machen ??

Code:
public class Main extends JFrame{

         public Main(){
         //...

        JMenu help = new JMenu("Hilfe");
        JMenuItem rules = new JMenuItem("Spielregeln");
        help.addActionListener(this);             // fehler: addActionListener cannot be applied to Main
        help.add(rules);
        JMenuItem console = new JMenuItem("Konsole");
        console.addActionListener(this);       // fehler: addActionListener cannot be applied to Main
        help.add(console);

        // Build Menu

        JMenuBar menu = new JMenuBar();
        menu.add(game);
        menu.add(settings);
        menu.add(help);
        add(menu, BorderLayout.NORTH);
        
        // Menu Items Action Listener 
        
        addActionListener( new ActionListener(){ // fehler: cannot find method addActionListener

            public void actionPerformed(ActionEvent arg0) {
                throw new UnsupportedOperationException("Not supported yet.");
            }
            
        });
        }
}

importiert ist alles.
hab auch versucht den Listener an die JMenuBar zu heften, aber irgendwie checkt er das überhaupt nicht, wie verwende ich den denn richtig? wo kann ich den adden?

Danke
 

Marco13

Top Contributor
Erstmal muss das, was du dort als ActionListener hinzufügen willst, auch ein ActionListener SEIN. Und die ActionListener müssen i.a. nicht ans Menu gehängt werden (geht das überhaupt? Grad zu faul, nachzugucken...) Das Menu regelt es schon selbst, dass es aufklappt wenn man draufklickt :D Den ActionListener hängt man an die MenuItems.
Code:
public class Main extends JFrame implements ActionListener { 

    public Main()
    {
        JMenu help = new JMenu("Hilfe");
        JMenuItem rules = new JMenuItem("Spielregeln");
        rules.addActionListener(this);             
    }

    public void actionPerformed(ActionEvent e)
    {
        if (e.getActionCommand().equals("Spielregeln")) { zeigeSpielregelnAn(); }
    }

}


Und dort würde ich dir empfehlen, nicht einen riesigen ActionListener für alle zu verwenden, sondern anonyme Listener, die nur die passenden Methoden aufrufen. Also etwa so....
Code:
    public Main()
    {
         //...

        JMenu help = new JMenu("Hilfe");

        JMenuItem rules = new JMenuItem("Spielregeln");
        rules.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent arg0) {
                zeigeSpielregelnAn();
            }
        }); 

    }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Swing Farbige JPanels auf JFrame werden nicht gezeigt. Was mach ich falsch? AWT, Swing, JavaFX & SWT 7
J Scheinbar blockiert Swing bei JTree, was mach ich falsch? AWT, Swing, JavaFX & SWT 7
A jtable + jLabel - was mach ich falsch? AWT, Swing, JavaFX & SWT 2
V Was mach ich falsch bei TappedPane AWT, Swing, JavaFX & SWT 4
V Was mach ich falsch ? AWT, Swing, JavaFX & SWT 2
W JTree - aus zwei mach eins AWT, Swing, JavaFX & SWT 2
G Screen nach Auswahl schließen und neuen öffnen?wie mach ichs AWT, Swing, JavaFX & SWT 8
U Bild in JEditorPane oder Aus "" mach' "/&quot AWT, Swing, JavaFX & SWT 2
S SpinnerModel, was mach ich falsch? AWT, Swing, JavaFX & SWT 3
M Halbkreiszeichnen(Canvas) - Diesen mit Mouseevents bestücken AWT, Swing, JavaFX & SWT 3
G Wie krieg ich diesen Button hin? AWT, Swing, JavaFX & SWT 9
H Viele ActionListener (MouseListener) - Performance AWT, Swing, JavaFX & SWT 24
ExceptionOfExpectation MouseListener-Objekte zu den Graphics-Objekten einfügen AWT, Swing, JavaFX & SWT 3
R Punkt von MouseListener hat falsche Koordinate AWT, Swing, JavaFX & SWT 2
J MouseListener wird nicht ausgeführt. AWT, Swing, JavaFX & SWT 4
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
G vorgefertigte Buttons oder neue Komponente mit MouseListener? AWT, Swing, JavaFX & SWT 0
F ListCellRenderer mit JLabel und MouseListener AWT, Swing, JavaFX & SWT 4
D Event Handling MouseListener funktioniert seit Java 8 nicht mehr AWT, Swing, JavaFX & SWT 13
M MouseListener auf table oder scrollPane AWT, Swing, JavaFX & SWT 11
B Event Handling MouseListener Behält seine Variablen, auch wenn ich ein neus Objekt erstelle AWT, Swing, JavaFX & SWT 2
D Swing &MouseListener in einem JFrame, sinnig? AWT, Swing, JavaFX & SWT 11
U MouselIstener zu JFrame AWT, Swing, JavaFX & SWT 6
F Swing MouseListener im JPanel AWT, Swing, JavaFX & SWT 3
J Swing Button mit JTable und MouseListener AWT, Swing, JavaFX & SWT 8
F JPanel + MouseListener AWT, Swing, JavaFX & SWT 5
JavaInBrain Swing Rückgabe aus MouseListener-Klasse AWT, Swing, JavaFX & SWT 3
A SWT SWT Scale und MouseListener AWT, Swing, JavaFX & SWT 7
J MouseListener und rechte Maustaste AWT, Swing, JavaFX & SWT 3
R MouseListener auf JPanel AWT, Swing, JavaFX & SWT 3
Q Swing MouseListener auf JTable geht nicht AWT, Swing, JavaFX & SWT 2
J Swing Einbau MouseListener in JPanel AWT, Swing, JavaFX & SWT 3
N Mit MouseListener X-Y Angaben vom Bild erfahren AWT, Swing, JavaFX & SWT 3
T MouseListener an Ecken von Polygonen hinzufügen AWT, Swing, JavaFX & SWT 5
H Swing JPanel in JTable mit MouseListener AWT, Swing, JavaFX & SWT 3
A Individueller MouseListener ? AWT, Swing, JavaFX & SWT 7
B MouseListener im Renderer einer JComboBox AWT, Swing, JavaFX & SWT 3
P AWT MouseListener unklare abhandlung von Events AWT, Swing, JavaFX & SWT 3
M MouseListener/MouseMotionListener AWT, Swing, JavaFX & SWT 2
njans SWT MouseListener exited AWT, Swing, JavaFX & SWT 4
danx066 MouseListener macht was er will AWT, Swing, JavaFX & SWT 14
K MouseListener für Objekte auf einem Frame AWT, Swing, JavaFX & SWT 4
P JLabel Farbe/Bild ändern aus MouseListener heraus AWT, Swing, JavaFX & SWT 3
U Swing Generierung mehrerer Kreise per MouseListener AWT, Swing, JavaFX & SWT 16
Semox Swing JApplet: Problem MouseListener Anmeldung AWT, Swing, JavaFX & SWT 3
C JTappedPane Mouselistener auf Überschrift Registerkarte AWT, Swing, JavaFX & SWT 2
M MouseListener AWT, Swing, JavaFX & SWT 3
K AWT MouseListener linke und rechte Maustaste AWT, Swing, JavaFX & SWT 5
C Swing MouseListener Doppelklick-Geschwindigkeit AWT, Swing, JavaFX & SWT 4
N Swing MouseListener in JTable AWT, Swing, JavaFX & SWT 4
1 Eigene JComponent mit MouseListener versehen AWT, Swing, JavaFX & SWT 10
Developer_X AWT Component added keinen MouseListener AWT, Swing, JavaFX & SWT 7
R MouseListener wird nicht aufgerufen AWT, Swing, JavaFX & SWT 3
P JComboBox und MouseListener AWT, Swing, JavaFX & SWT 2
W MouseListener im editable ComboBox AWT, Swing, JavaFX & SWT 14
raptorrs Swing MouseListener reagiert nicht auf Instanz einer JTable AWT, Swing, JavaFX & SWT 6
multiholle Swing Mouselistener auf Parentpanel immer aktiv AWT, Swing, JavaFX & SWT 7
C MouseListener und ActionListener kombinieren AWT, Swing, JavaFX & SWT 17
M Komponenten einer unbestimmten Anzahl und MouseListener AWT, Swing, JavaFX & SWT 4
A MouseListener funktionert nie AWT, Swing, JavaFX & SWT 12
C Probleme mit Größe und mit MouseListener AWT, Swing, JavaFX & SWT 2
W MouseListener für jede Zelle einer JTable AWT, Swing, JavaFX & SWT 4
E MouseListener Problem AWT, Swing, JavaFX & SWT 4
D jButton mit ImageIcon & MouseListener AWT, Swing, JavaFX & SWT 5
S MouseListener zurückverfolgung auf element. AWT, Swing, JavaFX & SWT 7
B MouseListener / doppelklick geht net AWT, Swing, JavaFX & SWT 16
M JCheckBox Standard MouseListener entfernen AWT, Swing, JavaFX & SWT 13
G MouseListener & KeyListener AWT, Swing, JavaFX & SWT 4
H JComboBox reagiert nicht auf MouseListener AWT, Swing, JavaFX & SWT 5
2 Mouselistener AWT, Swing, JavaFX & SWT 2
W MouseListener, getClickCount und Doppelklick AWT, Swing, JavaFX & SWT 6
S swing komponenten mit mouselistener rotieren AWT, Swing, JavaFX & SWT 15
G JFrame,JLabel,MouseListener AWT, Swing, JavaFX & SWT 6
F Wie MouseListener bei TableModel anmelden? AWT, Swing, JavaFX & SWT 3
V Frage zu MouseListener --> mousePressed() AWT, Swing, JavaFX & SWT 5
C MouseListener für Spalte eines JTables AWT, Swing, JavaFX & SWT 4
K Problem mit 2 MouseListener. AWT, Swing, JavaFX & SWT 3
M MouseMotionListener oder mouseListener AWT, Swing, JavaFX & SWT 6
T JComboBox und MouseListener AWT, Swing, JavaFX & SWT 11
F MouseListener - Unhandled IOException AWT, Swing, JavaFX & SWT 5
padde479 Statusleiste mit MouseListener aktualisieren AWT, Swing, JavaFX & SWT 3
L Problem mit MouseListener, AdjustmentListener AWT, Swing, JavaFX & SWT 6
T MouseListener Problem AWT, Swing, JavaFX & SWT 3
F Mouselistener wird wiederholt aufgerufen AWT, Swing, JavaFX & SWT 3
G Frage zu MouseListener und speichern des Wertes (reflektion? AWT, Swing, JavaFX & SWT 6
B frage zu MouseListener AWT, Swing, JavaFX & SWT 5
O MouseListener - Wert-Übergabe AWT, Swing, JavaFX & SWT 3
W JPanel, JLabel und MouseListener -> auf clicks reagieren AWT, Swing, JavaFX & SWT 5
S MouseListener auf einem einzelnen Tab setzen AWT, Swing, JavaFX & SWT 3
B MouseListener & Fenster schliessen AWT, Swing, JavaFX & SWT 3
G MouseListener AWT, Swing, JavaFX & SWT 4
G Tooltip sperrt MouseListener? AWT, Swing, JavaFX & SWT 6
S JComboBox und MouseListener AWT, Swing, JavaFX & SWT 5
D Koordinaten der Bildschirmposition auslesen (MouseListener?) AWT, Swing, JavaFX & SWT 7
A Klassenübergreifend MouseListener verwenden AWT, Swing, JavaFX & SWT 14
N "globaler" MouseListener (+MouseMotionListener) AWT, Swing, JavaFX & SWT 4
M ToolTipText für JTable mit MouseListener ohne anklicken? AWT, Swing, JavaFX & SWT 7
A MouseListener auf Bild legen ? AWT, Swing, JavaFX & SWT 16
S Mouselistener erzeugt kein Event in einem Menuitem AWT, Swing, JavaFX & SWT 2
J MouseListener AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben