Dodawanie zdarzeń do komponentu

Zdarzenie można dodać do komponentu w widoku projektu lub w widoku komponentów Java Bean edytora Visual Editor for Java.

Aby dodać zdarzenie do komponentu:
  1. Kliknij prawym przyciskiem myszy komponent w widoku komponentów Java Bean lub w widoku projektu.
  2. W menu podręcznym kliknij opcję Zdarzenia. W menu podręcznym są wyświetlane preferowane zdarzenia dla danego komponentu. Wykonaj jedną z poniższych czynności:
    • Kliknij jedno z preferowanych zdarzeń dla komponentu. Zdarzenie zostanie dodane do komponentu. Preferowane zdarzenia dla na przykład komponentu JFrame to: windowClosed i windowOpened.
    • Kliknij przycisk Dodaj zdarzenia, aby otworzyć okno dodawania zdarzeń.
  3. W oknie dodawania zdarzeń jest wyświetlana lista dostępnych zdarzeń pogrupowanych w kategorie. Wybierz zdarzenie do dodania, a następnie kliknij przycisk Zakończ.
    • W oknie dodawania zdarzenia zostanie wyświetlone drzewo wszystkich dostępnych zdarzeń dla komponentu. Funkcje nasłuchiwania zdarzeń znajdują się na pierwszym poziomie drzewa; pod każdą z funkcji są wyświetlane możliwe wywołania zwrotne, które zdarzenie może spowodować.
      Okno dialogowe dodawania zdarzenia
    • W tym oknie dialogowym można określić, czy ma zostać utworzona nowa funkcja nasłuchiwania, czy też zostanie użyta już istniejąca. Otwarcie tego okna dialogowego powoduje przeanalizowanie istniejących funkcji nasłuchiwania i jeśli zostanie odnaleziona funkcja, która może być powtórnie użyta, zostaje oznaczona inną ikoną. Dla istniejących funkcji nasłuchiwania, które rozszerzają klasę adaptera, używana jest ikona Klasa obecnego zdarzenia, w przeciwnym razie używana jest ikona Obecne zdarzenie. Istniejące zdarzenia są oznaczane w funkcji nasłuchiwania zieloną strzałką Zielona strzałka, a dostępne zdarzenia są wskazywane przez niewypełnioną strzałkę Dostępne zdarzenie
    • Użytkownik może określić, czy chce użyć istniejącej funkcji nasłuchiwania czy też chce utworzyć nową. Tworząc nową funkcję nasłuchiwania, można wybrać, czy ma ona rozszerzać klasę adaptera czy też ma tylko implementować interfejs nasłuchiwania. Jeśli dowolna z opcji jest niedostępna, jej przełącznik jest nieaktywny. Jeśli na przykład funkcja nasłuchiwania nie istnieje lub została wybrana istniejąca funkcja nasłuchiwania, ale wybrane zdarzenie jest już używane, to opcja Użyj istniejącej funkcji nasłuchiwania jest niedostępna. Jeśli dla nowej funkcji nasłuchiwania nie ma dostępnej klasy adaptera, to przełącznik rozszerza: NAZWA_KLASY_ADAPTERA jest nieaktywny.
    • Po wybraniu w oknie dialogowym dodawania zdarzeń zdarzenia propertyChange zostaną udostępnione dodatkowe opcje dodawania wywołania zwrotnego. Może zostać utworzona nowa funkcja nasłuchiwania, którą będzie można dodać do komponentu Java Bean przy użyciu metody addPropertyChange(PropertyChangeListener listener). W takim przypadku dla wszystkich zdarzeń właściwości będzie używana ogólna metoda wywołania zwrotnego funkcji nasłuchiwania propertyChange(PropertyChangeEvent event). W przypadku niektórych komponentów Java Bean (jak komponenty Swing) dla nowej funkcji nasłuchiwania jest dostępna i wybrana domyślnie dwuargumentowa metoda addPropertyChange(String propertyName, PropertyChangeListener listener).

      Okno dialogowe dodawania zdarzenia

      Funkcja nasłuchiwania dodawana przy użyciu metody dwuargumentowej jest charakterystyczna dla danej właściwości, więc nie może zostać użyta ponownie dla innej właściwości. Funkcja nasłuchiwania dodana przy użyciu metody jednoargumentowej ma instrukcję if sprawdzającą nazwę właściwości przed przetworzeniem logiki dla każdego wywołania zwrotnego właściwości, jak pokazano w następującym kodzie:

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

      Ten kod umożliwia używanie funkcji nasłuchiwania PropertyChangeListener dodanej przy użyciu metody jednoargumentowej dla więcej niż jednej właściwości (przez użycie wielu bloków if{}).

Jeśli dodawane jest zdarzenie i istnieje funkcja nasłuchiwania, która może zostać użyta, to metoda wywołania zwrotnego jest do niej dodawana. W przeciwnym razie jest tworzona nowa funkcja nasłuchiwania. Aby została użyta istniejąca funkcja nasłuchiwania, musi ona być anonimową klasą wewnętrzną komponentu Java Bean, który implementuje interfejs nasłuchiwania. Musi mieć pustą treść metody dla metody wywołania zwrotnego albo rozszerzać klasę adaptera i nie mieć dodanej istniejącej metody dla wywołania zwrotnego zdarzenia. W przypadku właściwości istniejąca funkcja nasłuchiwania PropertyChangeListener zostanie ponownie użyta, jeśli zostanie dodana do komponentu Java Bean przy użyciu metody jednoargumentowej addPropertyChange(PropertyChangeListener listener). Jeśli funkcja nie ma jeszcze kodu, zostanie dodane przetwarzanie właściwości.

Jeśli nie istnieje potencjalna funkcja nasłuchiwania, do której metoda wywołania zwrotnego może zostać dodana, jest tworzona nowa funkcja nasłuchiwania. Jest to anonimowa klasa wewnętrzna i jeśli dla zdarzenia została zdefiniowana klasa adaptera, to funkcja nasłuchiwania ją rozszerzy. W przeciwnym razie zostanie zaimplementowany interfejs funkcji nasłuchiwania. Po dodaniu zdarzenia jest tworzona metoda szkieletowa z komentarzem //TODO. Metoda szkieletowa jest wskaźnikiem kodu źródłowego, który zostanie wykonany w chwili wystąpienia zdarzenia. Należy zmienić ten kod tak, aby były wykonywane odpowiednie działania. Komentarz //TODO jest wyświetlany w oknie czynności, oznaczając niepełne metody. Dzięki temu można je odnaleźć i usunąć komentarz //TODO po utworzeniu logiki wywołania zwrotnego.

W poprzednim przykładzie metoda windowOpened już istnieje. Jeśli jest to funkcja nasłuchiwania, która rozszerza adapter, to zostanie ponownie użyta, ponieważ jeszcze nie ma metody windowClosed. W poniższym przykładzie są dodawane: metoda windowClosed(WindowEvent e), szkielet metody i komentarz //TODO:

this.addWindowListener(new java.awt.event.WindowAdapter() {     
        public void windowClosed(java.awt.event.WindowEvent e) {
         System.out.println("windowClosed()"); // TODO Automatycznie generowany szkielet windowClosed()      
              }      
        public void windowOpened(java.awt.event.WindowEvent e) {         
             callExistingWindowOpenedLogic();     
            }
});

W trybie zaawansowanym zdarzenia mogą być dodawane do komponentu Java Bean, jak pokazano wyżej; mogą być również dodawane do funkcji nasłuchiwania w drzewie komponentów Java Bean. Menu Zdarzenia zawiera wszystkie metody wywołań zwrotnych dla funkcji nasłuchiwania. Metody już używane są niedostępne.

Dodawanie zdarzenia windowClosed

W przypadku funkcji nasłuchiwania PropertyChangeListener menu rozwijane zawiera wszystkie powiązane właściwości dla komponentu Java Bean. Właściwości już używane przez funkcję PropertyChangeListener są niedostępne.

Funkcja nasłuchiwania PropertyChange

Funkcja nasłuchiwania dodana przy użyciu metody jednoargumentowej ma instrukcję IF sprawdzającą nazwę właściwości przed przetworzeniem logiki dla każdego wywołania zwrotnego właściwości, jak pokazano w poniższym kodzie:

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

Ten kod umożliwia używanie funkcji nasłuchiwania PropertyChangeListener dodanej przy użyciu metody jednoargumentowej dla więcej niż jednej właściwości (przez użycie wielu bloków if{}). Wraz z kolejnymi wywołaniami zwrotnymi właściwości są dodawane nowe bloki if{}.

Jeśli funkcja nasłuchiwania propertyChangeListener zostanie dodana do komponentu Java Bean przy użyciu metody dwuargumentowej addPropertyChangeListener(String propertyName, PropertyChangeListener listener), to będzie ona charakterystyczna dla określonej właściwości i nie będzie mogła zostać ponownie użyta dla innej właściwości. W takim przypadku wszystkie elementy podrzędne menu Zdarzenia będą niedostępne.

Pojęcia pokrewne
Zdarzenia, funkcje nasłuchiwania i klasy adaptera
Widok komponentów Java Bean
Czynności pokrewne
Wyświetlanie zdarzeń dla komponentu
Usuwanie zdarzeń z komponentu
Wyświetlanie kodu źródłowego dla zdarzenia

(C) Copyright IBM Corporation 1999, 2004. Wszelkie prawa zastrzeżone.