Bara de meniu poate sa conțină unul sau mai multe meniuri, care se
realizează ca instanțe ale clasei javax.swing.JMenu. La rândul
său, fiecare meniu poate conține unul sau mai multe articole, care sunt
instanțe ale claselor javax.swing.JMenuItem sau javax.swing.JCheckBoxMenuItem.
Este însă posibil ca un articol de meniu să fie el însuși un meniu (din
clasa JMenu). Dacă utilizatorul alege cu mouse-ul un aricol de meniu,
sunt posibile deci două situații:
- acesta este un articol propriu-zis (un JMenuItem), în care caz
opțiunea respectivă este selectată;
- articolul ales este el însuși un meniu (un JMenu), în care caz noul
(sub)meniu se desfășoară și căutarea continuă.
Barele de meniu nu pot fi adăugate la un container ca niște
componente obișnuite. Pentru a pune bara de meniu la partea superioară a
ferestrei aplicației se folosește metoda clasei JFrame public void setJMenuBar(JMenuBar menubar) Adăugarea de meniuri la bara de meniu se face prin metoda clasei JMenuBar public JMenu add(JMenu c) iar adăugarea de articole sau submeniuri la un meniu se face prin metodele clasei JMenu public JMenuItem add(JMenuItem menuItem) public Component add(Component c) public JMenuItem add(String s) public JMenuItem add(Action a) Pentru a introduce în meniu o linie orizontală de separare a două articole se folosește metoda public void addSeparator() Atunci când este selectat un articol de meniu simplu (din clasa JMenuItem), acesta acționează ca un buton obișnuit, adică generează un eveniment de acțiune (ActionEvent). Dacă se selectează un articol de meniu sub forma de casetă de validare (din clasa JCheckBoxMenuItem), acesta se comporta ca o caseta de validare, adică generează un eveniment de articol (ItemEvent). Ascultarea acestor evenimente se face cu clase care implementează interfețele ActionListener, respectiv ItemListener. |
Posibilitățile oferite de meniuri sunt mult mai bogate decât s-a arătat aici. Pentru aprofundare recomandăm consultarea capitolului How to Use Menus din Java Tutorial. |
Exemplu În fișierul Meniuri.java este dat un exemplu de aplicație cu bară de meniu.
|
Afișarea meniului pop-up trebuie programată, folosindu-se în
acest scop metoda din clasa JPopupMenu public void show(Component invoker, int x, int y) în care invoker este referința la componenta in spațiul căreia trebuie să apară meniul, iar x și y sunt coordonatele punctului în care acesta va fi afișat. De obicei, se doreste ca afișarea meniului pop-up să se facă atunci când se efectuează o anumită acțiune a mouse-lui asupra componentei respective. În acest scop, se creează o clasă ascultătoare de mouse (care implementează interfața MouseListener sau extinde clasa MouseAdapter) și - în corpul metodei corespunzatoare situației în care trebuie să se afișeze meniul (mousePressed, mouseReleased sau mouseClicked) se invocă metoda show menționată mai sus, dacă a fost acționat butonul de mouse care ne interesează. Se demonstrează acest procedeu în exemplul de mai jos. Exemplu În fișierul Popup.java se dă un
exemplu de aplicație în care se testează utilizarea unui menu pop-up.
Drept componentă pe suprafața căreia trebuie să apară meniul s-a ales
eticheta de la partea inferioară a ferestrei aplicației. Evenimentul
care declanșează apariția meniului este apăsarea pe butonul din dreapta
al mouse-ului, atunci când acesta se găsește în spațiul ferestrei. Acest
eveniment este urmărit de instanța clasei AfisPopup, care este atașata
etichetei label în calitate de ascultător de mouse.
|