INE5612
Laboratório 2 - JavaBeans

Prof. Frank Siqueira - Turma A
Prof. Lau Cheuk Lung - Turma B


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 JavaBean, ou seja, um componente baseado na tecnologia Java SE. O componente a ser desenvolvido é um tabuleiro de peças, que poderá ser reutilizado em diferentes jogos para computador, como por exemplo jogo de damas, xadrez, batalha naval, campo minado, etc.


Criando JavaBeans no NetBeans

O NetBeans permite a criação e edição de JavaBeans, que podem ser facilmente reutilizados em outras aplicações. Através do menu ‘Arquivo à Novo Arquivo’ pode-se visualizar no assistente a opção denominada 'Formulários GUI Swing' onde é possível selecionar o tipo de arquivo denominado 'Formulário Bean', e em seguida definir javax.swing.JPanel como superclasse. A classe criada permite a edição visual de um JavaBean, fornecendo um painel onde podem ser inseridos os diversos componentes que farão parte da sua interface gráfica.

Depois de criado o painel para construção do JavaBean, é possível inserir os componentes que irão compor a sua interface. Nessa composição podem ser utilizados outros componentes fornecidos pelo Java, como por exemplo JTextField, JPanel e JButton.


Implementação do Componente Gráfico

Para iniciar a construção do tabuleiro de jogo, primeiro crie um novo projeto no NetBeans. Em seguida, crie um 'Formulário Bean' para construção da interface gráfica do componente. Defina um layout apropriado para o componente e insira na janela de edição os componentes Swing que julgar necessários para funcionamento do componente.

O tabuleiro deve implementar a seguinte interface:

package board;
import javax.swing.Icon;
public interface Board {
	public abstract void setRows(int rows);
	public abstract int getRows();
	public abstract void setColumns(int columns);
	public abstract int getColumns();
	public abstract void addBoardListener(BoardListener listener);
	public abstract void removeBoardListener(BoardListener listener);
	public abstract void setCellImage(int row, int column, Icon img);
}

Note que o componente deve possuir duas propriedades - rows e columns - que definem a quantidade de linhas e colunas do tabuleiro, respectivamente, e cujos métodos de acesso fazem parte da interface. As propriedades são o mecanismo que um programador da aplicação que utilizará o componente dispõe para customizar o componente, para que o mesmo possa ser usado em diversos jogos.

Note também que a interface define métodos para adicionar e remover listeners de eventos gerados pelo tabuleiro. Os cliques no componente devem ser indicados à aplicação que o utiliza enviando-lhe eventos, para que esta efetue o tratamento adequado. Para que isso seja possível, a aplicação deve implementar a interface BoardListener, descrita a seguir:

package board;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
public interface BoardListener {
	void actionPerformed(ActionEvent e, int row, int column);
	void mouseClicked(MouseEvent e, int row, int column);
	void mousePressed(MouseEvent e, int row, int column);
	void mouseReleased(MouseEvent e, int row, int column);
	void mouseEntered(MouseEvent e, int row, int column);
	void mouseExited(MouseEvent e, int row, int column);
}

Os eventos gerados pelos componentes do tabuleiro devem ser capturados e remetidos à aplicação, que efeturá o tratamento adequado para o evento de acordo com a lógica do jogo. Para isso basta manter a referência do objeto listener registrado pela aplicação e, toda vez que um evento ocorrer no tabuleiro, chamar o método correspondente do listener, indicando a posição do  tabuleiro na qual ocorreu o evento.

BoardListener listener = null;
public void addBoardListener(BoardListener listener) {
       this.listener = listener;
}
private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {
      if (listener != null)
         this.listener.mouseClicked(evt,1,1);
}
...

Por fim, o método setCellImage() da interface do tabuleiro deve ser implementado. Esse método deve colocar o ícone passado como parâmetro na posição indicada do tabuleiro.

Para que o componente seja reconhecido corretamente como um JavaBean, edite 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

Ao compilar a aplicação, o NetBeans irá criar um arquivo JAR, localizado na pasta 'dist' do projeto. Esse arquivo pode ser inserido na paleta do NetBeans e usado em outras aplicações.

Para testar o seu componente, você deve utilizá-lo em um jogo de tabuleiro da sua preferência. Crie um novo projeto para o jogo, crie um frame e insira nele o componente. Em seguida, configure as propriedades do componente que julgar necessárias. Por fim, implemente a funcionalidade do jogo, tratando os eventos gerados pelo componente ao interagir com o jogador.


Avaliação

A atividade deve ser desenvolvida em duplas. O componente e o jogo no qual ele é utilizado devem ser apresentados ao professor no laboratório até o dia 09/04. Os dois alunos do grupo devem estar presentes. Será verificado o funcionamento da aplicação e em seguida os alunos devem responder oralmente a questões formuladas pelo professor sobre o código fonte do componente e sobre sua utilização na aplicação. Podem ser atribuídas notas diferentes aos alunos de um mesmo 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, será atribuída nota zero à 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.
  • Capítulo sobre JavaBeans do CD que acompanha o livro "Java: Como Programar", 4a edição.
  • JavaBeans – Página Oficial. http://java.sun.com/products/javabeans.

Dúvidas

Material para Consulta

Atendimento aos Alunos

  • Horário: Terças-feiras das 16:20 às 18:00.
  • Local: Prédio do INE - Sala 407.

Contato

  • Turma A:      f r a n k @ i n f . u f s c . b r
  • Turma B:      l a u . l u n g @ i n f . u f s c . b r

Mantida por Frank Siqueira. Atualizada em 30/03/2008.