Пожалуйста, извините за неопределенное название вопроса, но обычно я не делаю такого рода вещи. Итак, у меня есть следующая проблема:
Я разрабатываю всплывающее меню для конкретного приложения, в котором каждый элемент меню связан с определенным действием:
public class CanvasMenu extends JPopupMenu {
public CanvasMenu(){
this.add(new AbstractAction("Do some operation") {
@Override
public void actionPerformed(ActionEvent arg0) {
doSomeStuff1();
cleanup(); // has to be done after every menu operation
}
});
this.add(new AbstractAction("Other operation") {
@Override
public void actionPerformed(ActionEvent e) {
doSomeOtherStuff();
cleanup(); // has to be done after every menu operation
}
});
}
}
Я где-то читал, что AbstractAction
используется для таких задач, когда вы хотите добавить пункты меню и связать их с каким-либо действием. На самом деле я хочу не только два таких действия, но и несколько десятков из них.
Проблема в том, cleanup
вещь. cleanup
должно быть после любого из этих действий. Это означает, что если я продолжу описанным выше образом, мне придется написать cleanup()
для каждого AbstractAction
.
Есть ли какой-либо (простой / элегантный / красивый) способ или шаблон, чтобы не писать cleanup()
снова и снова? То есть возможно ли написать что-то, что получит только действие, и после его выполнения автоматически вызовет cleanup
?