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