pm.addPopupMenuListener(new PopupMenuListener() {
@Override
public void popupMenuCanceled(PopupMenuEvent e) {
System.out.println("cancelled");
}
@Override
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
System.out.println("vanishing");
}
@Override
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
System.out.println("appearing");
}
});
Редактировать: Упс, похоже, кто-то решил ответить в комментариях.Мой плохой.
Редактировать 2: Что касается того, почему ComponentListener не отправляет вам события в исчезающем меню, это может объяснить:
Компонент-скрытые и показанные компонентом события происходят только в результате вызовов метода setVisible компонента. Например, окно может быть миниатюрно превращено в значок (иконку) без запуска скрытого компонентом события.
Источник: Учебник по ComponentListener (возможно, не канонический, но из уст лошади.)
Рассмотрим, что в сочетании с реализацией JPopupMenu setVisible
:
public void setVisible(boolean b) {
// Not supported for MenuComponents
}
И вы, возможно, знаете, как это происходит, но не то, почему это происходит (каково обоснование и где это должным образом задокументировано?)