Esemény hozzáadása egy komponenshez

A Visual Editor for Java Terv nézetben vagy Java Beans nézetben hozzáadhat egy eseményt egy komponenshez.

Esemény hozzáadása egy komponenshez:
  1. Kattintson a jobb egérgombbal a komponensre a Java Beans vagy a Terv nézetben.
  2. Az előugró menüben válassza ki az Események menőpontot. Az előugró menü megjeleníti a komponens preferált eseményeit. Tegye a következők egyikét:
    • Kattintson a komponens által előnyben részesített események egyikére. A szerkesztő hozzáadja az eseményt a komponenshez. A JFrame által preferált események például a windowClosed és a windowOpened.
    • Kattintson az Események hozzáadása gombra az Események hozzáadása ablak megnyitásához.
  3. Az Események hozzáadása ablakban egy kategóriákra osztott lista jelenik meg. Válassza ki a hozzáadni kívánt eseményt és kattintson a Befejezés gombra.
    • A Események hozzáadása ablak a komponenshez lehetséges összes eseményt tartalmazza egy faszerkezetbe rendezve. A fában az első szinten az eseményfigyelők találhatóak, ezek alatt pedig a lehetséges visszahívások vannak felsorolva.
      Események hozzáadása párbeszédablak
    • A párbeszédablakon megadhatja, hogy új figyelőt kíván létrehozni, vagy egy meglévőt felhasználni. Amikor megnyílik a párbeszédablak, akkor az elemzi a meglévő figyelőket, és ha olyat talál, amelyet újra felhasználhatónak vél, akkor azt másféle ikonnal jelzi. Az illesztőosztályokat kiterjesztő meglévő figyelők esetén az esemény jelen osztály ikont, egyébként az esemény jelen ikont használja a rendszer. Magában a figyelőben a létező eseményeket egy zöld nyíl jelöli: zöld nyíl, a lehetséges eseményeket pedig befejezetlen nyíl: nincs esemény
    • Megadhatja, hogy egy meglévő figyelőt kíván használni, vagy létrehoz egy újat. Új létrehozásakor meghatározhatja, hogy a figyelő egy illesztőosztályt terjesszen ki, vagy csak a figyelő felületet valósítsa meg. Amennyiben valamelyik lehetőség nem elérhető, akkor a megfelelő választógomb le van tiltva. Ha például nem létezi figyelő, vagy a felhasználó által kiválasztott figyelőben a kijelölt esemény már használatban van, akkor a Létező figyelő használata lehetőség tiltott. Ha nem elérhető megfelelő illesztőosztály az új figyelőhöz, akkor a kiterjeszti: ILLESZTŐOSZTÁLY_NEVE választógomb tiltott.
    • Ha az Események hozzáadása párbeszédablakon a propertyChange eseményt választja, akkor a visszahívás megadásánál további lehetőségek nyílnak. Új figyelőt hozhat létre, melyet a addPropertyChange(PropertyChangeListener listener) metódussal adhat hozzá egy Java komponenshez. Ha ez történik, akkor a figyelő az összes tulajdonság eseményhez a propertyChange(PropertyChangeEvent event) általános visszahívási metódust használja. Egyes Java komponensek (például a Swing összetevők) esetében az addPropertyChange(String propertyName, PropertyChangeListener listener) két argumentumos metódus elérhető, és a figyelő alapértelmezésben ezt használja.

      Események hozzáadása párbeszédablak

      A két argumentumos metódussal felvett figyelő egy konkrét tulajdonsághoz tartozik, így másik tulajdonságnál nem használható fel. Az egyetlen argumentummal létrehozott figyelő a tulajdonság visszahívások feldolgozása előtt egy if utasítással ellenőrzi a tulajdonság nevét, ahogyan az az alábbi példában látható:

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

      Ezáltal az egyetlen argumentummal felvett PropertyChangeListener több tulajdonsághoz is használható (ehhez természetesen több if{} blokkra van szükség).

Egy esemény felvételekor ha létezik használható figyelő, akkor a szerkesztő automatikusan hozzáad egy visszahívási metódust. Ellenkező esetben egy új figyelőt hoz létre. Ennek vagy a visszahívási metódus üres törzsét tartalmazza, vagy egy illesztőosztályt valósít meg. Ez utóbbi esetben nem tartalmaz metódust a hozzáadandó esemény visszahíváshoz. Ha a tulajdonsághoz tartozó figyelőt az egy argumentumos addPropertyChange(PropertyChangeListener listener) metódussal adja hozzá a Java komponenshez, akkor szerkesztő egy meglévő PropertyChangeListener figyelőt hasznosít újra. Ha ez üres, akkor belekerül a tulajdonságot feldolgozó kódrészlet.

Ha nincs olyan lehetséges figyelő, amelyhez a visszahívási metódust hozzá lehetne adni, akkor egy anonim belső osztály új figyelő jön létre. Ha van megadva illesztőosztály az eseményhez, akkor az új figyelő kiterjeszti azt. Ellenkező esetben a figyelő felületet valósítja meg. Az esemény hozzáadása után egy //TODO megjegyzéssel ellátott metóduscsonk jön létre. A //TODO megjegyzés megjelenik a nem teljes metódusokat jelző Feladatok ablakban. Később, ha elkészítette a visszahívási logikát, akkor megkeresheti a //TODO megjegyzést, és eltávolíthatja a metódusból.

Az előző példában a windowOpened metódus már létezik. Ha ez az illesztőt kiterjesztő figyelő, akkor újra felhasználható, mert nem rendelkezik windowClosed metódussal. A szerkesztő felveszi a windowClosed(WindowEvent e) metódust, és hozzáadja a metóduscsonkot a //TODO megjegyzéssel az alábbiak szerint:

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();      
            }  
});

Részletes módban az eseményeket hozzáadhatja a fent ismertetett módon, de Java Beans fában is.  Az Események menü a figyelő összes visszahívási metódusát tartalmazza, a már használatban lévők tiltottak.

Hozzáadás ablak bezárva

A PropertyChangeListener előugró menüje a JavaBean összes kötött tulajdonságát tartalmazza. Ha ezek közül valamelyiket már használ a PropertyChangeListener, akkor az a menüben nem elérhető.

tulajdonság változás figyelő

Az egyetlen argumentumos metódussal felvett figyelő egy if utasítással ellenőrzi a nevét az egyes tulajdonság visszahívások feldolgozása előtt:

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

Ez lehetővé teszi, hogy az egyetlen argumentumos metódussal felvett PropertyChangeListener-t több if{} blokk használatával több tulajdonsághoz is lehessen használni. A további tulajdonság visszahívások felvételekor új if{} blokkokat kell hozzáadni.

Ha a propertyChangeListener-t az addPropertyChangeListener(String propertyName, PropertyChangeListener listener) két argumentumos metódussal adja hozzá a Java komponenshez, akkor az csak egy adott tulajdonsághoz tartozik, és nem lehet felhasználni másik tulajdonsághoz. Ebben az esetben az Események almenü összes leszármazottja tiltott.

Kapcsolódó fogalmak
Események, figyelők és illesztőosztályok
A Java Beans nézet
Kapcsolódó feladatok
Komponens eseményeinek megtekintése
Események törlése egy komponensből
Esemény forráskódjának megtekintése

(C) Copyright IBM Corporation 1999, 2004. Minden jog fenntartva.