INE5612
Laboratório 2 - JavaBeans

Prof. Lau Cheuk Lung

Departamento de Informática e Estatística
Universidade Federal de Santa Catarina
 

INE5612 | Descrição | JavaBeans | Implementação | AvaliaçãoReferências | Dúvidas


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’:

Descrição: C:\Users\frank\Documents\INE5612\Web\Lab2-PhotoViewer\index_arquivos\image003.jpg   Descrição: C:\Users\Frank\Documents\INE5612\Web\Lab2-PhotoViewer\index_arquivos\image004.jpg

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

Descrição: C:\Users\Frank\Documents\INE5612\Web\Lab2-PhotoViewer\index_arquivos\image005.jpg

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’.

Descrição: image004.gif

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.