INE5612
Laboratório 1 - Componentes Gráficos

Prof. Frank Siqueira

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

INE5612 | Descrição | Aplicações Gráficas | Tarefa 1 | Eventos | Tarefa 2 | Avaliação | Dúvidas


Descrição

Nessa tarefa você irá criar uma aplicação gráfica em Java – um programa de controle de vendas para pequenos estabelecimentos comerciais – utilizando componentes de software. O programa será utilizado pelos funcionários do estabelecimento para cadastrar os produtos à venda e para registrar as compras efetuadas pelos clientes.


Aplicações Gráficas

Em seguida será descrito como utilizar o ambiente de desenvolvimento NetBeans para criação de aplicações gráficas. Outros ambientes de desenvolvimento podem ser utilizados, caso seja de sua preferência e desde que eles permitam a criação de aplicações gráficas utilizando componentes.

O NetBeans é um poderoso ambiente para desenvolvimento de aplicativos, com suporte a desenvolvimento de aplicações em várias linguagens e plataformas, incluindo Java em suas três edições: Micro Edition, Standard Edition e Enterprise Edition.

Download do NetBeans: Windows | Linux

Através do NetBeans é possível desenvolver aplicações gráficas em Java utilizando componentes Swing e AWT, assim como aplicações que utilizem outros componentes desenvolvidos por terceiros.

O NetBeans trabalha com o conceito de projetos de software. Um novo projeto é criado no NetBeans através do menu Arquivoà Novo Projeto. No assistente 'Novo Projeto' pode-se selecionar um entre os diversos tipos de projetos disponíveis. Por exemplo, o tipo de projeto 'Aplicativo Java' da Categoria 'Java' corresponde a uma aplicação do Java Standard Edition. Em seguida é possível definir o nome do projeto e o diretório no qual o projeto será criado, além de outras opções.

Descrição: Descrição: C:\Users\Frank\Documents\INE5612\Web\Lab1-Vendas\index_arquivos\image001.jpg

O projeto criado será exibido na janela ‘Projetos’.

Descrição: Descrição: C:\Users\Frank\Documents\INE5612\Web\Lab1-Vendas\index_arquivos\image002.jpg

O projeto criado possui uma classe principal, com o mesmo nome do projeto, a partir da qual outras classes poderão ser instanciadas.

Para criar uma aplicação gráfica, devemos criar um novo arquivo (menu Arquivo à Novo arquivo) do tipo “Formulário JFrame” da categoria “Formulários GUI Swing”.

Descrição: Descrição: C:\Users\Frank\Documents\INE5612\Web\Lab1-Vendas\index_arquivos\image003.jpg

A classe criada representa uma interface gráfica, na qual podem ser adicionados componentes contidos na paleta de componentes do NetBeans, conforme mostra a figura abaixo. Ao editar uma interface gráfica, será exibida a tela de edição ‘Projeto’ - o retângulo cinza à esquerda na figura abaixo, que representa a área de trabalho da janela que está sendo editada - na qual é possível inserir os componentes disponíveis na janela 'Paleta'. Para isso basta selecionar o componente a ser inserido e depois clicar no local onde se deseja inseri-lo.

Descrição: Descrição: C:\Users\Frank\Documents\INE5612\Web\Lab1-Vendas\index_arquivos\image004.jpg

Para visualizar a interface gráfica na forma como esta será exibida na tela, basta pressionar o botão Descrição: Descrição: Descrição: Descrição: Descrição: C:\Users\Frank\Documents\INE5612\Web\Lab1-Biblioteca\index_arquivos\image011.jpg.

A forma como o componente se ajusta à tela depende do layout utilizado. O layout default usado pelo NetBeans é o ‘Desenho Livre’, que mantém a posição original na qual o componente foi inserido. O layout utilizado pode ser alterado clicando o com o botão da direita do mouse sobre o contêiner na janela 'Navegador'.

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

Na janela 'Propriedades' é possível definir as propriedades dos componentes. Por exemplo, após adicionar um botão (JButton) à janela, ao selecioná-lo, é possível editar o texto mostrado no botão alterando o valor da propriedade 'text' na janela de propriedades do NetBeans.

Descrição: Descrição: C:\Users\Frank\Documents\INE5612\Web\Lab1-Vendas\index_arquivos\image006.jpg

Cada componente possui um conjunto diferente de propriedades. As propriedades podem ser acessadas também no código da aplicação, através dos métodos setPropriedade e getPropriedade (por exemplo, setText(String s) e getText() para a propriedade text do botão).

Note que, à medida que você for editando a interface gráfica, o código correspondente a essas alterações será gerado no arquivo Java. Clique no botão 'Código-fonte' na tela de edição pra visualizar o código da classe, e em seguida expanda (clicando no sinal '+') a linha marcada como 'Generated Code' para exibir o código gerado pelo NetBeans. O NetBeans protege este código, marcado em azul, impedindo sua edição. Note que os componentes adicionados à interface gráfica são criados automaticamente como atributos da classe que representa a interface gráfica da aplicação.

Descrição: Descrição: Descrição: C:\Users\Frank\Documents\INE5612\Web\Lab1-SAC\index_arquivos\image007.jpg

Novos componentes gráficos podem ser inseridos na Paleta do NetBeans através do menu Ferramentas à Paleta à Componentes Swing/AWT. Na janela abaixo, clique o botão 'Adicionar do JAR' e selecione o arquivo JAR com o componente. Em seguida, escolha o componente a instalar e a categoria da Paleta na qual ele será exibido. Componentes também podem ser inseridos a partir de bibliotecas e projetos.

Descrição: Descrição: Descrição: C:\Users\Frank\Documents\INE5612\Web\Lab1-SAC\index_arquivos\image008.jpg

Para testar esta funcionalidade, instale os componentes CalendarPane (abaixo, à esquerda) e DatePicker (à dir.) contidos neste arquivo JAR. Coloque os componentes na categoria Beans da Paleta. Após serem inseridos na paleta, esses componentes podem ser utilizados em uma aplicação gráfica, da mesma forma que os componentes padrão do Swing.

Descrição: Descrição: Descrição: C:\Users\Frank\Documents\INE5612\Web\Lab1-SAC\index_arquivos\image009.jpg

Também é possível inserir no projeto outros tipos de contêineres, através do menu Arquivo à Novo arquivo, incluindo contêineres como painéis (Formulário JPanel) e janelas de diálogo (Formulário JDialog), por exemplo. Cada um desses elementos corresponderá a uma nova classe Java da aplicação, que servirá como contêiner para outros componentes gráficos.


Tarefa 1: A Interface Gráfica da Aplicação

O trabalho consiste em desenvolver um sistema para registro de produtos e de vendas efetuadas em um pequeno estabelecimento comercial – por exemplo, uma loja de informática, uma loja de autopeças, um quiosque de um shopping, etc.

O sistema deve permitir a execução das seguintes funcionalidades:

·      Registro de produtos à venda: cadastramento dos dados do produto, para o caso de este ainda não estar cadastrado no sistema.

·      Controle de estoque: permite alterar a quantidade em estoque de um produto cadastrado no sistema.

·      Registro de venda de produtos: permite que um ou mais produtos em estoque sejam vendidos para um cliente.

Comece a desenvolver a interface gráfica do sistema de controle de vendas usando o NetBeans. Não se preocupe por enquanto em implementar a funcionalidade da aplicação.

Crie um projeto do tipo ‘Aplicativo Java’ e adicione um ‘Formulário JFrame’ ao projeto, que será a janela principal da aplicação. Na seqüência, adicione componentes ao JFrame que permitam a execução das funcionalidades descritas acima. Use a janela de propriedades dos componentes para modificar as propriedades que julgar necessárias, como por exemplo o texto, o tipo de fonte, a cor ou ícone dos botões.

Caso necessário, adicione novos frames e janelas de diálogo ao projeto. Teste a disposição dos componentes dentro da janela, para que seu aplicativo se comporte de maneira adequada quando for redimensionado ou maximizado. Durante este processo, pode ser necessário modificar os layouts e a disposição dos componentes até atingir um resultado satisfatório.

Tente compilar e rodar a interface gráfica da aplicação (Shift+F6). A lógica de funcionamento será implementada em um segundo momento.


Eventos

O Java permite que eventos gerados pelo usuário sejam tratados pelos programas utilizando tratadores de eventos. Eventos produzidos pelo mouse e pelo teclado - das classes MouseEvent e KeyEvent respectivamente - podem ser tratados criando objetos que implementem as interfaces MouseListener e KeyListener. A API do Java define classes auxiliares para implementação dos tratadores de eventos, chamadas MouseAdapter e KeyAdapter, que são classes abstratas (com implementações vazias para os métodos da interface correspondente) usadas como superclasses para tratadores de eventos do mouse e do teclado respectivamente.

Suponha que queremos tratar os eventos gerados pelo mouse. Um consumidor do evento MouseEvent gerado pelo componente meuComponente (um botão, por exemplo) deve se registrar para receber os eventos com o método addMouseListener, e criar um objeto do tipo MouseAdapter. Isso pode ser feito criando uma classe anônima, na qual deve ser definido o código para tratar o evento correspondente. No exemplo abaixo foi definido o código do método mouseClicked, que é chamado toda vez que o componente é clicado com o mouse:

meuComponente.addMouseListener(new java.awt.event.MouseAdapter() {
   public void mouseClicked(java.awt.event.MouseEvent evt) {
      // trata o evento de click do mouse
   } 
} );

Outra forma de fazê-lo seria criar uma classe que implemente a interface MouseListener, definir seus métodos e chamar addMouseListener passando um objeto desta classe como parâmetro.

Outros tipos de eventos também possuem suas classes Listener, Adapter e Event, que são utilizadas de maneira semelhante.

Tratamento de Eventos no NetBeans

A partir da janela de edição do NetBeans é possível criar tratadores de eventos gerados por componentes. Isso pode ser feito de duas formas: usando o modo de conexão ou definindo os tratadores de eventos.

Para ativar o ‘Modo de conexão’, clique o botão Descrição: Descrição: Descrição: Descrição: Descrição: C:\Users\Frank\Documents\INE5612\Web\Lab1-Biblioteca\index_arquivos\image019.jpg na janela de edição da interface gráfica. Em seguida, você deve selecionar o componente de origem e o componente de destino da ação. No exemplo abaixo, selecionamos na janela de projeto da interface gráfica um botão, e como componente de destino uma área de texto.

No ‘Assistente de conexão’, que será aberto automaticamente, selecione o evento de origem – no caso, o evento ‘actionPerformed’, que é enviado quando o botão é pressionado utilizando o mouse ou o teclado.

Descrição: Descrição: Descrição: Descrição: C:\Users\Frank\Documents\INE5612\Web\Lab1-SAC\index_arquivos\image010.jpg

Logo depois, selecione a operação a ser executada quando o evento ocorrer – nesse caso, limpar a área de texto, selecionando a propriedade ‘text’ e alterando seu valor para um texto vazio.

Descrição: Descrição: Descrição: Descrição: C:\Users\Frank\Documents\INE5612\Web\Lab1-SAC\index_arquivos\image011.jpg

Descrição: Descrição: Descrição: Descrição: C:\Users\Frank\Documents\INE5612\Web\Lab1-SAC\index_arquivos\image012.jpg

Ao finalizar o assistente, o seguinte método tratador de eventos será gerado:

Descrição: Descrição: Descrição: Descrição: C:\Users\Frank\Documents\INE5612\Web\Lab1-SAC\index_arquivos\image013.jpg

Outra forma possível de tratar eventos é associar um tratador de evento a um componente. Ao clicarmos um componente o botão da direita do mouse, é possível criar um tratador para um evento gerado pelo componente. 

Descrição: Descrição: Descrição: Descrição: C:\Users\Frank\Documents\INE5612\Web\Lab1-SAC\index_arquivos\image014.jpg

Feito isso, pode-se editar o código que será executado quando o evento selecionado ocorrer. A edição de código é facilitada pelo recurso auto-completar do NetBeans, ativado teclando Ctrl+Espaço. Assim é possível ter acesso a qualquer atributo ou método da classe que está sendo editada. Note que os componentes adicionados à interface gráfica são atributos da classe, e seus métodos e atributos também podem ser visualizados utilizando o recurso auto-completar.

Descrição: Descrição: Descrição: Descrição: C:\Users\Frank\Documents\INE5612\Web\Lab1-SAC\index_arquivos\image015.jpg

 


Tarefa 2: A Lógica de Funcionamento na Aplicação

Você deve criar tratadores para os eventos da interface gráfica do sistema de controle de vendas. Estes tratadores de eventos devem chamar os métodos de classes de controle (gerenciadores), que implementarão a lógica de funcionamento da aplicação. As classes de controle devem interagir com as entidades gerenciadas por elas – produto, venda, etc. As classes de entidade serão também JavaBeans, com propriedades acessadas através de métodos de acesso.

Com isso, será possível separar o código da aplicação segundo o padrão de projeto MVC, ou seja:

·         classes para interfaceamento gráfico - a visão (desenvolvidas na Tarefa 1);

·         classes para representar o modelo, com os dados internos da aplicação e os métodos para manipulá-los;

·         uma classe controladora, responsável pelo fluxo de execução da aplicação.

O uso do padrão MVC torna mais fácil a manutenção do código e a sua reutilização.

Os dados manipulados pelo sistema devem ser serializados, de modo a permitir a sua recuperação em futuras execuções da aplicação.


Avaliação

A atividade deve ser desenvolvida em duplas. A apresentação deve ser feita até o dia 22/04. 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 alunos 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.

 


 

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

f r a n k @ i n f . u f s c . b r

l a u . l u n g @ i n f . u f s c . b r


Mantida por Frank Siqueira. Atualizada em 23/09/2012.