Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
warum nicht das JMenuItem direkt vergleichen? Mit ActionEvent#getSource() bekommst du das aktive und vergleichst es mit dem Orignal. Einfach den Namen zu vergleichen ist wirklich keine gute Idee, das fliegt einem spätestens bei mehrsprachigen Programmen um die Ohren.
Nein mir geht es darum, zu identifizieren, wer die aktion ausgeführt hat.
Stell dir ne liste von Objekten vor, die sich alle in das menu hängen. Wenn ich jetzt ne ID habe, kann ich genau sagen ,welches objekt es war. Von den Menus wissen die Objekte ja nichts.
Das wäre auch mein zweiter weg gewesen. Bei setzen der action kann ich ja direkt auf das objekt zugreifen und die ID abfragen. Blöd ist halt nur, dass ich dann dass Objekt final machen muss, da ich sonst in der Actionmethode die ID nicht lesen kann.
Die ID ist nur ein Property des Objektes, mit dem Ich weiter arbeite. Es wäre halt schön gewesen, wenn ich die irgendwie mit dem JMeneuItem verbinden könnte.
Aber dadurch, dass ich bei der erstellung des MenuItems das Objekt habe, kann ich im ActionListener darauf zugreifen. Dazu muss ich das Objekt an der Stelle jedoch als final setzen.
Würde ich jetzt in das JMenuItem irgendwie eine ID einsetzen können, könnte ich die im ActionEvent abfragen und somit das final vermeiden.
Eine weitere möglichkeit wäre sicher auch das JMenuItem zu überschreiben und einfach ein JmenuItem mit einer ID implementieren. Das wäre aber mit Kanonen auf spatzen geschossen.
Wie kann ich sonst noch das Setzen als final vermeiden???
Beispiel:
Code:
final ObjectforMenu = ...
JMenuItem SingleMenuItem = new JMenuItem(ObjectforMenu.Name);
ApplicationMenu.add(SingleMenuItem);
SingleMenuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
SetApplicationEnvironment(ObjectforMenu.ApplicationKey());
}
});