Ok, I have one class (let's call it: MenuBarClass) that contain multiple Menu and MenuItem. I whant assign to every MenuItem an actionlistener, but.. instead of doing something like:
menuitem_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {} });
menuitem_2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {} });
menuitem_3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {} });
// ...
menuitem_N.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {} });
I whant my code more mantainable and.. more important.. I don't whant a lots of "if" in one huge ActionListener class like:
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(menuitem_1)) {
//do stuff..
} else if (e.getSource().equals(menuitem_2)) {
//do stuff..
} else ...
}
how can i do this, if it is possible? Can anyone help?
You can reduce verbosity using the reflection API to create a utility method:
This can be utilized like this:
The downside of this is the lack of compile-time checking that the
sayHello(ActionEvent)
method exists.The performance costs will be negligible.