Бирор объект устида сичқончанинг ўнг тугмасини босганда ҳосил бўладиган менюга контекст ѐки қалқиб чиқувчи меню деб аталади.
Swingнинг бу компонентаси контекст менюларни яратишга мўлжалланган. Замонавий программаларни бу менюсиз тасаввур қилиш қийин. Контекст менюнинг таркиби (буйрўқлари) аниқ объектга боғлиқ бўлиб, бир объектдан бошқасига ўтганда ўзгариши мумкин. Бу менюнинг қулайлиги шундаки, у сизга аниқ объект устида жорий пайтда қайси буйруқларни амалга ошириш мумкинлиги ҳақида маълумот беради ва бу буйруқларни бажаради. Ваҳоланки мазкур буйруқлар системасини асосий менюдан ҳам топиш имконияти мавжуд, аммо бу буйруқларни асосий менюдан қидириб топиш учун кўп вақт сарфлашга тўғри келади.
Умуман, контекст менюнинг буйруқлари ҳам асосий менюнинг буйруқларини ҳосил қилишдек ҳосил қилинади. Қуйида бу компонентани ҳосил қилиш усули билан танишамиз.
Бунинг учун:
Янги проект яратинг.
Формага Palette ойнасидан Popur Menu компонентасини судраб олиб келинг. Натижада формада ҳеч қандай ўзгариш юз бермайди. Аммо Inspector ойнасида jPopurMenu1 компонента ўрнатилган ѐзув пайдо бўлади. Фараз қилайлик унинг номи Pm1 бўлсин.
Inspector ойнасидаги Pm1 устида сичқончанинг ўнг тугмасини босинг ва ҳосил бўлган контекст менюдан Add From PaletteMenu Item буйруғини икки марта танланг. Натижада Pm1 таркибида jMenuItem1 ва jMenuItem2 компоненталар пайдо бўлади. Бу компоненталарнинг хоссалар ойнаси очинг ва text бўлимига мос равишда A’lo ва Yaxshi сўзларини ѐзинг.
Энди формада сичқонча тугмаси босилгандаги (mouseClicked) ҳодисанинг программасини ѐзайлик. Фараз қилайлик, бу ҳодисанинг номи Me бўлсин. Ҳодисанинг программасини қуйидагича ѐзинг.
private void Me(java.awt.event.MouseEvent evt) { if (SwingUtilities.isRightMouseButton(evt)) { Pm1.show(getContentPane(), evt.getX(), evt.getY());
} }
Программа тўғри ишлаши учун программа бошида import javax.swing.*; буйруғини киритилиши шарт. Программани ишга тушириб, форманинг ихтиѐрий жойида сичқончанинг ўнг тугмасини боссангиз, форма учун тузилган контекст менюнинг буйруқлари пайдо бўлади (4.5.1-расм).
4.5.1-расм. 4.5.2-расм.
Бу программага эътибор берсангиз, Popur Menu компонента учун аниқланган show методидан фойдаланилган. Бу метод таркибида учта параметр бўлиб, улардан биринчиси қайси компонента учун контекст менюнинг очилишини аниқлайди. Иккинчи ва учинчи параметрлар бутун сонлар бўлиб, улар контекст меню пайдо бўладиган нуқтанинг координатаси. Программадаги evt.getX() ва evt.getY() методлари сичқонча курсори турган жойнинг координатасини аниқлайди.
Энди тугма устида сичқончанинг ўнг тугмаси босилганда пайдо бўладиган контекст менюни ҳосил қилишни кўрайлик. Бунинг учун:
Формага оддий тугма ўрнатинг.
Формага Palette ойнасидан Popur Menu компонентасини ўрнатинг ва унга Pm2 ном беринг.
Inspector ойнасидаги Pm2 устида сичқончанинг ўнг тугмасини босинг ва ҳосил бўлган контекст менюдан Add From PaletteMenu Item буйруғини,
Add From Palette MenuItem/CheckBox буйруғини ва Add From PaletteMenuItem/RadioButton буйруқларини кетма-кет танланг. Натижада Pm1 таркибида jMenuItem3, jCheckBoxMenuItem1 ва jRadioButtonMenuItem1 компоненталар пайдо бўлади. Бу компоненталарнинг хоссалар ойнаси очинг ва text бўлимига мос равишда Professor, Dosent ва Magistr сўзларини ѐзинг.
Тугма учун ҳодиса ҳосил қилинг. Фораз қилайлик ҳодисанинг номи But бўлсин. Бу ҳодиса программасини қуйидагича ѐзинг: private void But(java.awt.event.MouseEvent evt) {
Pm2.show(jButton1, evt.getX()+10,evt.getY()+10);
}
Программани ишга тушириб, тугма устида сичқончанинг ўнг тугмасини босинг. Натижада тугма учун ҳосил қилинган контекст меню пайдо бўлади (4.5.2-расм).