Pode adicionar um evento a um componente na vista Concepção ou vista Java Beans do editor visual para Java.
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.
Para um PropertyChangeListener, o menu emergente mostra todas as propriedades associadas ao JavaBean. Se já estiverem utilizadas pelo PropertyChangeListener, estarão desactivadas.
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.