Einer Komponente Ereignisse hinzufügen

In der Entwurfsansicht oder der Java-Beans-Ansicht können Sie einer Komponente ein Ereignis hinzufügen.

Um einer Komponente ein Ereignis hinzuzufügen, gehen Sie wie folgt vor:
  1. Klicken Sie die Komponente in der Java-Beans-Ansicht oder der Entwurfsansicht mit der rechten Maustaste an.
  2. Im Kontextmenü klicken Sie auf 'Ereignisse'. Das Kontextmenü zeigt die bevorzugten Ereignisse für die Komponente. Führen Sie einen der folgenden Schritte aus:
    • Klicken Sie eins der bevorzugten Ereignisse für die Komponente an. Das Ereignis wird der Komponente hinzugefügt. Für ein 'JFrame' sind z.B. die bevorzugten Ereignisse 'windowClosed' und 'windowOpened'.
    • Klicken Sie auf 'Ereignisse hinzufügen', um das Fenster 'Ereignisse hinzufügen' zu öffnen.
  3. Wenn Sie das Fenster 'Ereignisse hinzufügen' geöffnet haben, wird Ihnen eine Liste kategorisierter Ereignisse angezeigt, aus der Sie eine Auswahl treffen können. Wählen Sie das Ereignis aus, das Sie hinzufügen möchten und klicken Sie auf 'Fertig stellen'.
    • Der Dialog 'Ereignisse hinzufügen' zeigt alle für die Komponente verfügbaren Ereignisse in einer Baumstruktur. Die Baumstruktur zeigt die Listener-Funktion als erste Eingabeebene, und unter einem jeden Listener-Funktionseintrag sind die möglichen 'Callbacks' aufgeführt, die das Ereignis auslösen kann.
      Dialog 'Ereignis hinzufügen'
    • Sie können den Dialog verwenden, um anzugeben, ob Sie eine neue Listener-Funktion erstellen oder eine vorhandene verwenden möchten. Wenn der Dialog geöffnet wird, werden die vorhandenen Listener-Funktionen analysiert und, wenn eine gefunden wurde, von der angenommen wird, sie wieder verwenden zu können, wird diese markiert mit einem anderen Symbol: event present class wenn die vorhandene Listener-Funktion eine Adapterklasse erweitert oder andernfalls event present. Innerhalb der Listener-Funktion selbst werden vorhandene Ereignisse mit einem grünen Pfeil dargestellt grüner Pfeil, und verfügbare Ereignisse werden mit einem unvollständigen Pfeil unevent dargestellt.
    • Sie können angeben, ob Sie die vorhandene Listener-Funktion verwenden oder eine neue erstellen möchten. Wenn eine neue erstellt wird, können Sie wählen, ob Sie möchten, dass sie die Adapterklasse erweitert oder nur die Listener-Funktionsschnittstelle implementiert. Wenn eine Option nicht zur Verfügung steht, sind die Radioknöpfe deaktiviert. Wenn z.B. keine vorhandene Listener-Funktion verfügbar ist oder eine vorhandene Listener-Funktion ausgewählt wurde, das ausgewählte Ereignis aber bereits verwendet wird, wir die Funktion 'Vorhandene Listener-Funktion verwenden' deaktiviert. Wenn keine verfügbare Adapterklasse für die neue Listener-Funktion vorhanden ist, wird der Radioknopf 'ADAPTER_CLASS_NAME' deaktiviert.
    • Wenn Sie 'propertyChange' im Dialog 'Ereignis hinzufügen' auswählen, stehen Ihnen zusätzliche Optionen für das Hinzufügen des Callback zur Verfügung. Eine neue Listener-Funktion kann erstellt werden, die der Java-Bean unter Verwendung der Methode addPropertyChange(PropertyChangeListener listener) hinzugefügt werden kann. Wenn dies geschieht, wird die allgemeine Callback-Methode propertyChange(PropertyChangeEvent event) der Listener-Funktion für alle Eigenschaftsereignisse verwendet. Bei einigen Java-Beans (z.B. als Swing-Komponenten) steht die zwei Argumente enthaltende Methode addPropertyChange(String propertyName, PropertyChangeListener listener) zur Verfügung, die standardmäßig zur Verwendung mit der neuen Listener-Funktion ausgewählt wird.

      Dialog 'Ereignis hinzufügen'

      Eine Listener-Funktion, die unter Verwendung der zwei Argumente enthaltenden Methode hinzugefügt wird, ist spezifisch für eine bestimmte Eigenschaft, so dass sie nicht für eine andere Eigenschaft verwendet werden kann. Eine Listener-Funktion, die mit einer Einzelargumentmethode hinzugefügt wurde, hat eine if-Anweisung, die den Namen der Eigenschaft prüft, bevor, wie im folgenden Code gezeigt, die Logik für jedes Eigenschafts-Callback verarbeitet wird:

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

      Dadurch wird ermöglicht, dass eine Funktion 'PropertyChangeListener' (Listener-Funktion zur Eigenschaftsänderung), die mit einer Einzelargumentmethode hinzugefügt wurde, für mehr als eine Eigenschaft verwendet wird (da sie mehrere 'if{}'-Blöcke hat, die verwendet werden). 

Wenn Sie ein Ereignis hinzufügen, wird diesem, wenn es eine vorhandene Listener-Funktion gibt, die verwendet werden kann, die Callback-Methode hinzugefügt. Andernfalls wird eine neue Listener-Funktion erstellt. Bei einer zu verwendenden vorhandenen Listener-Funktion muss es eine anonyme untergeordnete Klasse in der Java-Bean geben, die die Listener-Funktionsschnittstelle implementiert. Sie muss einen leeren Methodenhauptteil für die Callback-Methode haben oder die Adapterklasse erweitern und sie darf keine vorhandene Methode für das hinzugefügte Ereignis-Callback haben. Für eine Eigenschaft wird eine vorhandene 'PropertyChangeListener' erneut verwendet, wenn sie der Java-Bean mit der Einzelargumentmethode addPropertyChange(PropertyChangeListener listener) hinzugefügt wird. Wenn sie nicht bereits über einen Code verfügt, wird die Verarbeitung der Eigenschaft hinzugefügt.

Wenn es keine mögliche vorhandene Listener-Funktion gibt, der die Callback-Methode hinzugefügt werden kann, wird eine neue Listener-Funktion erstellt. Dabei handelt es sich um eine anonyme untergeordnete Klasse, die, wenn eine Adapterklasse für das Ereignis definiert worden ist, durch die Listener-Funktion erweitert wird. Andernfalls wird sie die Listener-Funktionsschnittstelle implementieren. Nachdem das Ereignis hinzugefügt ist, wird eine Stub-Methode mit einem //TODO-Kommentar erstellt. Die Stub-Methode ist Anzeiger für den Quellcode, der bei Eintritt des Ereignisses ausgeführt wird, und Sie sollten diesen dann so ändern, dass das von Ihnen gewünschte Verhalten ausgeführt wird. Der //TODO-Kommentar erscheint im Tasks-Fenster und ermöglicht Ihnen das Markieren unvollständiger Methoden. Dies geschieht, damit Sie diese später auffinden und den //TODO-Kommentar löschen können, wenn die Callback-Logik geschrieben worden ist.

In dem obigen Beispiel ist die Methode 'windowOpened' bereits vorhanden. Wenn dies eine Listener-Funktion ist, die dem Adapter erweitert, wird dieselbe Listener-Funktion erneut verwendet, da sie nicht bereits eine Methode 'windowClosed' hat. Die Methode windowClosed(WindowEvent e) wird hinzugefügt und der Methoden-Stub und der //TODO-Kommentar werden, wie im Folgenden gezeigt, hinzugefügt:

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

Im Expertenmodus können, wie oben gezeigt, die Ereignisse noch der Java-Bean hinzugefügt werden, aber sie können auch einer Listener-Funktion in der Baumstruktur der Java-Beans hinzugefügt werden. Das Ereignismenü zeigt alle Callback-Methoden des Ereignisses für die Listener-Funktion, und alle bereits verwendeten sind deaktiviert.

'window closed' hinzufügen

Bei einer 'PropertyChangeListener'-Funktion zeigt das Kontextmenü alle damit verbundenen Eigenschaften der Java-Bean. Wenn es einige gibt, die bereits durch die Funktion 'PropertyChangeListener' verwendet werden, werden diese deaktiviert.

Listener-Funktion Eigenschaftsänderung

Eine Listener-Funktion, die mit einer Einzelargumentmethode hinzugefügt wurde, hat eine IF-Anweisung, die den Namen der Eigenschaft prüft, bevor, wie im folgenden Code gezeigt, die Logik für jedes Eigenschafts-Callback verarbeitet wird.

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

Dadurch wird ermöglicht, dass bei einer Funktion 'PropertyChangeListener', die mit einer Einzelargumentmethode hinzugefügt wurde, um für mehr als eine Eigenschaft verwendet zu werden (da sie mehrere 'if{}'-Blöcke hat, die verwendet werden) und bei Hinzufügung des zweiten und nachfolgenden Eigenschafts-Callbacks, neue 'if{}'-Blöcke hinzugefügt werden.

Wenn die Funktion 'propertyChangeListener' der Java-Bean unter Verwendung der zwei Argumente enthaltenden Methode addPropertyChangeListener(String propertyName, PropertyChangeListener listener) hinzugefügt wurde, so gilt diese spezifisch für eine bestimmte Eigenschaft und kann nicht erneut für eine andere Eigenschaft verwendet werden. In diesem Fall sind alle untergeordneten Elemente im Untermenüfenster des Ereignisses deaktiviert.

Übergeordnetes Thema: Verarbeitung von Ereignissen mit dem Visual Editor

Verwandte Konzepte
Die Java-Beans-Ansicht

Verwandte Tasks
Löschen von Ereignissen aus einer Komponente
Ereignisse für eine Komponente anzeigen
Anzeigen der Quelle für ein Ereignis

(C) Copyright IBM Corporation 1999, 2004. Alle Rechte vorbehalten."