Descrição
O objetivo dessa
atividade é desenvolver um componente JavaBean gráfico, baseado na tecnologia
Java SE. Esse componente exibirá fotos contidas em uma pasta, alternando
entre fotos automaticamente a cada intervalo de tempo.

O componente que
será desenvolvido pode ser utilizado em diversos aplicativos, como por
exemplo:
· em um aplicativo
para acesso a uma loja virtual, no qual o cliente poderá visualizar várias
fotos de um produto à venda;
· em um sistema de
monitoramento, com o qual o usuário poderá ver imagens de diferentes câmeras
de segurança alternando-se na tela;
· em um programa de
proteção de tela;
· etc.
JavaBeans
O
termo JavaBeans se refere ao modelo de componentes da linguagem Java, no
qual os componentes apresentam como suas principais características a
reusabilidade de software e a possibilidade de serem manipulados por
ferramentas de edição visual (Englander R., 2001). Os
componentes JavaBeans são classes Java que seguem uma convenção de nomeação
de atributos e métodos, que permite definir propriedades e eventos.
Alguns
exemplos de JavaBeans que foram utilizados na atividade 1 são: botões,
campos de texto, caixas de seleção, entre outros. A especificação do modelo
de componentes JavaBeans pode ser consultada aqui.
Implementação
do Componente Gráfico
Para
iniciar a construção do componente, primeiro crie um novo projeto no NetBeans
do tipo ‘Aplicativo Java’. Em seguida, clique no menu ‘Arquivo à Novo Arquivo’ e
crie um 'Objeto JavaBean' do tipo ‘Personalizador’. Clique em ‘Próximo’,
especifique o nome de um pacote no qual será criado o componente e clique em
‘Finalizar’.

Adicione
os componentes que desejar no seu componente, utilizando os componentes
disponíveis na paleta do NetBeans. Coloque na parte central do painel um
JLabel com a imagem a ser carregada. Para redimensionar a imagem de modo que
esta ocupe toda a área disponível, modifique o código de instanciação do
JLabel. Isso pode ser feito selecionando o JLabel no editor de Projeto (modo
de edição gráfica da aplicação) e, na janela Propriedades, clicando em ‘Criação
de código personalizado’ e adicionando o código abaixo:
new
javax.swing.JLabel() {
@Override
public void paint(Graphics g) {
try {
BufferedImage img = ImageIO.read(currentFile);
g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), null);
} catch (IOException ioe) { ioe.printStackTrace(); }
}
};
Note
que o atributo currentFile é do tipo java.io.File e indica o arquivo de
imagem a ser exibido.
Definição de Propriedades e Métodos do Componente
Você
deve definir as propriedades e os métodos do componente que serão necessárias
para implementar a funcionalidade de visualização de fotos.
O
componente deve possuir as seguintes propriedades:
·
imageFolder:
string contendo o nome da pasta que contém as fotos que serão exibidas.
·
interval:
inteiro que define o tempo que uma imagem permanece na tela até ser trocada
por outra;
·
controlVisible:
booleano que indica se os controles para voltar, avançar e pausar imagens
serão exibidos na tela.
Propriedades
podem ser geradas clicando com o botão da direita do mouse em qualquer ponto
do código-fonte da classe do componente, selecionando ‘Inserir Código’ e em
seguida clicando em ‘Adicionar propriedade’:

Na
janela ‘Adicionar propriedade’, especifique o nome, valor inicial e o tipo da
propriedade, e os métodos de acesso que devem ser gerados.

Em
alguns casos pode ser necessário adicionar código aos métodos de acesso
gerados automaticamente, para que seja executado o comportamento adequado. Se
preferir, você pode criar a propriedade manualmente, adicionando ao
código-fonte a declaração do atributo e os métodos de acesso, respeitando as
convenções de nomeação.
A
funcionalidade de troca automática da foto exibida pelo componente deve ser
executada programando um temporizador (classe java.util.Timer) e definindo o
código que será executado em cada intervalo de tempo (método run() da classe
java.util.TimerTask).
java.util.Timer
timer = new java.util.Timer();
timer.schedule(new
java.util.TimerTask() {
public
void run() {
//
Trocar a foto
// Chamar o
método repaint() do JLabel que contém a imagem
}
},
interval*1000 /*
tempo para 1a execução */,
interval*1000 /*
intervalo de repetição */
);
Caso
julgue adequado, implemente outros métodos que possam ser necessários para
interação com o componente.
Tratamento de Eventos
Efetue
o tratamento dos eventos gerados pela interação do usuário com os controles do
bean para avançar, voltar ou pausar a exibição de fotos. Isso deve ser
feito alterando propriedades e/ou efetuando chamadas a métodos que ativem o
respectivo comportamento.
Trate
também os cliques na foto (evento MouseEvent, tratado por um MouseListener), fazendo
com que a imagem seja aberta em uma janela maximizada sempre que ocorrer um
duplo-clique na foto. O número de cliques é indicado pelo método
getClickCount() do evento MouseEvent.
Descritor do Componente
Depois de criado
o componente, crie também uma classe do tipo BeanInfo, que fornecerá
informações sobre o componente. A classe BeanInfo pode ser criada através do
menu ‘Arquivo à Novo Arquivo’, na
categoria ‘Objetos JavaBeans’, e deve ser dado a ela um nome igual ao nome do
componente, acrescido de ‘BeanInfo’. Crie um construtor para o BeanInfo e
defina os valores dos seguintes atributos, que serão úteis para que o
componente seja exibido adequadamente no NetBeans:
·
iconNameC16:
arquivo com um ícone de 16x16 pixels colorido que represente o
componente;
·
iconNameC32:
arquivo com um ícone de 32x32 pixels colorido que represente o
componente;
·
iconNameM16:
arquivo com um ícone de 16x16 pixels monocromático que represente o
componente;
·
iconNameM32:
arquivo com um ícone de 32x32 pixels monocromático que represente o
componente;
·
beanDescriptor:
objeto da classe BeanDescriptor que contém o nome e uma descrição do
componente.
Edite também o arquivo ‘manifest.mf’,
localizado na pasta raiz do projeto, que pode ser acessado na janela
‘Arquivos’.

Especifique
o nome completo da classe e indique que se trata de um JavaBean.
Manifest-Version:
1.0
Name: /pacote/NomeDaClasse.class
Java-Bean: True
Por
fim, compile o projeto para que seja criado o arquivo de distribuição (JAR)
do componente.
Testando o Componente
Durante
seu desenvolvimento, o componente pode ser testado criando uma aplicação com
um método main() para teste.
public static
void main(String[] args) {
javax.swing.JFrame frame = new javax.swing.JFrame(); //
Cria frame
xxxxxxxxBean bean = new xxxxxxxxBean (); // Instancia o bean
// Alterar as propriedades que julgar necessárias aqui!
frame.add(bean); // Adiciona bean ao frame
frame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
frame.setVisible(true); // Exibe o frame
}
Após
concluídos os testes, adicione o bean na paleta de componentes do NetBeans,
abrindo o ‘Gerenciador de Paleta’ - clique na paleta com o botão da direita
do mouse e escolha a opção ‘Gerenciador de Paleta’. Em seguida, clique no
botão ‘Adicionar JAR’, selecione o arquivo JAR do bean (contido na pasta
‘dist’ do projeto) e o adicione à categoria ‘Beans’.
Para
finalizar a atividade, crie um novo projeto e insira um Formulario JFrame no
projeto. Edite o JFrame graficamente e insira o componente na aplicação a
partir da paleta do NetBeans. Por fim, configure as propriedades do
componente, execute a aplicação e teste o seu funcionamento.
Avaliação
A atividade pode ser desenvolvida individualmente ou em
dupla. A apresentação deve ser feita até o dia 30/09. Trabalhos entregues com atraso
terão desconto automático de 2 pontos. Após a segunda semana (14 dias após o fim do prazo
original), o trabalho não mais será aceito, ou seja, terá nota zero.
Os dois integrantes do grupo devem estar presentes no momento da apresentação. Será
verificado o funcionamento do programa e em seguida os alunos devem responder
oralmente a questões formuladas pelo professor sobre o código fonte do
programa. Podem ser atribuídas notas diferentes aos integrantes de um grupo,
dependendo das respostas às perguntas sobre o código do programa efetuadas
pelo professor. Caso um dos alunos não esteja presente ou demonstre não
conhecer o código do programa, este ficará com nota zero na atividade. Em
caso de cópia do código de outro grupo, ambos terão nota igual a zero.
Referências
- Englander, R. (2001). Developing JavaBeans.
O’Reilly and Associates, Inc.
- Especificação
do JavaBeans.
Dúvidas
Material
para Consulta
·
Help e
página do NetBeans.
· Documentação da API do Java.
Atendimento
aos Alunos
- Horário: Terças-feiras das 16:20 às
18:00.
- Local: Prédio do INE - Sala 305.
E-Mail
l a u . l u n g @ i n f . u f s
c . b r
Mantida por Lau Cheuk
Lung. Atualizada em 10/09/2013.
|