Tapahtumien lisäys komponenttiin

Voit lisätä tapahtuman komponenttiin graafisen Java-muokkausohjelman suunnittelunäkymässä tai Java-bean-komponentti-näkymässä.

Voit lisätä tapahtuman komponenttiin seuraavasti:
  1. Napsauta komponenttia hiiren kakkospainikkeella Java-bean-komponentti-näkymässä tai suunnittelunäkymässä.
  2. Valitse ponnahdusvalikosta Tapahtumat. Komponentin ensisijaiset tapahtumat näkyvät ponnahdusvalikossa. Tee jompikumpi seuraavista:
    • Valitse jokin komponentin ensisijaisista tapahtumista. Tapahtuma lisätään komponenttiin. Esimerkiksi JFrame-kehyksen ensisijaiset tapahtumat ovat windowClosed ja windowOpened.
    • Avaa tapahtumien lisäysikkuna valitsemalla Lisää tapahtumia.
  3. Jos avaat Lisää tapahtumia -ikkunan, näyttöön tulee luettelo luokitelluista tapahtumista, jotka ovat valittavissa. Valitse lisättävä tapahtuma ja napsauta Valmis-painiketta.
    • Lisää tapahtumia -valintaikkunassa näkyvät kaikki komponentin käytettävissä olevat tapahtumat rakenne-esityksessä. Tapahtuman kuuntelutoiminnot näkyvät ensimmäisellä tasolla, ja mahdolliset tapahtuman vastakutsut kunkin kuuntelutoimintomäärityksen alla.
      Lisää tapahtumia -valintaikkuna
    • Voit määrittää valintaikkunassa, haluatko luoda uuden kuuntelutoiminnon vai käyttää aiemmin luotua toimintoa. Kun valintaikkuna avautuu, se analysoi aiemmin luodut kuuntelutoiminnot, ja jos mahdollisesti uudelleen käytettävä toiminto löytyy, se merkitään erilaisella kuvakkeella. Sovitinluokkaan laajeneville aiemmin luoduille kuuntelutoiminnoille käytetään kuvaketta tapahtuma löytyi -luokka. Muutoin käytössä on kuvake tapahtuma löytyi. Itse kuuntelutoiminnossa aiemmin luodut tapahtumat on merkitty vihreällä nuolella vihreä nuoli, ja käytettävissä olevat tapahtumat on merkitty vaillinaisella nuolella epätäydellinen tapahtuma
    • Voit määrittää, käytetäänkö aiemmin luotua kuuntelutoimintoa vai luodaanko uusi. Kun uusi toiminto luodaan, voit valita, laajeneeko se sovitinluokkaan vai toteuttaako se vain kuuntelutoiminnon rajapinnan. Jos vaihtoehto ei ole käytettävissä, valintanapit ovat poissa käytöstä. Jos esimerkiksi aiemmin luotua kuuntelutoimintoa ei ole tai aiemmin luotu kuuntelutoiminto on valittu, mutta valittu tapahtuma on jo käytössä, Käytä aiemmin luotua kuuntelutoimintoa -vaihtoehto on poissa käytöstä. Jos uudelle kuuntelutoiminnolle ei ole käytettävissä sovitinluokkaa, Laajennukset: ADAPTER_CLASS_NAME -valintanappi on poissa käytöstä.
    • Jos valitset Lisää tapahtumia -valintaikkunasta vaihtoehdon propertyChange, vastakutsun lisäykseen on käytettävissä lisävaihtoehtoja. Uuden Java-bean-komponenttiin lisättävissä olevan kuuntelutoiminnon voi luoda metodilla addPropertyChange(PropertyChangeListener listener). Jos teet näin, kuuntelutoiminnon yleistä vastakutsumetodia propertyChange(PropertyChangeEvent event) käytetään kaikille ominaisuustapahtumille. Joissakin Java-bean-komponenteissa (kuten Swing-komponenteissa) on käytössä kahden argumentin metodi addPropertyChange(String propertyName, PropertyChangeListener listener), joka on valittu oletusarvoisesti uuden kuuntelutoiminnon yhteydessä käytettäväksi.

      Lisää tapahtumia -valintaikkuna

      Kahden argumentin metodia käyttämällä lisätty kuuntelutoiminto on ominaisuuskohtainen, joten sitä ei voi käyttää uudelleen jossakin toisessa ominaisuudessa. Yhden argumentin metodilla lisätyllä kuuntelutoiminnolla on if-lause, joka tarkistaa ominaisuuden nimen, ennen kuin se käsittelee kunkin ominaisuuden vastakutsun logiikan seuraavan koodin mukaisesti:

      javaBean.addPropertyChangeListener(new java.beans.PropertyChangeListener() {  
          public void propertyChange(java.beans.PropertyChangeEvent e) {                        
                   if ((e.getPropertyName().equals("font"))) {              
                         System.out.println("propertyChange(font)");         
                   }     
                }  
          });

      Tällä koodilla yhdellä argumentilla lisättyä PropertyChangeListener-metodia voi käyttää useissa ominaisuuksissa (käyttämällä useita if{}-lohkoja). 

Kun lisäät tapahtuman, vastakutsumetodi lisätään siihen, jos aiemmin luotu kuuntelutoiminto on käytettävissä. Muussa tapauksessa luodaan uusi kuuntelutoiminto. Aiemmin luodun kuuntelutoiminnon käyttö edellyttää, että se on nimetön sisäinen luokka Java-bean-komponentissa, joka toteuttaa kuuntelutoimintoliittymän. Sillä on oltava tyhjä metodirunko vastakutsumetodia varten tai sen on laajennettuva sovitinluokkaan. Sillä ei saa olla aiemmin luotua metodia lisättävälle tapahtuman vastakutsulle.  Jos kyseessä on ominaisuus, aiemmin luotua PropertyChangeListener-metodia käytetään uudelleen, jos se lisätään Java-bean-komponenttiin yhden argumentin metodilla addPropertyChange(PropertyChangeListener listener). Jos ominaisuuden käsittelylle ei ole vielä määritetty koodia, se lisätään.

Jos vastakutsumetodin lisäystä varten ei löydy aiemmin luotua kuuntelutoimintoa, järjestelmä luo uuden kuuntelutoiminnon. Tämä on nimetön sisäinen luokka, ja jos tapahtumalle on määritetty sovitinluokka, kuuntelutoiminto laajentuu siihen. Muussa tapauksessa toiminto toteuttaa kuuntelutoimintoliittymän. Kun tapahtuma on lisätty, järjestelmä luo tukirakennemetodin, jolla on huomautus //TODO. Tukirakennemetodi ilmaisee lähdekoodin, joka ajetaan tapahtuman ilmetessä. Tätä koodia tulee sitten muuttaa siten, että se toteuttaa tarvittavat toimet. //TODO-huomautus näkyy tehtäväikkunassa, ja se ilmaisee puutteelliset metodit. Tämä siksi, että voit paikantaa ne myöhemmin ja poistaa //TODO-huomautuksen, kun vastakutsun logiikka on kirjoitettu.

Edellisessä esimerkissä windowOpened-metodi on jo olemassa. Jos tämä on kuuntelutoiminto, joka laajentuu sovittimeen, samaa kuuntelutoimintoa käytetään uudelleen, koska sillä ei ole vielä windowClosed-metodia. Metodi windowClosed(WindowEvent e) lisätään, ja metodin tukirakenne sekä //TODO-huomautus lisätään seuraavasti:

this.addWindowListener(new java.awt.event.WindowAdapter() {       
        public void windowClosed(java.awt.event.WindowEvent e) {  
         System.out.println("windowClosed()"); // TODO Auto-generated stub windowClosed()       
              }       
        public void windowOpened(java.awt.event.WindowEvent e) {          
             callExistingWindowOpenedLogic();      
            }  
});

Asiantuntijatilassa tapahtumia voi edelleen lisätä Java-bean-komponenttiin edellä kuvatulla tavalla, mutta niitä voi myös lisätä Java-bean-komponentti-rakenteessa olevaan kuuntelutoimintoon. Kaikki kuuntelutoiminnon vastakutsumetodit ovat näkyvissä Tapahtumat-valikossa, ja kaikki jo käytetyt metodit ovat poissa käytöstä.

Lisää suljettu ikkuna

Jos kyseessä on PropertyChangeListener-metodi, ponnahdusvalikossa näkyvät kaikki Java-bean-komponenttiin sidotut ominaisuudet. Jos ominaisuus on jo PropertyChangeListener-metodin käytössä, sitä ei voi enää käyttää.

Kuuntelutoiminnon muutosominaisuus

Yhden argumentin metodilla lisätyllä kuuntelutoiminnolla on if-lause, joka tarkistaa ominaisuuden nimen, ennen kuin se käsittelee kunkin ominaisuuden vastakutsun logiikan seuraavan koodin mukaisesti:

javaBean.addPropertyChangeListener(new java.beans.PropertyChangeListener() {  
    public void propertyChange(java.beans.PropertyChangeEvent e) {                        
             if ((e.getPropertyName().equals("font"))) {              
                   System.out.println("propertyChange(font)");         
             }     
          }  
    });

Tällä koodilla yhdellä argumentilla lisättyä PropertyChangeListener-metodia voi käyttää useissa ominaisuuksissa (käyttämällä useita if{}-lohkoja), ja kun lisäät seuraavan ominaisuuden vastakutsun, myös uusia if{}-lohkoja lisätään. 

Jos propertyChangeListener-metodi lisätään Java-bean-komponenttiin kahden argumentin metodilla addPropertyChangeListener(String propertyName, PropertyChangeListener listener), metodi on ominaisuuskohtainen eikä sitä voi käyttää uudelleen jossakin toisessa ominaisuudessa. Tässä tapauksessa kaikki Tapahtumat-laajennusvalikon alitapahtumat ovat poissa käytöstä.

Aiheeseen liittyviä käsitteitä
Tapahtumat, kuuntelutoiminnot ja sovitinluokat
Java-bean-komponentti-näkymä
Aiheeseen liittyviä tehtäviä
Komponentin tapahtumien tarkastelu
Tapahtumien poisto komponentista
Tapahtuman lähteen tarkastelu

(C) Copyright IBM Corporation 1999, 2004. All rights reserved.