Page 165 - 4836
P. 165
Як вже зазначалося, контекстне меню, як правило,
відображається при клацанні правою кнопкою миші над
компонентом. Таким чином, щоб відобразити меню, потрібно
додати до цього компоненту слухача мишки.
Розглянемо приклад, в якому до вже створеного нами
вікна додається мітка з написом і контекстне меню з двох
елементів, пов'язане з цією міткою. Необхідно додати в
конструктор перед останньою командою (setSize) наступний
код:
label = new JLabel ("КНИЖКА", new ImageIcon ("1.gif"),
JLabel.RIGHT );
JPanel panel = new JPanel ();
panel.add (label);
popup = new JPopupMenu ();
popup.add (new JMenuItem ( " Прочитати " )) ;
popup.add (new JMenuItem ("Спалити"));
label.addMouseListener (new MouseAdapter () {
public void mouseClicked (MouseEvent event) {
if (SwingUtilities.isRightMouseButton (event))
popup.show ( label , event.getX ( ) , event.getY ( )) ;
}
} ) ;
setContentPane (panel);
При цьому у визначенні класу вікна слід ввести два
поля:
JPopupMenu popup;
JLabel label;
Це необхідно для того, щоб анонімний клас - слухач
міг звернутися до мітці і до контекстного меню.
Наведений приклад також ілюструє застосування
корисного методу isRightMouseButton (MouseEvent event),
визначеного в класі допоміжних утиліт SwingUtilities. Метод
отримує інформацію про подію миші і відповідає на питання,
163