Legge til hendelser i en komponent

Du kan legge til en hendelse i en komponent i Design-visningen eller visningen Java-bønner i det visuelle redigeringsprogrammet for Java.

Slik legger du til en hendelse i en komponent:
  1. Høyreklikk på komponenten i visningen Java-bønner eller i Design-visningen.
  2. Fra hurtigmenyen klikker du på Hendelser. Hurtigmenyen viser de foretrukne hendelsene for komponenten. Utfør ett av disse trinnene:
    • Klikk på en av de foretrukne hendelsene for komponenten. Hendelsen blir lagt til i komponenten. De foretrukne hendelsene for JFrame er for eksempel windowClosed og windowOpened.
    • Klikk på Legg til hendelser for å åpne vinduet Legg til hendelser.
  3. Hvis du har åpnet vinduet Legg til hendelser, får du en liste over kategoriserte hendelser du kan velge blant. Velg hendelsen som du vil legge til, og klikk deretter på Fullfør.
    • Dialogboksen Legg til hendelser viser alle de tilgjengelige hendelsene for komponenten i et tre. Treet viser hendelseslyttere som første nivå med oppføringer, og under hver lytteroppføring er det mulige kall tilbake som hendelsen kan sende.
      dialogboks for å legge til hendelse
    • Du kan bruke dialogboksen til å oppgi om du vil opprette en ny lytter, eller bruke en eksisterende lytter. Når dialogboksen åpnes, analyserer den eksisterende lyttere, og hvis den finner en som den tror kan brukes om igjen, merker den lytteren med et annet ikon. For eksisterende lyttere som utvider en adapterklasse, blir ikonet hendelsesklasse finnes brukt, hvis ikke blir ikonet hendelse finnes brukt. I selve lytteren, blir eksisterende lyttere vist med en grønn pil grønn pil, og tilgjengelige hendelser blir vist med en ufullstendig pil ikke-hendelse
    • Du kan oppgi om du vil bruke den eksisterende lytteren, eller om du vil opprette en ny. Når du oppretter en ny, kan du velge om du vil at den skal utvide adapterklassen, eller bare implementere lyttergrensesnittet. Hvis et alternativt ikke er aktuelt, er valgknappene deaktivert. Hvis det for eksempel ikke finnes en eksisterende lytter, eller en eksisterende lytter er valgt, men den valgte hendelsen allerede er i bruk, er Bruk eksisterende lytter deaktivert. Hvis det ikke er noen tilgjengelig adapterklasse for en ny lytter, er valgknappen utvider: ADAPTER_CLASS_NAME deaktivert.
    • Hvis du velger propertyChange i dialogboksen Legg til hendelse, får du flere alternativer for å legge til tilbakekall. Du kan opprette en ny lytter som kan legges til i JavaBean med metoden addPropertyChange(PropertyChangeListener listener). Hvis dette forekommer, blir lytterens generiske tilbakekallmetode propertyChange(PropertyChangeEvent event) brukt for alle egenskapshendelser. I noen Java-bønner (for eksempel Swing-komponenter) er metoden med to argumenter addPropertyChange(String propertyName, PropertyChangeListener listener) tilgjengelig og blir valgt som standard for den nye lytteren.

      dialogboks for å legge til hendelser

      En lytter som blir lagt til med metoden med to argumenter, er spesifikk for en bestemt egenskap, og den kan ikke brukes om igjen for en annen egenskap. En lytter som blir lagt til med en metode med ett enkelt argument, har en if-setning som kontrollerer navnet på egenskapen før den behandler logikken for hvert egenskapstilbakekall, som vist i følgende kode:

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

      Dette gjør at en PropertyChangeListener som blir lagt til med en metode med ett enkelt argument, kan brukes for flere egenskaper (ved at flere if{}-blokker brukes).

Når du legger til en hendelse, og det er en eksisterende lytter som kan brukes, blir tilbakekallmetoden lagt til den. Hvis ikke, blir det opprettet en ny lytter. Hvis en eksisterende lytter skal brukes, må den være en anonym indre klasse i JavaBean som implementerer lyttergrensesnittet. Den må ha en tom metodehoveddel for tilbakekallmetoden, eller utvide adapterklassen, og ikke ha en eksisterende metode for hendelsestilbakekallet som blir lagt til. En eksisterende PropertyChangeListener blir brukt på nytt for en egenskap hvis den blir lagt til i JavaBean med en metode med ett enkelt argument addPropertyChange(PropertyChangeListener listener). Hvis den ikke allerede har kode, blir behandling av egenskapen lagt til.

Hvis det ikke finnes en lytterkandidat som tilbakekallmetoden kan legges til, blir det opprettet en ny lytter. Dette vil være en anonym indre klasse, og hvis det er definert en adapterklasse for hendelsen, vil lytteren utvide den. Hvis ikke, vil den implementere lyttergrensesnittet. Når hendelsen er lagt til, blir det lagt til en metodestubb med en //TODO-kommentar. Denne metodestubben viser kildekoden som vil bli utført når hendelsen forekommer, og du bør endre denne for å få den ønskede virkemåten. Kommentaren //TODO blir vist i Oppgaver-vinduet og flagger ufullstendige metoder. Dermed kan du finne dem senere og fjerne //TODO-kommentaren når logikken for tilbakekall er skrevet.

I det forrige eksempelet finnes windowOpened-metoden allerede. Hvis dette er en lytter som utvider adapteren, blir den samme lytteren brukt på nytt, for den har ikke allerede en windowClosed-metode. Metoden windowClosed(WindowEvent e) blir lagt til, og metodestubben og //TODO-kommentaren blir lagt til som vist her:

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

I ekspertmodus kan hendelser likevel legges til i JavaBean som vist tidligere, men de kan også bli lagt til i en lytter i treet Java-bønner. Hendelser-menyen viser alle tilbakekallmetodene for hendelser på lytteren, og alle som allerede er i bruk, er deaktivert.

legge til windowClosed

For en PropertyChangeListener viser hurtigmenyen alle egenskapene som er bundet, i JavaBean. Hvis det er noen som allerede er brukt av PropertyChangeListener, blir de deaktivert.

lytter for egenskapsendring

En lytter som blir lagt til med en metode med ett enkelt argument, har en if-setning som kontrollerer navnet på egenskapen før den behandler logikken for hvert egenskapstilbakekall, som vist i følgende kode:

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

Dette gjør at en PropertyChangeListener som blir lagt til med en metode med ett enkelt argument, kan brukes for flere egenskaper (ved at flere if{}-blokker brukes), og når det andre og etterfølgende egenskapstilbakekallet blir lagt til, blir en ny if{}-blokk lagt til.

Hvis propertyChangeListener blir lagt til JavaBean med metoden med to argumenter addPropertyChangeListener(String propertyName, PropertyChangeListener listener), er den spesifikk for en bestemt egenskap og kan ikke brukes om igjen for en annen egenskap. I dette tilfellet blir alle underordnede på Hendelser-kaskademenyen deaktivert.

Beslektede begreper
Hendelser, lyttere og adapterklasser
Visningen Java-bønner
Beslektede oppgaver
Vise hendelser for en komponent
Slette hendelser fra en komponent
Vise kilden for en hendelse

(C) Copyright IBM Corporation 1999, 2004. All Rights Reserved.