Incluindo Eventos em um Componente

Você pode incluir um evento em um componente na visualização Design ou na visualização Java Beans.

Para incluir um evento em um componente:
  1. Clique com o botão direito do mouse no componente na visualização Java Beans ou na visualização Design.
  2. No menu pop-up, clique em Eventos. O menu pop-up mostra os eventos preferidos para o componente. Execute uma das seguintes etapas:
    • Clique em um dos eventos preferidos para o componente. O evento é incluído no componente. Por exemplo, para um JFrame os eventos preferidos são windowClosed e windowOpened.
    • Clique em Incluir Eventos para abrir a janela Incluir Eventos.
  3. Se você abriu a janela Incluir Eventos, será exibida uma lista de eventos categorizados para escolha. Selecione o evento que deseja incluir e clique em Concluir.
    • O diálogo Incluir Eventos mostra todos os eventos disponíveis para o componente em uma árvore. A árvore mostra os listeners do evento como o primeiro nível das entradas e abaixo de cada entrada de listener estão os retornos de chamada possíveis que o evento pode emitir.
      diálogo incluir eventos
    • O diálogo permite que você especifique se deseja criar um novo listener ou utilizar um listener existente. Quando o diálogo é aberto, ele analisa os listeners existentes e, se localizar um que possa ser reutilizado, ele o marca com um ícone diferente: classe de evento atual se o listener existente estender uma classe de adaptador ou evento atual, se não estender. No próprio listener, os eventos existentes são mostrados com uma seta verde seta verde e os eventos disponíveis são mostrados com uma seta incompleta unevent
    • Você pode especificar se deseja utilizar o listener existente ou se deseja criar um novo. Quando um novo listener é criado, você pode escolher se ele deverá estender a classe do adaptador ou se irá apenas implementar a interface do listener.  Se uma opção não for aplicável, os botões de opção serão desativados. Por exemplo, se não houver nenhum listener ou se um listener for selecionado, mas um evento selecionado já estiver em utilização, a opção Utilizar Listener Existente será desativada. Se não houver nenhuma classe de adaptador disponível para o novo listener, o botão de opções extends: ADAPTER_CLASS_NAME será desativado.
    • Se você selecionar propertyChange no diálogo Incluir Eventos, você terá opções adicionais para incluir o retorno de chamada. Um novo listener pode ser criado e incluído no JavaBean utilizando o método addPropertyChange(PropertyChangeListener listener). Se isso ocorrer, o método de retorno de chamada genérico do listener propertyChange(PropertyChangeEvent event) será utilizado para todos os eventos de propriedade. Em alguns JavaBeans (tais como os componentes Swing) o método de dois argumentos addPropertyChange(String propertyName, PropertyChangeListener listener) estará disponível e selecionado por padrão para ser utilizado no novo listener.

      diálogo incluir eventos

      Um listener que é incluído utilizando o método de dois argumentos é específico de uma determinada propriedade, então, ele não pode ser reutilizado em outra propriedade. Um listener incluído com um método de único argumento tem uma instrução if que verifica o nome da propriedade antes do processamento da lógica para cada retorno de chamada de propriedade, conforme mostrado no seguinte código:

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

      Isso permite que um PropertyChangeListener incluído com um método de único argumento seja utilizado por mais de uma propriedade (tendo vários blocos if{} utilizados). 

Ao incluir um evento, se houver um listener existente que possa ser utilizado, o método de retorno de chamada será incluído nele. Caso contrário, um novo listener é criado. Para que um listener existente seja utilizado, ele deve ser uma classe interna anônima no JavaBean que implemente a interface do listener. Ela deve ter um corpo de método vazio para o método de retorno de chamada ou estender a classe do adaptador. E também não deve ter nenhum método existente para o retorno de chamada de evento sendo incluído. Para uma propriedade, um PropertyChangeListener existente será reutilizado se ele for incluído no JavaBean com o método de único argumento addPropertyChange(PropertyChangeListener listener). Se ele ainda não tiver um código, o processamento da propriedade será incluído.

Se não houver nenhum listener candidato existente no qual o método de retorno de chamada possa ser incluído, um novo listener será criado. Ele será uma classe interna anônima e, se uma classe de adaptador tiver sido definida para o evento, o listener estenderá isso. Caso contrário, ele implementará a interface do listener. Depois que o evento for incluído, um método stub será criado com um comentário //TODO. O método stub é um indicador do código fonte que será executado quando o evento ocorrer e isso deverá ser alterado para que você possa executar o comportamento desejado. O comentário //TODO é exibido na janela Tarefas, sinalizando os métodos incompletos. Sendo assim, você pode localizá-los posteriormente e remover o comentário //TODO após a gravação da lógica de retorno de chamada.

No exemplo anterior, o método windowOpened já existe. Se esse for um listener que estenda o adaptador, o mesmo listener será reutilizado porque ele ainda não tem um método windowClosed. O método windowClosed(WindowEvent e) é incluído e o stub do método e o comentário //TODO são incluídos como mostrado a seguir:

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

No modo de especialista, os eventos ainda podem ser incluídos no JavaBean, conforme mostrado anteriormente, mas eles também podem ser incluídos em um listener na árvore Java Beans. O menu Eventos mostra todos os métodos de retorno de chamada do evento no listener e os já utilizados são desativados.

incluir janela fechada

Para um PropertyChangeListener o menu pop-up mostra todas as propriedades do limite no JavaBean. Se alguma já estiver sendo utilizada por PropertyChangeListener, elas serão desativadas.

listener de alteração de propriedade

Um listener incluído com um método de único argumento tem uma instrução if que verifica o nome da propriedade antes do processamento da lógica para cada retorno de chamada de propriedade, conforme mostrado no seguinte código:

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

Isso permite que um PropertyChangeListener incluído com um método de único argumento seja utilizado por mais de uma propriedade (tendo vários blocos if{} utilizados). E quando o segundo ou o subseqüente retorno de chamada de propriedade é incluído, um novo bloco if{} também é incluído.

Se o propertyChangeListener for incluído no JavaBean utilizando o método de dois argumentos addPropertyChangeListener(String propertyName, PropertyChangeListener listener), ele será específico para uma determinada propriedade e, portanto, poderá ser reutilizado por outra propriedade. Nesse caso, todos os menus filhos Eventos em cascata são desativados.

Tópico Principal: Manipulando eventos com o editor visual

Conceitos Relacionados
A Visualização Java Beans

Tarefas Relacionadas
Excluindo eventos de um componente
Visualizando eventos para um componente
Visualizando a origem para um evento

(C) Copyright IBM Corporation 1999, 2004. Todos os Direitos Reservados.