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
   160   161   162   163   164   165   166   167   168   169   170