Я, кажется, не то, что вы получаете из коробки. Но вы можете использовать одну из следующих опций:
В MenuBar
есть защищенный метод getSelectedItem()
, который возвращает MenuItem
, который должен соответствовать нажатому. Я не знаю, почему он защищен, но, расширив класс MenuBar
и сделав его общедоступным, вы сможете его использовать.
Вы можете создать класс Command
, в который вы вводите MenuItem
при создании, в этом случае вам нужно установить команду после создания, а не в конструкторе MenuItem
Реализация команды:
public class MyCommand implements Command {
private final MenuItem item;
public MyCommand(MenuItem item) {
this.item = item;
}
@Override
public void execute() {
//item matches the item clicked.
}
}
Использование:
MenuItem newItem = new MenuItem("New", (Command)null);
newItem.setCommand(new MyCommand(newItem));
Или вместо передачи MenuItem
через конструктор MyCommand
добавьте метод к классу MyCommand
с именем setMenuItem
:
MenuItem newItem = new MenuItem("New", new MyCommand());
((MyCommand)newItem.getCommand()).setMenuItem(newItem);