Всплывающее меню (popup menu) появляется обычно при нажатии или отпускании правой или средней кнопки мыши и является контекстным (context) меню. Его команды зависят от компонента, на котором была нажата кнопка мыши. В языке Java всплывающее меню — объект класса Рорирмепи. Этот класс расширяет класс Menu, следовательно, наследует все свойства меню и пункта меню Menultem. Всплывающее меню присоединяется не к строке меню типа MenuBar или к меню типа Menu в качестве подменю, а к определенному компоненту. Для этого в классе component есть метод add(PopupMenu menu).
У некоторых компонентов, например TextFieid и TextArea, уже существует всплывающее меню. Подобные меню нельзя переопределить.
Присоединить всплывающее меню можно только к одному компоненту. Если надо использовать всплывающее меню с несколькими компонентами в контейнере, то его присоединяют к контейнеру, а нужный компонент определяют с помощью метода getcomponent () класса MouseEvent, как показано в листинге 13.2.
Кроме унаследованных свойств и методов, в классе PopupMenu есть метод show (Component comp, int x, int у), показывающий всплывающее меню на экране так, что его левый верхний угол располагается в точке (х, у) в системе координат компонента сотр. Чаще всего это компонент, на котором нажата кнопка мыши, возвращаемый методом getcomponent (). Компонент comp должен быть внутри контейнера, к которому присоединено меню, иначе возникнет исключительная ситуация.
возникшее событие мыши вызывает появление всплывающего меню. Его нужно вызывать при возникновении всякого события мыши, чтобы проверять, не является ли оно сигналом к появлению всплывающего меню, т. е. обращению к методу showo. Было бы слишком неудобно включать такую проверку во все семь методов классов-слушателей событий мыши. Поэтому метод IsPopupTrigger () лучше ВЫЗЫВНТЬ В методе processMouseEvent().
Переделаем еще раз программу рисования из листинга 12.4, введя в класс scribble всплывающее меню для выбора цвета рисования и очистки окна и изменив обработку событий мыши. Для простоты уберем строку меню, хотя ее можно было оставить. Результат показан в листинге 13.2, а на Рисунок 13.3 — вид всплывающего меню в MS Windows.