segunda-feira, 6 de fevereiro de 2012

Exemplo de Aplicação Java Swing com BD Oracle – 4

Neste artigo vamos desenvolver a camada de apresentação, ou de Interface com o utilizador, para a aplicação que vem sendo desenvolvida há algum tempo.

No artigo Exemplo de Aplicação Java Swing com BD Oracle - 1, o 1º desta série, tratámos da criação da Base de Dados em Oracle. No 2º artigo, foi criada um package para acesso à base de dados, HelperDB. O 3º artigo tratou da criação de uma biblioteca de classes ao nível da lógica de negócio e acesso a dados.

Este artigo vai tratar da criação do projecto de Interface com o utilizador (GUI - Graphical User Interface) usando classes Swing. Para isso, vamos criar um novo projecto no Net Beans, chamado LibrarySystem:


Este projecto deve ser um Java Desktop Application. Este tipo de projecto fornece um template com a infraestrutura básica de uma aplicação desktop, tal como uma janela principal com uma barra de menu e uma barra de estado.

Depois, vamos seleccionar Basic Application (o outro tipo, Database Application, iremos abordar numa outra série de artigos).

Este tipo de projecto cria de antemão 3 classes:
- LibrarySystemApp.java - é a classe principal da aplicação. A main irá lançar a janela principal. A partir daí, toda a aplicação será guiada por eventos.



- LibrarySystemView.java - é a janela principal:

- LibrarySystemAboutBox.java - é uma janela About (Acerca de...).


Na janela com a vista de projectos podemos ver o novo projecto, assim como os que criámos anteriormente. Para mantêr uma lógica nos nomes dos projectos, alterámos o nome deste projecto para  libraryProjectGUI:


1. Construção da interface (GUI)
A partir da Pallete (onde estão os Swing containers, Swing controls, Swing Windows, etc.), arrastamos os objectos de interface que pretendemos ver nas janelas da interface.

Aqui, vamos fazer toda a aplicação na mesma janela.
Vamos começar por acrescentar menus (JMenu) e itens de menu (JMenuItem) na barra de menus que já temos inicialmente.


Criamos um item de menu, Initial Panel, no menu File, que nos permitirá voltar ao ecrã inicial:

E criamos um novo menu, Books, com um item de menu, Manage Books, o qual nos levará à lista e manutenção de livros da biblioteca:


Chegou, então o momento de criar novos painéis (JPanel) que substituirão o painel inicial na janela da aplicação.
Criamos um novo painel para criação e edição de um livro:










E, criamos um painel para listar os livros existentes:




2. Criação de métodos para tratamento de eventos despoletados na GUI

Vamos agora fazer trocar o painel visível, quando é selecionada a opção de menu Manage Books do menu Books.

Quando ocorre um evento "selecionar o item de menu" queremos correr um método para fazer a troca de painéis. Temos duas maneiras de o fazer:

2.1 Com o botão do lado direito sobre o item de menu Manage Books, selecionamos Events --> Action --> actionPerformed:


Isto provoca a geração de código na classe LibrarySystemView.java, associando um novo método ao evento de seleção do item de menu, e criando um template para esse novo método:

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                          
// TODO add your handling code here:
}                    

2.2 Com o botão do lado direito sobre o item de menu Manage Books, selecionamosSet Action. Isto conduz-nos a uma janela para entrada de detalhes sobre o código que irá ser gerado:




Em Action, selecionamos Create New Action, e em Action's Method, escrevemos listBooks. O método listBooks() será criado de novo, e será associado ao evento de seleção do item de menu.

    @Action
    public void listBooks() {
    }



No método listBooks(), ou no jMenuItem1ActionPerformed() se optarmos pelo primeiro método, vamos colocar o código para troca de painéis.



@Action
public void listBooks() {
    ListBooksJPanel listbooksP = new ListBooksJPanel(this, this.dbo);
    this.visiblePanel.setVisible(false);
    this.visiblePanel = listbooksP;
    listbooksP.setVisible(true);
    this.getFrame().setContentPane(listbooksP);
    this.getFrame().repaint();
    //
}

Antes, tivémos que criar as variáveis de instância seguintes na classe LibrarySystemView:

private HelperDB.DBAccessObj dbo;
private JPanel visiblePanel = null;

É também necessário criar código para ler os livros da base de dados e preencher a tabela no painel ListBooksJPanel. Para isso devem ser usadas as classes da biblioteca de classes criada no artigo anterior.
Se tiverem dificuldades com o código ou quiserem as sources do exemplo, coloquem comentários a este post.

Outros artigos relacionados:
     - Exemplo de Aplicação Java Swing com BD Oracle - 1
     - Exemplo de Aplicação Java Swing com BD Oracle - 2
     - Exemplo de Aplicação Java Swing com BD Oracle - 3



2 comentários:

  1. Miguel pode colocar, o zip do codigo fonte? estou com algumas dificuldades

    Abraço

    ResponderEliminar
    Respostas
    1. O zip com as sources do projeto da Interface com o utilizador (GUI), que usa os dois projetos dos artigos anteriores com o mesmo nome (BLL e HelperDB), pode ser downloaded aqui: https://docs.google.com/open?id=0B0zl-Rzbx3qgVHEwM2lWY0FleTQ

      Eliminar