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:
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
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