An sündmus Java-keeles on objekt, mis luuakse, kui graafilises kasutajaliideses midagi muutub. Kui kasutaja klõpsab nuppu, klõpsab liitkasti või tippib tähemärgid tekstiväljale jne, siis käivitub sündmus, luues vastava sündmuse objekti. See käitumine on osa Java sündmuste käitlemise mehhanismist ja sisaldub Swing GUI teegis.
Näiteks oletame, et meil on a JButton. Kui kasutaja klõpsab nuppu JButton, nupu klõpsamise sündmus käivitatakse, sündmus luuakse ja see saadetakse vastavale sündmuse kuulaja (antud juhul ActionListener). Vastav kuulaja on juurutanud koodi, mis määrab sündmuse toimumisel toimuva.
Pange tähele, et sündmuse allikas peab olla seotud sündmuse kuulajaga või vastasel juhul ei käivita see midagi.
Kuidas sündmused toimivad
Java sündmuste käitlemine koosneb kahest põhielemendist:
- Sündmuse allikas, mis on objekt, mis luuakse sündmuse toimumisel. Java pakub neid sündmuseallikaid mitut tüüpi, mida selles osas käsitletakse Ürituste tüübid allpool.
- Ürituse kuulaja, objekt, mis sündmusi "kuulab" ja töötleb neid siis, kui need aset leiavad.
Java-s on mitut tüüpi sündmusi ja kuulajaid: iga sündmustüüp seotakse vastava kuulajaga. Vaatleme selle arutelu jaoks tavalist tüüpi sündmust, an tegevusüritus keda esindab Java klass ActionEvent, mis käivitatakse siis, kui kasutaja klõpsab nuppu või loendi üksust.
Kasutaja tegevusel an ActionEvent luuakse vastavale toimingule vastav objekt. See objekt sisaldab nii sündmuse allikateavet kui ka kasutaja konkreetset toimingut. See sündmuse objekt antakse seejärel vastavale ActionListener objekti meetod:
kehtetu actionPerformed (ActionEvent e)
See meetod käivitatakse ja tagastab asjakohase GUI-vastuse, milleks võib olla dialoogi avamine või sulgemine, faili allalaadimine, digitaalallkirja andmine või mis tahes muu hulgaliselt kasutajatele kättesaadavaid toiminguid liides.
Ürituste tüübid
Siin on mõned Java kõige tavalisemad sündmused:
- ActionEvent: Kujutab graafilist elementi, millel klõpsatakse, näiteks nuppu või loendi üksust. Seotud kuulaja: ActionListener.
- ContainerEvent: Esindab sündmust, mis toimub GUI konteineris endas, näiteks juhul, kui kasutaja lisab või eemaldab objekti liideselt. Seotud kuulaja: ContainerListener.
- KeyEvent: Tähistab sündmust, milles kasutaja klahvi vajutab, tippib või vabastab. Seotud kuulaja: KeyListener.
- WindowEvent: Tähistab aknaga seotud sündmust, näiteks kui aken on suletud, aktiveeritud või deaktiveeritud. Seotud kuulaja: WindowListener.
- MouseEvent: Tähistab hiirega seotud sündmusi, näiteks hiire klõpsamisel või vajutamisel. Seotud kuulaja: MouseListener.
Pange tähele, et mitu kuulajat ja sündmuseallikat saavad üksteisega suhelda. Näiteks võib üks kuulaja registreerida mitu sündmust, kui need on sama tüüpi. See tähendab, et sama tüüpi toimingute sarnaste komponentide komplekti korral saab üks sündmuse kuulaja kõiki sündmusi käsitleda. Samamoodi saab ühe sündmuse siduda mitme kuulajaga, kui see sobib programmi kujundusega (ehkki see on vähem levinud).