Adicionar eventos a um componente

Pode adicionar um evento a um componente na vista Concepção ou vista Java Beans do editor visual para Java.

Para adicionar eventos a um componente:
  1. Clique com o botão direito do rato na vista Java Beans ou Concepção.
  2. No menu emergente, clique em Eventos. O menu emergente mostra os eventos preferenciais para o componente. Siga um destes passos:
    • Clique num dos eventos preferenciais para o componente. O evento é adicionado ao componente. Por exemplo, no caso de uma JFrame, os eventos preferenciais são windowClosed e windowOpened.
    • Clique em Adicionar Eventos para abrir a janela Adicionar Eventos.
  3. Se tiver aberto a janela Adicionar Eventos, ser-lhe-á apresentada uma lista de eventos categorizados de onde escolher. Seleccione o evento que pretende adicionar e faça clique emTerminar.
    • O diálogo Adicionar Evento mostra todos os eventos disponíveis para o componente numa árvore. A árvore mostra os ouvintes de eventos como primeiro nível de entradas, e abaixo de cada entrada de ouvinte estão as possíveis chamadas de retorno que o evento poderá provocar.
      diálogo adicionar evento
    • Poderá utilizar o diálogo para especificar se pretende criar novo ouvinte ou utilizar um existente. Quando o diálogo se abrir, analisará os ouvintes existentes, e se detectar um que lhe pareça poder ser reutilizado, assinala-o com um ícone diferente. No caso de ouvintes existentes que expandam uma classe de adaptador, será usado o ícone classe de evento presente, caso contrário, será usado o ícone evento presente. Dentro do ouvinte propriamente dito, os eventos existentes são mostrados com uma seta verde seta verde, e os eventos disponíveis mostrados com uma seta incompleta não evento
    • Poderá especificar se pretende ou não utilizar o ouvinte existente ou criar um novo. Quando se cria um novo, poderá escolher entre expandir a classe do adaptador ou somente implementar a interface do ouvinte. Se uma opção não for aplicável, os botões de acção estarão desactivados. Por exemplo, se não houver ouvinte existente, ou estiver seleccionado um mas o evento seleccionado já tiver sido utilizado, a acção Utilizar Ouvinte Existente estará desactivada. Se não houver nenhuma classe de adaptador disponível para novo ouvinte, o botão de acção expande: NOME_CLASSE_ADAPTADOR estará desactivado.
    • Se seleccionar propertyChange no diálogo AdicionarEvento, terá mais opções para adicionar a chamada de retorno. Pode ser criado novo ouvinte que seja adicionado ao JavaBean com o método addPropertyChange(PropertyChangeListener listener). Se tal ocorrer, o método de chamada de retorno genérico do ouvinte, propertyChange(PropertyChangeEvent event), será utilizado para todos os eventos de propriedade. Em alguns JavaBeans (como por exemplo componentes de Swing) o método de dois argumentos denominado addPropertyChange(String propertyName, PropertyChangeListener listener) está disponível e seleccionado por predefinição a fim de ser utilizado para o novo ouvinte.

      diálogo adicionar evento

      Um ouvinte que seja adicionado com o método de dois argumentos será específico de determinada propriedade, de modo que não pode ser reutilizado para outra. Um ouvinte adicionado com um método de argumento único tem uma instrução if que verifica o nome da propriedade antes de processar a lógica para cada chamada de retorno de propriedade, tal como se mostra 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)");         
                   }     
                }  
          });

      Isto permite que um PropertyChangeListener adicionado com um método de argumento único seja utilizado para mais do que uma propriedade (ao ter vários blocos if{} utilizados).

Ao adicionar um evento, se houver um ouvinte existente que possa ser usado, o método de chamada de retorno ser-lhe-á adicionado. Caso contrário, será criado novo ouvinte. Para que um ouvinte existente seja utilizado, deve ser uma classe interna anónima no JavaBean que implemente a interface do ouvinte. É necessário ter um corpo de métodos vazio para o método de chamada de retorno, ou expandir a classe do adaptador, e não ter nenhum método existente para a chamada de retorno do evento a ser adicionado. No caso de uma propriedade, será reutilizado um PropertyChangeListener existente se for adicionado ao JavaBean com o método de argumento único addPropertyChange(PropertyChangeListener listener). Se ainda não tiver código, será adicionado o processamento da propriedade.

Se não houver ouvinte existente candidato ao qual possa ser adicionado o método de chamada de retorno, será criado novo ouvinte. Será uma classe interna anónima, e se tiver sido definida uma classe de adaptador para o evento, o ouvinte irá expandi-la. Caso contrário, irá implementar a interface de ouvinte. Após a adição do evento é criado um método de rotina fictícia com um comentário //TODO (tarefa a realizar). O método de rotina fictícia é um indicador do código fonte que será executado quando ocorrer o evento, e deverá alterá-lo para realizar o comportamento pretendido. O comentário //TODO (tarefa a realizar) é apresentado na janela Tarefas, a sinalizar métodos incompletos. Tal ocorre para que se saiba localizá-los mais tarde e remover o comentário //TODO (tarefa a realizar), uma vez escrita a lógica da chamada de retorno.

No exemplo anterior, o método windowOpened já existe. Se for um ouvinte que expande o adaptador, será reutilizado o mesmo ouvinte porque ainda não tem um método windowClosed. É adicionado o método windowClosed(WindowEvent e), e a rotina fictícia do método e o comentário //TODO (tarefa a realizar) adicionados como se mostra 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();      
            }  
});

Em modo especializado, os eventos ainda podem ser adicionados ao JavaBean como se mostrou antes, mas também podem ser adicionados a um ouvinte na árvore Java Beans. O menu Eventos mostra todos os métodos de chamada de retorno de eventos no ouvinte, e os que já estiverem utilizados estão desactivados.

adicionar janela fechada

Para um PropertyChangeListener, o menu emergente mostra todas as propriedades associadas ao JavaBean. Se já estiverem utilizadas pelo PropertyChangeListener, estarão desactivadas.

ouvinte de alteração de propriedade

Um ouvinte adicionado com um método de argumento único tem uma instrução if que verifica o nome da propriedade antes de processar a lógica para cada chamada de retorno de propriedade, tal como se mostra 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)");         
             }     
          }  
    });

Isto permite que um PropertyChangeListener adicionado com um método de argumento único seja utilizado para mais do que uma propriedade (ao ter vários blocos if{} utilizados), e quando for adicionada a segunda chamada de retorno de propriedade e seguintes, é adicionado novo bloco if{}.

Se o propertyChangeListener for adicionado ao JavaBean com o método de dois argumentos addPropertyChangeListener(String propertyName, PropertyChangeListener listener) será específico de determinada propriedade e não poderá ser reutilizado para outra. Neste caso, todos os descendentes do menu em cascata de Eventos estarão desactivados.

Conceitos relacionados
Classes de eventos, ouvintes e adaptadores.
A vista Java Beans
Tarefas relacionadas
Ver eventos para um componente
Eliminar eventos de um componente
Ver o código fonte de um evento

(C) Copyright IBM Corporation 1999, 2004. Todos os direitos reservados.