sábado, 3 de março de 2012

Exemplo de Aplicação Java Swing sem JSR - 2

Neste artigo vamos criar um projeto baseado em Java Swing para desenvolver a interface gráfica com o utilizador (GUI), que complemente o que já foi feito anteriormente, que é tratado em:
 - Exemplo de Aplicação Java Swing com BD Oracle - 1  (criação da Base de Dados)
 - Exemplo de Aplicação Java Swing com BD Oracle - 2  (projeto HelperDB para acesso à BD)
 - Exemplo de Aplicação Java Swing com BD Oracle - 3  (projeto librarySystemBLL / classes da BLL)

 - Exemplo de Aplicação Java Swing sem JSR - 1



No NetBeans 7.1, vamos criar um projeto Java Application:




Um projeto Java Application cria automaticamente uma class com o método main().
Na verdade, não precisamos dessa classe, porque vamos criar uma classe JFrame, a qual automaticamente cria um método main() que lança a frame e torna-a visível.

De qualquer forma, e antes de criarmos a JFrame, vamos adicionar as referências necessárias ao nosso projeto. Precisamos de adicionar, nas libraries do projeto, referências para os projetos HelperDB e librarySystemBLL. São também necessárias referências para os JARs "ojdbc" que vêm com o Oracle XE, tal como foi feito anteriormente nos outros dois projetos.


Agora, criamos o JFrame, o qual será a janela principal da aplicação:


- com o cursor do rato sobre o nome do package (librarysystemgui), clicamos no botão do lado direito do rato e selecionamos New --> JFrame Form...


- Damos-lhe um nome (librarySystem):


E o JFrame é criado:


Um JFrame, tal como um JDialog ou um JPanel, é uma classe Swing, sobre a qual o NetBeans permite compor elementos Swing graficamente, gerando ele o código Java correspondente.
Os elementos Swing devem ser arrastados a partir da pallete e largados sobre o JFrame (ou Dialog ou Panel) nos locais onde os queremos.:


Arrastar uma barra de menu (menu bar) a partir da pallete, para o JFrame. Depois, arrastar dois menus (Book and Loans) para a barra de manus.
Depois arrastamos um menuItem para o menu Books, e alteramos-lhe o texto para List Books:


Depois disto, podemos apagar a classe inicial que contém o método main() de que não precisamos.

Agora, como queremos ter vários painéis colocados (um de cada vez) sobre a parte central do frame principal, vamos arrastar um JPanel para a área central do JFrame, e chamamos a esse JPanel, mainPanel:



Agora, deixamos o mainPanel vazio, e vamos criar um novo JPanel Form (listBooksJPanel.java:



Arrastamos um JTable para o novo JPanel, e dimensionamo-lo de forma a ocupar todo o espaço disponível.
Depois, precisamos de configurar o JTable, de forma que as colunas tenham os nomes que pretendemos. Para isso, devemos clicar sobre o objeto JTable object e selecionar Costumize Code.
Sobre a Code customizer window, alterar o "default code" para "custom property", tal como na figura abaixo, e fazemos as alterações ilustradas:


Agora as colunas intitulam-se Title, Author, Editor, Edition and Isbn.

Quando a editar o ListBooksJPanel.java, no NetBeans, clicamos no botão Source (ao lado do botão Design), de forma a ver o código que foi gerado para a parte gráfica.

Precisamos de povoar a JTable com informação dos livros na base de dados, logo que o ListBooksJPanel é criado, em tempo de execução.
Para isso, vamos adicionar algum código no método criador da classe gerada, após a chamada a InitComponents().


Adicionar o código seguinte:

try {
   List<Book> lsBooks = Book.retrieveAllBooks(new DBAccessObj());
   limparJTableBooks();
   if(!lsBooks.isEmpty()){
     javax.swing.table.DefaultTableModel model1 = (javax.swing.table.DefaultTableModel)jTable1.getModel();
               
     Iterator<Book> iterBooks = lsBooks.iterator();
     while(iterBooks.hasNext()){
        Book book = iterBooks.next();
        //
        int id = book.getID();
        String title = book.getTitle();
        //
        String authors = "";
        //
        Iterator<Author> bookAuthors = book.getAuthors().iterator();
        while(bookAuthors.hasNext()){
           Author au = bookAuthors.next();
           authors += au.getSurname() + ", " + au.getName() + "; ";
        }
        //
        String editor = book.getEditor();
        String edition = "";
        edition = book.getEdition();
        //
        String isbn = book.getISBN();
        //
        model1.addRow(new Object[]{title, authors, editor, edition, isbn});
     }
   }
} catch (SQLException ex) {
    System.out.println(ex);
}


Lembremo-nos de que é necessário ter adicionado referências para os dois projetos anteriormente desenvolvidos, nas libraries deste projeto.

Voltando à JFrame, queremos tornar o painel listBooksJPanel visível, quando o utilizador seleciona a opção de menu ListBooks.

Fazer double click sobre o menu item ListBooks, de forma que seja criado um handler method. Acrescentar ao handler o código da figura seguinte:


Agora, vamos correr o exemplo... (claro que precisamos de ter dados na base de dados).


Como habitualmente, podem colocar as vossas dúvidas nos comentários ao artigo...


Sem comentários:

Enviar um comentário