Programiranje

Dogodki in poslušalci

Kako ustvarite dogodek po meri in kako ga sprožite, da lahko komponenta dobi dogodek?

Pred ogledom dogodka po meri si oglejmo že obstoječi dogodek: ActionEvent.

Komponente, kot je Gumb in JButton ogenj ActionEvents označuje nekakšno dejanje, določeno s komponento Na primer Gumb požari ActionEvent kadarkoli ga uporabnik pritisne. Celotna točka dogodka je obvestiti poslušalca, da se je nekaj zgodilo s komponento v grafičnem uporabniškem vmesniku. Dogodek vključuje vse informacije, ki jih mora poslušalec ugotoviti, kaj se je zgodilo in komu se je zgodilo (kaj in kdo dogodka). Dogodek mora vsebovati dovolj informacij, da se lahko v celoti opiše. Tako lahko poslušalec ugotovi, kaj točno se je zgodilo, in se smiselno odzove.

The ActionEvent vključuje metode za učenje ukaznega niza dejanja, modifikatorjev in identifikacijskega niza. The getActionCommand () vrne ukazni niz, ki označuje načrtovano dejanje dogodka, na primer tiskanje ali kopiranje (kaj). The getSource () vrne objekt, ki generira dogodek (kdo).

Če želite prejeti ActionEvent, mora poslušalec izvajati ActionListener vmesnik in se registrirajte s komponento. Poleg tega mora komponenta spremljati svoje poslušalce, da jih lahko obvesti o dogodku.

Z uporabo ActionEvent na primer kot model lahko enostavno vidimo koščke, ki so potrebni komponenti za generiranje dogodka, in poslušalca, ki posluša dogodek. Na visoki ravni obstajajo trije deli:

  1. Komponenta
  2. Razred dogodkov
  3. Vmesnik poslušalca

Oglejmo si vsako posebej.

Komponenta

Komponente generirajo dogodke. Dogodek je način, s katerim poslušalcu sporočite, da se je nekaj zgodilo. Zato mora komponenta zagotoviti mehanizem za registracijo in odjavo poslušalcev dogodkov. Komponenta mora tudi slediti svojim poslušalcem in dogodke posredovati tem poslušalcem.

Mehanika registracije / odjave in sledenja je prepuščena posamezni komponenti. Vendar pa bo komponenta običajno imela addXXXListener in removeXXXListener za vsako vrsto dogodka, ki ga ustvari. Komponenta lahko interno shrani poslušalca, kakor koli izbere; običajno pa komponente shranijo poslušalce v java.util.Vector ali javax.swing.event.EventListenerList. Če želite sprožiti dogodek za poslušalce, komponenta preprosto prelista svoj seznam poslušalcev in dogodek posreduje vsakemu poslušalcu tako, da pokliče metodo pošiljanja dogodkov poslušalca.

Čas je za primer:

... EventListenerList xxxListeners = nov EventListnerList (); javna void addXXXListener (poslušalec XXXListener) {xxxListeners.add (XXXListener.class, poslušalec); } public void removeXXXListener (poslušalec XXXListener) {xxxListeners.remove (XXXListener.class, listener); } zaščitena void fireXXX (XXXEvent xxxEvent) {Object [] listeners = xxxListeners.getListenerList (); // zavrtimo skozi vsakega poslušalca in po potrebi posredujemo dogodek Int numListeners = listeners.length; za (int i = 0; i

Ta primer prikazuje, kako registrirati, odjaviti in sprožiti vrste dogodkov XXXEvent. Poslušalci se lahko registrirajo in odjavijo prek addXXXListener () in removeXXXListener () metode. Ko se dogodek zgodi, komponenta ustvari objekt dogodka in ga posreduje fireXXX () metoda, kjer se posreduje poslušalcem.

Primer opredeljuje splošni recept, ki mu lahko sledijo vse komponente. Če želite, da primer deluje, morate določiti XXXEvent in an XXXListener vmesnik.

Razred dogodkov

Dogodek vsebuje vse informacije, ki so potrebne poslušalcu, da ugotovi, kaj se je zgodilo. Vključene informacije so resnično posebne dogodke. Samo dobro premislite o dogodku in oblikujte razred dogodka tako, da vsebuje vse informacije, ki so potrebne za popoln opis dogodka poslušalcu. Dogodki običajno podaljšajo java.awt.AWTEvent razred dogodkov.

Vmesnik poslušalca

Vmesnik poslušalca dogodkov definira metode, ki jih komponenta uporablja za pošiljanje dogodkov. Vsaka vrsta dogodka bo imela v vmesniku poslušalca vsaj eno ustrezno metodo odpreme.

Vmesnik poslušalca ima naslednjo splošno obliko:

javni vmesnik XXXListener razširja EventListener {// metode pošiljanja dogodkov somethingHappened (XXXEvent e); somethingElseHappened (XXXEvent e); ...} 

Za poslušanje dogodka mora poslušalec uporabiti XXXListener vmesnik in se registrirajte s komponento. Ko se dogodek zgodi, bo komponenta poklicala pravilno metodo odpreme. Metode so definirane v vmesniku, tako da lahko kateri koli predmet prejme dogodek. Dokler poslušalec izvaja vmesnik, bo komponenta znala poslati dogodek poslušalcu.

Zaviti

Kot lahko vidite, obstajajo odvisnosti med nekaterimi deli. Vmesnik poslušalca neposredno ustreza dogodku. Dogodek je nujno argument metode odpreme.

Komponenta se neposredno ujema z dogodkom in poslušalcem. Vsako mora vedeti, da lahko ustvarja dogodke, pošilja dogodke in registrira poslušalce.

Za razliko od preostalih dveh kosov je objekt dogodka neodvisen. Posledično lahko številne komponente sprožijo vrsto dogodka. Poleg tega lahko več vmesnikov opredeli metode za pošiljanje dogodka.

Tony Sintes je glavni svetovalec pri BroadVision. Tony, programer Java 1.1 in razvijalec Java 2 s certifikatom Sun, z Javo sodeluje od leta 1997.

To zgodbo "Dogodki in poslušalci" je prvotno objavil JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found