- Crie um projeto no JBuilder.
- Adicione esse arquivo html no projeto para facilitar sua visualização.
- Altere nas propriedades do projeto (na pasta Code
Style) a opção de Event
Handling para Standard
Adapter.
- esta opção faz com que seja gerada uma classe adaptador ao invés de
criar uma classe anônima
- Criar uma classe (PainelControle) a qual herda de
java.awt.Panel (escolhendo-a como a classe base no wizard da criação da classe)
- Selecione a pasta Design para editar sua classe
- adicione os componentes desejados (três botões e um rótulo/label)
do bean e coloque o nome dos mesmos
- implemente os eventos que os componentes adicionados devem gerar (actionPerformed
dos botões)
- compile o projeto
PROPRIEDADES
- Agora retorne para a pasta Source e implemente os métodos
(get/is e set) para as propriedades desejadas (os métodos devem ser públicos).
- botaoInserirHabilitado (isBotaoInserirHabilitado
e setBotaoInserirHabilitado)
- botaoConsultarHabilitado
- botaoLimparHabilitado
- mensagem (getMensagem
e setMensagem)
COMUNICAÇÃO POR EVENTOS
- Agora vamos criar a estrutura para que objetos possam "assinar" eventos do nosso bean
- Crie uma classe para representar o evento. Esta classe deve herdar de java.util.EventObject (escolhendo-a como a classe base no wizard da criação da classe)
e ter o mesmo nome do bean seguido de Event (PainelControleEvent).
- Defina ainda um construtor que recebe um Object com parâmetro
(chame-o de source). O construtor deve chamar o construtor da superclasse
passando o objeto recebido. Esse objeto é a fonte do evento, o objeto
que criou e irá notificar o evento, permitindo que quem seja notificado
tenha acesso a fonte do evento
- Crie uma interface listener
para o evento a ser notificado pelo bean. A interface deve herdar de java.util.EventListener
e seu nome deve ser o mesmo do bean seguido de Listener (PainelControleListener).
Esta interface deve ter as assinaturas dos métodos que irão notificar
cada um dos eventos deste bean.
-
public void botaoInserirPressionado(PainelControleEvent e);
-
public void botaoConsultarPressionado(PainelControleEvent e);
-
public void botaoLimparPressionado(PainelControleEvent e);
-
Em seguida temos de criar métodos na classe do bean (PainelControle)
para adicionar e remover listeners, permitindo assim que objetos
"assinem" e cancelem "assinaturas" para escutar
eventos. Defina um atributo java.uitl.Vector chamado listenersVector.
Em seguida use os templates abaixo para definir os métodos para
adicionar (addPainelControleListener)
e remover (removePainelControleListener)
listeners do vetor de listeners.
public synchronized void add<NOME_DO_BEAN>Listener(<NOME_DO_BEAN>Listener listener) {
Vector v;
if (listenersVector == null)
v = new Vector(2);
else
v = (Vector) listenersVector.clone();
if (!v.contains(listener)) {
v.addElement(listener);
listenersVector = v;
}
}
public synchronized void remove<NOME_DO_BEAN>Listener(<NOME_DO_BEAN>Listener listener) {
if (listenersVector != null && listenersVector.contains(listener)) {
Vector v = (Vector) listenersVector.clone();
v.removeElement(listener);
listenersVector = v;
}
}
- Depois de criar a estrutura para assinar os eventos temos de criar a
estrutura para notificá-los. Defina métodos para disparar cada um dos
eventos definidos na assinatura da interface listener (PainelControleListener).
void fire<EVENTO_A_SER_NOTIFICADO_DA_LISTA_DE_MÉTODOS_DA_INTERFACE_LISTENER>(<NOME_DO_BEAN>Event event) {
if (listenersVector != null) {
Vector v = listenersVector;
int count = v.size();
for (int i = 0; i < count; i++)
((<NOME_DO_BEAN>Listener) v.elementAt(i)).<MÉTODO_DO_LISTENER_PARA_ESTE_EVENTO>(event);
}
}
Exemplo
void fireBotaoInserirPressionado(PainelControleEvent event) {
if (listenersVector != null) {
Vector v = listenersVector;
int count = v.size();
for (int i = 0; i < count; i++)
((PainelControleListener) v.elementAt(i)).botaoInserirPressionado(event);
}
}
- Por fim temos de indicar em que situações os eventos devem ser
disparados. No item 4 deste roteiro você implementou os eventos que os componentes
do bean devem gerar (actionPerformed
dos botões). Agora você deve implementar a notificação do
evento através da chamada ao método fire correspondente.
Exemplo
void bt_inserir_actionPerformed(ActionEvent e) {
this.fireBotaoInserirPressionado(new PainelControleEvent(this));
}
PERSISTÊNCIA
- Agora vamos implementar a última característica de um bean,
Persistência. A classe do (PainelControle)
bean deve implementar a interface java.io.Serializable
- Compile o projeto
- Note que não implementamos Introspecção e Customização
específicos para o nosso bean. Dessa forma a IDE automaticamente irá
detectar as propriedades do bean e implementará editores default para as
mesmas.
GERANDO UM ARQUIVO PARA DISTRIBUIÇÃO
- Pronto o seu bean está pronto. Agora temos de gerar um arquivo de
distribuição para permitir instalá-lo em uma IDE e distribuí-lo para
outras pessoas/projetos, permitindo assim seu reuso.
- Crie um arquivo texto chamado manifest.tmp no diretório raiz
dos diretórios com os arquivos .class do projeto
(provavelmente o diretório classes do seu projeto).
Adicione o arquivo no seu projeto do JBuilder.
- Adicione no arquivo as seguintes linhas:
Name: <PACOTE_DO_BEAN>/<NOME_DO_BEAN>.class
Java-Bean: True
- Agora crie um arquivo texto gera.bat no memso diretório do arquivo manifest e adicione-o no seu projeto do
JBuilder. Este arquivo deve ter o seguinte comando:
jar cfm <NOME_DO_BEAN>.jar manifest.tmp *
onde no lugar do símbolo * devem estar listados todos os arquivos .class
que foram gerados pela compilação do projeto.
Por exemplo
jar cfm PainelControle.jar manifest.tmp
javabeans/PainelControle.class javabeans/PainelControleListener.class
javabeans/PainelControleEvent.class javabeans/PainelControle_bt_inserir_actionAdapter.class
javabeans/PainelControle_bt_consultar_actionAdapter.class javabeans/PainelControle_bt_limpar_actionAdapter.class
- Abra um ambiente para executar o JDK (através do Windows, menu Iniciar
-> Programas -> Linguagens -> Java -> jdk 1.3) vá até o diretório do seu
projeto e execute o arquivo de lote (.bat) gerar, que deve gerar o
arquivo .jar para distribuição.
INSTALANDO O BEAN NO JBUILDER
- Feche o projeto com o seu bean.
- Para instalar o bean no JBuilder escolha a opção Configure Palette
no menu Tools. Escolha a pasta Add
components e clique em Select
library. Vamos criar uma biblioteca selecionando User home e clicando em New... e escolhendo um nome
para a mesma. em seguida clique em Add... e selecione o arquivo .jar que foi
gerado. Clique em OK e em seguida em
OK novamente. Agora escolha o local onde
o bean será instalado, recomendamos que seja em Other. Em seguida clique em
Add from Selected Library. Como resultado você deve ter uma tela mostrando
uma mensagem de que o seu bean foi instalado (Added
javabeans.PainelControle).
- Agora você poderá utilizar o componente (na paletta Other) em qualquer
projeto, da mesma forma que se manipula os demais componentes gráficos (button,
label, list,...).
- Crie uma aplicação como exemplo e tente utilizar seu bean na mesma.