Você está na página 1de 20

Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.

Choose page language Search:

HOME / Docs & Support

-
Criando um aplicativo de banco de dados de área de trabalho Java personalizado
Este tutorial o guia pela criação de um aplicativo de banco de dados de área de trabalho completo que permite que o usuário
Training
procure e edite registros de clientes e adquira históricos. O aplicativo resultante inclui os principais recursos a seguir:

Uma visualização principal que permite aos usuários procurar registros e compras de clientes. Java Programming Language
Developing Applications for the
Um campo de pesquisa para os registros dos clientes.
Java EE Platform
Caixas de diálogo separadas para o ingresso de novos registros ou a modificação de registros existentes.

Código para interagir com diversas tabelas relacionadas ao banco de dados.


Support
Conteúdo
Oracle Development Tools
Introdução Support Offering for NetBeans
IDE
Configurando o banco de dados
Criando o esqueleto do aplicativo
Personalizando a visualização Mestre/Detalhe
Documentation
General Java Development
Adicionando caixas de diálogo
External Tools and Services
Ativando os botões Salvar e Cancelar nas caixas de diálogo
Java and JavaFX GUIs
Conversão de moedas, Verificação de dados e Pesquisa
Java EE & Java Web
Consulte também Development
Web Services Applications
Para concluir este tutorial, você precisa dos seguintes recursos e softwares.
NetBeans Platform (RCP) and
Module Development
Software ou recurso Versão necessária
PHP Applications
NetBeans IDE versão 6.5
JavaScript and Dynamic
Java Development Kit (JDK) versão 6
Languages
Script SQL para criar as tabelas do banco de dados C/C++ Applications
arquivo zip das classes de utilitário Mobile Applications

Nota: Você pode fazer download do projeto de trabalho final criado nesse tutorial sempre que necessário e abri-lo no IDE Sample Applications
para visualizar as classes. Se deseja executar o projeto obtido por download, certifique-se de limpá-lo e construí-lo antes da Demos and Screencasts
execução.

More
Introdução
FAQs
Esse aplicativo utiliza as seguintes tecnologias:
Contribute Documentation!
API de persistência Java (JPA, Java Persistence API), que o ajuda a interagir com um banco de dados usando código Java. Docs for Earlier Releases

Vinculação de beans, que o permite manter sincronizadas as propriedades do componente Swing.

O Swing Application Framework, que simplifica funções básicas do aplicativo, como persistindo com informações de sessão,
lidando com ações e administrando recursos.

O tutorial usa assistentes do IDE e outros recursos de geração de código para oferecer a maior parte do código repetitivo, além de
mostrar como personalizar o código gerado e codificar manualmente outras partes do aplicativo.

Esse tutorial dura aproximadamente 2 horas para ser finalizado. Para obter um tutorial que exiba a criação de uma interface de
usuário menos personalizada, consulte Construindo um aplicativo de banco de dados de área de trabalho Java.

Veja abaixo uma captura de tela do aplicativo de trabalho que você terá ao finalizar esse tutorial.

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]
Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.8

Configurando o banco de dados


Antes de criar códigos para o aplicativo, é necesário configurar o banco de dados. Dessa maneira, você pode aproveitar os
assistentes que geram grande parte do código do aplicativo com base na estrutura do banco de dados.

As instruções nesse tutorial baseiam-se no uso de um banco de dados MySQL que você cria com o script SQL.

Nota: Você pode usar outros softwares de gerencimento de banco de dados, mas isso pode exigir alguns ajustes no script
SQL. Também será necessário criar um banco de dados fora do IDE.

Para configurar o IDE para que funcione com banco de dados MySQL, consulte a página Conectando-se a um banco de dados
MySQL.

Para criar o banco de dados:

1. Na janela Serviços, clique com o botão direito do mouse no nó MySQL Server e escolha Iniciar.

2. Clique com o botão direito do mouse no nó MySQL Server e escolha Criar banco de dados.
Se o item Criar banco de dados não estiver ativado, escolha Conectar. Talvez seja necessário inserir uma senha. O item
Criar banco de dados deve ser, então, ativado.

3. Em Nome do banco de dados, digite MyBusinessRecords e clique em OK.


Um nó denominado MyBusinessRecords deve aparecer na lista de conexões de banco de dados.

4. Clique com o botão direito do mouse no nó MyBusinessRecords e escolha Conectar.

5. Se a caixa de diálogo Conectar aparecer, digite a senha definida para o servidor do banco de dados.

6. Se a guia Avançado da caixa de diálogo aparecer, clique em OK para fechar a caixa de diálogo. -->

7. Vá até o nó da conexão recentemente criada. O nó deve apresentar o ícone do nó conexão.

8. Clique com o botão direito do mouse no nó de conexão e escolha Executar comando.

9. Copie o conteúdo do script SQL MyBusinessRecords e cole-o na guia Comando SQL 1 do Editor de código-fonte.

10. Clique no botão Executar SQL ( ) na barra de ferramentas do Editor de código-fonte para executar o script.
A saída do script deve aparecer na janela Saída.

11. Clique com o botão direito do mouse no nó de conexão novamente e escolha Atualizar.

12. Expanda o nó, assim como os subnós das tabelas.


Devem aparecer enumeradas quatro tabelas de banco de dados.

A estrutura do banco de dados foi projetada pensando-se na normalização e na integridade. Aqui, algumas observações sobre a
estrutura:

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]
Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.8

O script SQL especifica o mecanismo de armazenamento InnoDB para que seja possível lidar com chaves estrangeiras
nesse banco de dados. O mecanismo de armazenamento padrão do MySQL, MyISAM, não funcionará com esse tutorial.

Os dados são divididos entre diversas tabelas para reduzir a duplicidade, assim como a possibilidade de inconsistências.
Algumas tabelas conectam-se entre si por meio de chaves estrangeiras.

Todas as tabelas usam o atributo AUTO_INCREMENT de MySQL para que haja um único identificador para cada fila nessas
tabelas. Esse identificador é criado pelo software de gerenciamento do banco de dados para que, dessa maneira, seu
aplicativo e/ou o usuário de seu aplicativo não precise criá-lo. (Se o AUTO_INCREMENT for usado corretamente no
aplicativo, o IDE adicionará a anotação @GeneratedValue(strategy=GenerationType.IDENTITY para essa coluna na classe de
entidade da tabela. Isso garante que o aplicativo não tente enviar um valor para essa coluna quando se cria um novo
registro.)

A chave estrangeira na tabela PEDIDOS serve para vincular cada registro de pedidos a um cliente. Na interface de usuário
do aplicativo, os registros PEDIDO são somente exibidos para o CLIENTE selecionado.

O atributo EXCLUIR EM CASCADA, da chave estrangeira para a classe CLIENTES, garante que os pedidos de um cliente
sejam também excluídos quando se exclui um cliente.

A chave estrangeira na tabela CLIENTES aponta a uma tabela PAÍSES. Você usará essa relação no aplicativo para permitir
que o usuário selecione o país de um cliente de uma caixa de combinação.

A tabela PEDIDOS tem uma chave estrangeira que se vincula à tabela PRODUTOS. Ao adicionar o registro de um novo
pedido, o usuário poderá escolher um produto de uma caixa de combinação.

As tabelas PAÍSES e PRODUTOS são previamente preenchidas com dados para que você possa escolher entre essas tabelas
quando o usuário do aplicativo adicionar registros de clientes e de pedidos.

Embora este tutorial não aborde isso, talvez você considere útil criar aplicativos separados para preencher as tabelas
PAÍSES e PRODUTOS. Tais aplicativos podem ser criados com o modelo de projeto do Aplicativo de área de trabalho Java e
não exigiem criação manual de códigos adicionais.

Criando o esqueleto do aplicativo


Você usará o modelo do projeto do Aplicativo de área de trabalho Java do IDE para criar a maior parte do código básico do
aplicativo. Esse modelo gera um código para as seguintes características:

Conexão ao banco de dados

Uma estrutura de aplicativo principal que contém tabelas para os detalhes e pedidos dos clientes.

Uma classe de aplicativo principal que lida com as funções básicas do ciclo de vida do aplicativo, incluindo persistência do
estado da janela entre sessões e inserção de recursos.

Ações (e os botões correspondentes) para comandos de aplicativo de banco de dados padrão.

Para algumas estruturas de banco de dados, é possível obter um aplicativo de trabalho assim que se sai do assistente. No
entanto, serão usados nesse tutorial algumas construções para as quais será necessário personalizar o código gerado, como as
relações AUTO-INCREMENT e uma-para-várias.

Para criar o esqueleto do aplicativo:

1. Escolha Arquivo > Novo projeto.

2. Selecione a categoria Java e o modelo do Aplicativo de área de trabalho Java. Em seguida, clique em Próximo.

3. Na página Nome e Localização do assistente, siga estas etapas:


1. Digite CustomerRecords no campo Nome do projeto.

2. Selecione o shell Aplicativo de banco de dados.

3. Clique em Próximo.

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]
Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.8

4. Na página Tabela mestre do assistente, siga estas etapas:


Selecione a conexão ao banco de dados MyBusinessRecords recentemente criado.

Selecione a tabela CLIENTES.

Mova a entrada ID de Colunas a incluir para Colunas disponíveis.

Clique em Próximo.

5. Na página Opções de detalhes, siga estas etapas:


Clique no botão de opção Tabela para criar uma JTable para a tabela PEDIDOS.

Mova a entrada ID de Colunas a incluir para Colunas disponíveis.

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]
Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.8

6. Clique em Finalizar para sair do assistente.

São geradas diversas classes, incluindo:

As classes de entidade Clientes e Pedidos, que representam os dados das tabelas do banco de dados CLIENTES e PEDIDOS.

O formulário principal com dois componentes JTable que fornecem uma visualização mestre/detalhe das tabelas do banco
de dados CLIENTES e PEDIDOS. A visualização também contém botões conectados às ações de criar, excluir e salvar
registros.
A tabela mestre está vinculada a uma lista de objetos dos clientes. Essa lista de objetos representa todas as filas da tabela
do banco de dados CLIENTES.
A tabela de detalhes está vinculada a uma coleção de objetos de PEDIDOS. Essa coleção representa todas as filas na tabela
do banco de dados PEDIDOS que estão vinculadas ao cliente atualmente selecionado na tabela mestre.

A esta altura, você pode escolher Executar > Executar projeto principal para exibir a janela principal do aplicativo. No entanto, o
aplicativo ainda não funciona corretamente porque o banco de dados apresenta alguns atributos para os quais o assistente não
gerou o código necessário. Você adicionará esse código na próxima sessão do tutorial.

Modificando o título da estrutura principal do aplicativo


Ao executar o aplicativo, a estrutura do aplicativo tem o título "Exemplo do aplicativo do bando de dados". Para um JFrame
simples, normalmente, você modificaria o título pela alteração da propriedade do título na folha de propriedades do componente.
No entanto, a estrutura desse aplicativo usa a classe FrameView do Swing Application Framework e o título é uma propriedade
geral do aplicativo. Você pode modificar tais propriedades do aplicativo na janela de propriedades do projeto.

Para modificar o título da estrutura principal do aplicativo:

1. Na janela de projetos, selecione o nó do projeto e escolha Propriedades.

2. Na caixa de diálogo Propriedades do projeto, selecione o nó do aplicativo.

3. Modifique a propriedade do título para Registros de clientes e Pedidos .

4. Se desejar, modifique também outras propriedades, como Descrição e Tela de apresentação

Personalizando a visualização Mestre/Detalhe


O código gerado até então destina-se a um aplicativo muito mais simples do que o aplicativo criado nesse tutorial. O banco de
dados tem quatro tabelas, mas o assistente só gerou classes de entidade para duas tabelas exibidas na visualização
mestre/detalhe. Além disso, o assistente não considerou a chave estrangeira da tabela Clientes para a tabela Países ou a chave
estrangeira da tabela Pedidos para a tabela Produtos. A única relação reconhecida entre tabelas foi a pertinente à relação
mestre/detalhe entre as tabelas Clientes e Pedidos. Para corrigir esses problemas, é necessário fazer o seguinte:

Criar classes de entidade para as tabelas PAÍSES e PRODUTOS.

Personalizar a classe de entidade Clientes para que faça referência à classe de entidade Países.

Personalizar a classe de entidade Pedidos para que faça referência à classe de entidade Produtos.

Atualizar o código de vinculação para as tabelas mestre e de detalhes no formulário principal para que, dessa maneira, as
classes de entidade Países e Produtos sejam usadas.

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]
Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.8

Gerando classes de entidade ausentes


Para criar as classes de entidade ausentes:

1. Crie classes de entidade para as tabelas Países e Produtos ao clicar com o botão direito do mouse no pacote
customerrecords e escolher Novo > Classes de entidade no banco de dados.

2. Selecione a tabela de países e clique no botão Adicionar.

3. Selecione a tabela de produtos e clique no botão Adicionar.

4. Clique em Próximo.

5. Na página Classes de entidade do assistente, clique em Próximo.

6. Na página Opções de mapeamento, altere o tipo de coleção para java.util.List .

7. Clique em Finalizar para sair do assistente.


Novas classes denominadas Países e Produtos devem aparecer no projeto.

Estabelecendo relações entre classes de entidade


Agora é necessário modificar as classes de entidade Clientes e Pedidos para que essas lidem adeqüadamente com as chaves
estrangeiras do banco de dados das tabelas Países e Produtos. A propriedade de countryId é do tipo Países e não do tipo Inteiro e
está ligada à tabela do banco de dados PAÍSES.

Para estabelecer a relação entre as classes de entidade Clientes e Países:

1. Na classe de clientes, substitua a declaração e a anotação desse campo

@Column(name = "COUNTRY_ID")
private Integer countryId;

pelo código:

@JoinColumn(name = "COUNTRY_ID", referencedColumnName = "COUNTRY_ID")


@ManyToOne
private Countries countryId;

2. Pressione Ctrl-Shift-I para adicionar as importações do código que foi colado.

3. Modifique o tipo do método getCountryId() de Inteiro para Países.

4. No método setCountryId() , modifique os tipos de countryId e oldCountryId de Inteiro para Países.

Para estabelecer a relação entre as classes de entidade Pedidos e Produtos:

1. Na classe Pedidos, substitua a declaração e a anotação desse campo

@Basic(optional = false)
@Column(name = "PRODUCT_ID")
private int productId;

pelo código:

@JoinColumn(name = "PRODUCT_ID", referencedColumnName = "PRODUCT_ID")


@ManyToOne
private Products productId;

2. Pressione Ctrl-Shift-I para adicionar as importações do código que foi colado.

3. No construtor de pedidos (Integer id, Products productId, int quantity) público, modifique o tipo do argumento
productId de int para Produtos .

4. Modifique o tipo do método getProductId() de int para Produtos .

5. No método setProductId() , modifique os tipos dos parâmetros productId e a variável oldProductId de int para Produtos.

Personalizando o código de vinculação de colunas


Você também precisará atualizar o vínculo de colunas para o campo de país para que faça referência à propriedade de país do
objeto Países. (O código para usar um int de ID de país foi gerado pelo projeto, pois o esqueleto foi gerado sem ter uma classe

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]
Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.8

de entidade para a tabela PAÍSES. Se você não fizer uma modificação aqui, será lançada uma ClassCastException quando o
aplicativo for executado.)

Para corrigir o vínculo da coluna na tabela mestre:

1. Abra a classe CustomerRecordsView.

2. Na visualização de desenho da classe, clique com o botão direito do mouse na primeira tabela e escolha Conteúdo da
tabela.

3. Selecione a guia Colunas.

4. No personalizador, selecione a fila de ID do país.

5. Na caixa de combinação Expressão, digite ${countryId.country} ou gere essa expressão selecionando countryId > país na
lista suspensa.
A propriedade do país é a parte dos objetos Países que contêm o nome do país atual. O uso dessa expressão garante que
a coluna exiba nomes de países em vez de um número de identificação de país ou o valor do método toString() do objeto
Países.

6. Modifique o Título de ID do país para País. Isso afeta o cabeçalho da coluna do aplicativo em execução.

7. Clique em Fechar para salvar as modificações.

Personalizando a tabela Detalhes


De maneira similar, você precisa fazer modificações na coluna Id do produto da tabela de detalhes para evitar
ClassCastException s. Também será necessário executar algumas etapas adicionais ao personalizar a tabela de detalhes. Você terá
diversas colunas para exibir as informações de produtos, mas somente uma coluna foi gerada até então.

Na tabela de produtos, há uma coluna productId, que se baseia na coluna PRODUCT_ID da tabela PEDIDOS. Você deve apenas
modificar o vínculo para exibir o modelo de produtos e evitar uma ClassCastException . No entanto, seria útil exibir os dados
correspondentes ao produto nas colunas adicionais.

Para completar as colunas na tabela de detalhes:

1. Na visualização de desenho da classe CustomerRecordsView, clique com o botão direito do mouse na tabela inferior e
escolha Conteúdo da tabela.

2. Selecione a guia Colunas.

3. No personalizador, selecione a fila Id do produto.

4. Modifique a Expressão para ${productId.brand} . Após fazer isso, o tipo também deve ser modificado para String.

5. Modifique o Título de productid para Marca.

6. Clique no botão Inserir.

7. Selecione a fila recentemente adicionada à tabela.

8. Para Título, digite Tipo.

9. Para a Expressão, selecione productId > prodType na lista suspensa.

10. Clique no botão Inserir novamente e selecione a fila recentemente adicionada.

11. Para Título, digite Modelo.

12. Para a Expressão, selecione productId > modelo, na lista suspensa.

13. Clique no botão Inserir novamente e selecione a fila recentemente adicionada.

14. Para Título, digite Preço.

15. Para a Expressão, selecione productId > preço, na lista suspensa.

16. Clique em Fechar para aplicar as modificações.

Nesse momento, o aplicativo está parcialmente funcional. Você pode executar o aplicativo e adicionar, editar, excluir e salvar
registros. No entanto, você ainda não pode modificar campos baseados nas classes de entidade Países e Produtos. Além disso,
também é necessário realizar outras tarefas para fazer com que o campo Data do pedido funcione de maneira mais fácil.

Você pode fazer alguns ajustes às colunas País e Modelo para usar as caixas de combinação vinculadas às respectivas tabelas. Isto
permite que o usuário selecione esses campos sem ter que inseri-los manualmente. Em vez disso, você usará caixas de diálogo
como mecanismos de entrada de dados para essas tabelas a fim de dificultar a exclusão acidental de dados pelo usuário durante a
busca.

Adicionando caixas de diálogo


Nesta seção do tutorial, você:

Adicionará classes de entidade necessárias.

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]
Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.8

Ajustará as ações no formulário principal.

Criará caixas de diálogo para editar dados para cada tabela no formulário principal.

Criará beans intermediários para carregar os dados entre as caixas de diálogo e os formulários.

Vinculará os campos nas caixas de diálogo aos beans intermediários.

Criará manipuladores de eventos para os botões nas caixas de diálogo.

Adicionando classes de utilitários necessárias ao projeto


Esse tutorial depende de diversas classes de utilitários que especificam temas, por exemplo, como renderizar e validar certos
valores.

Para adicionar todas as classes de utilitários necessárias ao projeto:

1. Descompacte o zip do arquivo das classes de utilitários, descompactando seu conteúdo no sistema.

2. No sistema, copie todos os arquivos do zip e cole-os na pasta que contém a pasta customerrecords do projeto.

3. Se suas classes estiverem em um pacote diferente da pasta customerreccords , ajuste a instrução do pacote em cada um
dos arquivos recentemente adicionados ao projeto.

Ajustando detalhes da ação


Antes de adicionar as caixas de diálogo ao aplicativo, modifique os nomes dos novos botões para simplificá-los. Você fará as
modificações nas Ações que foram atribuídas aos botões.

Para modificar o texto do botão:

1. Abra a classe CustomerRecordsView e selecione a visualização de desenho.

2. Clique com o botão direito do mouse no primeiro Novo botão e selecione Definir ação.

3. Na caixa de diálogo Definir ação, modifique a propriedade do texto para Novo cliente .

4. Modifique o campo Dica da ferramenta para Criar registro de um novo cliente .

5. Clique em OK.

6. Clique com o botão direito do mouse no segundo Novo botão e selecione Definir ação.

7. Na caixa de diálogo Definir ação, modifique a propriedade do texto para Inserir pedido .

8. Modifique o campo Dica da ferramenta para Criar registro de pedido de um novo cliente .

9. Clique em OK.

Criando o diálogo do cliente


Para criar e preencher a caixa de diálogo da tabela do cliente, siga estas etapas:

1. Clique com o botão direito do mouse no pacote que contém suas classes e escolha Novo > Outros. Selecione o modelo
Swing GUI Forms > Formulários JDialog e nomeie-o CustomerEditor .

2. Na janela Paleta, arraste, solte e organize componentes para os detalhes pessoais do cliente.
Adicione etiquetas para cada um dos seguintes campos: nome, sobrenome, endereço, cidade, estado, código postal, país e
número de telefone.
Adicione campos de texto para todos os campos mencionados acima, com exceção do campo País.
Para país, adicione uma caixa de combinação.

3. Edite o texto de exibição para JLabels.

4. Adicione dois botões e nomeie-os como Salvar e Cancelar.

5. (Opcional) Renomeie todos os componentes adicionados com nomes mais memoráveis, como firstNameLabel . Você pode
fazer isso diretamente na janela Inspetor.

6. Selecione todo o formulário JDialog.

7. Na janela Propriedades, altere a propriedade Título para Editor de clientes .

O layout resultante deve se parecer com o exibido abaixo.

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]
Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.8

Nota: Para obter um guia detalhado para usar os recursos de layout do GUI Editor, consulte Fazendo o desenho de uma
Swing GUI no NetBeans IDE.

Vinculando os campos das caixas de diálogo do cliente


Agora você precisa vincular os diversos campos às colunas correspondentes na tabela. Não é possível vincular diretamente a
componentes de outros formulários na caixa de diálogo Vincular; por isso, será necessário criar uma propriedade do bean
intermediário do tipo Clientes para manter esse registro. Quando o usuário clica em Novo cliente, a propriedade do bean dará o
valor de um registro vazio que o usuário modifica na caixa de diálogo. Quando o usuário clica na caixa de diálogo Salvar, os
valores da propriedade do bean retornam ao formulário principal e ao banco de dados.

Para gerar a propriedade do bean intermediário:

1. Na parte superior da área de desenho do formulário CustomerEditor, clique na guia Código-fonte. Clique em qualquer lugar
da classe, como na linha abaixo do construtor.

2. Pressione Alt-Insert (ou clique com o botão direito do mouse e escolha Inserir código) e escolha Adicionar propriedades.

3. Na caixa de diálogo Adicionar propriedades, nomeie a propriedade currentRecord , atribua-lhe o tipo Clientes , selecione
Gerar Getter e Setter; e selecione Gerar suporte a alteração de propriedades.

4. Clique em OK para gerar a propriedade.

Agora você precisa personalizar o método setCurrentRecord gerado para lançar uma notificação de alteração de propriedade.

Para lançar a notificação de alteração de propriedade:

Substitua a linha this.currentRecord = currentRecord; por estas três linhas:

Customers oldRecord = this.currentRecord;


this.currentRecord = currentRecord;
propertyChangeSupport.firePropertyChange("currentRecord", oldRecord, currentRecord);

Agora é necessário adicionar código para abrir a caixa de diálogo do editor de clientes quando o usuário clicar no botão Novo
cliente. Além disso, você precisará de códigos para limpar a propriedade currentRecord .

Para adicionar códigos para abrir a caixa de diálogo da visualização principal:

1. Abra a classe CustomerRecordsView e selecione a visualização Código-fonte.

2. Navegue até o método newRecord() .

3. Cole o código a seguir na parte inferior do método.

JFrame mainFrame = CustomerRecordsApp.getApplication().getMainFrame();


CustomerEditor ce = new CustomerEditor(mainFrame, false);
ce.setCurrentRecord(c);
ce.setVisible(true);

Agora você pode continuar com a vinculação dos campos da caixa de diálogo. Você vinculará a propriedade do texto de cada
campo de à propriedade correspondente do objeto Clientes , representado por currentRecord . Da mesma maneira, você vinculará
a propriedade selectedItem da caixa de combinação à propriedade countryId de currentRecord . Você vinculará a propriedade dos
elementos da caixa de combinação a uma lista de entidades de países.

Para vincular os campos de texto às propriedades do bean currentRecord :

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]
Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.8

1. Volte para a visualização de desenho da classe CustomerEditor.

2. Selecione o campo de texto Nome no formulário.

3. Na janela Propriedades, selecione a categoria Vinculação.

4. Próximo à propriedade do texto , clique no botão de reticências (...).

5. Na caixa de diálogo Vincular, selecione Formulário como a Origem da vinculação. (Observe que Formulário está quase no
final da lista suspensa.)

6. Na lista suspensa Expressão de vinculação, expanda o nó currentRecord e selecione a propriedade correspondente ao


campo de texto que se está vinculando.

7. Clique em OK para fechar a caixa de diálogo Vincular.

8. Repita as etapas de 1 a 6 para cada um dos demais campos de texto.

Para vincular a caixa de combinação País:

1. Clique com o botão direito do mouse na caixa de combinação e escolha Vincular > elementos.

2. Clique em Importar dados para formulário, selecione a conexão de banco de dados, assim como a tabela Países.
countriesList deve aparecer como a origem da vinculação. Clique em OK.

3. Clique com o botão direito do mouse na caixa de combinação novamente e escolha Vincular > selectedItem.

4. Selecione Formulário como a origem da vinculação e currentRecord > countryId como a expressão. Clique em OK.

A caixa de combinação está quase pronta para funcionar corretamente na caixa de diálogo. Ela está configurada para extrair seus
valores da tabela do banco de dados PAÍSES; e o item que o usuário seleciona é logo aplicado ao campo de país no registro atual.
No entanto, você ainda precisa personalizar a renderização da caixa de combinação, já que os valores vinculados à caixa de
combinação são objetos de países e não nomes comuns. Você fará isso ao especificar um renderizador de célula personalizado.
(Para JTables e JLists, a biblioteca de vinculação dos beans permite que você especifique expressões de exibição, evitando que
seja necessário criar um renderizador personalizado. No entanto, esse recurso ainda não existe para caixas de combinação.)

Para que as caixas de combinação renderizem nomes de países, faça o seguinte:

1. Na janela do projeto, clique com o botão direito do mouse em CountryListCellRenderer e escolha Compilar arquivo. A
compilação do arquivo permite que você o trate como um bean que pode ser adicionado ao formulário, arrastando-o e
soltando-o do construtor de GUI do IDE.

2. Selecione o formulário CustomerEditor no Editor de código-fonte e selecione a visualização de desenho.

3. Arraste a classe da janela Projetos para o espaço em branco ao redor do formulário, como mostrado na captura de tela

abaixo.
A execução dessa ação adiciona o renderizador no seu formulário como um bean; da mesma maneira que arrastar um
componente da Paleta adiciona tal componente a seu formulário.

4. No formulário, selecione a caixa de combinação.

5. Na janela Propriedades, selecione a categoria Propriedades.

6. Vá para a propriedade do renderizador e escolha countryListCellRenderer1 na lista suspensa dessa propriedade.

Agora você poderá executar o aplicativo, pressionar o primeiro Novo botão e inserir dados na caixa de diálogo. Também será
possível selecionar um país na caixa de combinação País. Os botões Salvar e Cancelar na caixa de diálogo ainda não realizam
ações, mas você pode salvar os registros da estrutura principal. Você codificará esses botões mais tarde.

Criando a caixa de combinação de entrada de pedidos


Agora, você criará uma caixa de diálogo para a parte de detalhes do formulário.

Para criar a caixa de diálogo do Editor de pedidos:

1. Clique com o botão direito do mouse no pacote customerrecords e escolha Novo > Formulário JDialog.

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]
Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.8

2. Nomeie a classe OrderEditor e clique em Terminar.

3. Arraste e solte os seguintes componentes no formulário:


Componentes do rótulo para Data, Produto, Quantidade, Preço e Total.

Componentes do Campo formatado para data, preço e total.

Um rótulo para exibir o formato da data que necessita ser inserida. Atribua este texto ao rótulo (MMM DD, AAAA -
por exemplo, Abr 17, 2008) . Se planeja usar um formato de data diferente, adicione texto que corresponda ao
formato desejado.

Uma caixa de combinação para o campo Produto.

Um campo de texto para o campo Quantidade.

Dois botões para os comandos Salvar e Cancelar.

4. Selecione todo o formulário JDialog.

5. Na janela Propriedades, altere a propriedade Título para Editor de pedidos .

Agora que o Editor de pedidos possui desenho visual, será necessário fazer o seguinte:

Criar um bean intermediário para carregar os valores do registro de volta para o formulário principal.

Especificar o formato para os campos do texto formatado.

Vincular os diversos campos.

Definir o comportamento do campo formatado para a data.

Lidar com a formatação de moedas dos campos Preço e Total.

Conectando a caixa de diálogo do Editor de pedidos com o formulário principal


Assim como feito para a caixa de diálogo CustomerEditor, você terá que criar uma propriedade do bean intermediário do tipo
Pedidos para manter o registro. Quando o usuário pressionar Inserir pedido, a propriedade fornecerá o valor do registro de pedido
atualmente selecionado.

Para criar a propriedade do bean:

1. Na parte superior da área de desenho do formulário OrderEditor, clique na guia Código-fonte.

2. Clique em qualquer lugar da classe, na linha abaixo de construtor, por exemplo.

3. Pressione Alt-Insert (ou clique com o botão direito do mouse e escolha Inserir código) e escolha Adicionar propriedades.

4. Na caixa de diálogo Adicionar propriedade, nomeie a propriedade currentOrderRecord , atribua-lhe o tipo Pedidos , selecione
Gerar Getter e Setter; e selecione Gerar suporte a alteração de propriedades.

5. Clique em OK para gerar a propriedade.

6. No método setCurrentOrderRecord() , substitua a linha this.currentOrderRecord = currentOrderRecord; por estas três


linhas:

Orders oldRecord = this.currentOrderRecord;


this.currentOrderRecord = currentOrderRecord;
propertyChangeSupport.firePropertyChange("currentOrderRecord", oldRecord, currentOrderRecord);

Agora é necessário adicionar um código para abrir a caixa de diálogo do Editor de pedidos quando o usuário clicar no botão Inserir
pedido. Além disso, você precisará de códigos para limpar a propriedade currentOrderRecord.

Para conectar a caixa de diálogo ao botão Inserir pedido:

1. Abra a classe CustomerRecordsView e selecione a visualização Código-fonte.

2. Navegue até o método newDetailRecord() .

3. Cole o seguinte código na parte inferior do método.

JFrame mainFrame = CustomerRecordsApp.getApplication().getMainFrame();


OrderEditor oe = new OrderEditor(mainFrame, false);
oe.setCurrentOrderRecord(o);
oe.setVisible(true);

Vinculando os campos do Editor de pedidos


Nota: Para os campos de texto formatados, vincule à propriedade do valor e não à propriedade do texto . Veja detalhes no

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]
Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.8

Tutorial do Java.

Para vincilar os campos da caixa de diálogo Pedidos:

1. Abra a classe OrderEditor na visualização de desenho.

2. Selecione o campo de texto para a data.

3. Na janela Propriedades, selecione a categoria Vinculação.

4. Selecione a propriedade do valor e clique no botão de reticências (...), próximo da propriedade.

5. Na caixa de diálogo Vincular, selecione Formulário como a origem da vinculação e currentOrderRecord > orderDate como a
expressão de vinculação.

6. Selecione a caixa de combinação para o produto e clique no botão de reticências (...) para a propriedade dos elementos.

7. Na caixa de diálogo Vincular, clique em Importar dados para formulário.

8. Selecione a conexão de banco de dados MyBusinessRecords e selecione a tabela de produtos .


Ao importar esses dados para o formulário, gera-se um código para um objeto da Lista de produtos. Esse objeto
(listProducts ) é, então, definido como a origem da vinculação.

9. Deixe a expressão de vinculação como nulo e clique em OK.

10. Clique no botão de reticências (...) para a propriedade selectedItem da caixa de combinação.

11. Selecione Formulário como a origem da vinculação e currentOrderRecord > productId como a expressão de vinculação.

12. Selecione o campo de texto Quantidade.

13. Clique no botão de reticências (...) para a propriedade do texto .

14. Selecione Formulário como a origem da vinculação e currentOrderRecord > quantidade como a expressão de vinculação.

15. Selecione o campo formatado do preço.

16. Clique no botão de reticências (...) para a propriedade do valor .

17. Selecione Formulário como a origem da vinculação e ${currentOrderRecord.productId.price} como a expressão de


vinculação.

18. Selecione o campo formatado do total.

19. Clique no botão de reticências (...) para a propriedade do valor .

20. Selecione Formulário como a origem da vinculação e digite


${currentOrderRecord.productId.price*currentOrderRecord.quantity} como a expressão de vinculação.
Esta expressão de vinculação personalizada permite gerar o preço total do pedido pela multiplicação do preço dos itens
selecionados vezes a quantidade selecionada pelo usuário.

Definindo o formato de data e moeda


Para a data, o preço e o total do pedido, você adicionou campos de texto formatados, o que facilita a atribuição de formato.

Para definir o formato de data e moeda para esses campos:

1. Selecione o campo formatado para a data.

2. Na janela Propriedades, selecione a Categoria das propriedades.

3. Clique no botão de reticências (...) junto à propriedade formatterFactory .

4. No editor de propriedades formatterFactory, selecione data na coluna Categoria. Em seguida, selecione Padrão na coluna
Formato.

5. Clique em OK para sair da caixa de diálogo.

6. Selecione o campo formatado de preço.

7. Na janela Propriedade, limpe a propriedade editável . (Você não deseja que os usuários editem esse campo. O valor desse
campo será derivado da propriedade do preço do item selecionado na caixa de combinação do produto.)

8. No Editor de propriedades formatterFactory, selecione moeda na coluna Categoria. Em seguida, selecione Padrão na coluna
Formato.

9. Clique em OK para sair da caixa de diálogo.

10. Siga as etapas de 6 a 9 para o campo formatado do total.

Agora, quando você executar o aplicativo e selecionar um item, os campos preço e moeda deverão aparecer como moedas.

Convertendo a caixa de combinação Produto


Agora você precisa modificar a conversão da caixa de combinação Produto. Como feito para a caixa de combinação País na caixa

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]
Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.8

de diálogo Novo cliente, você precisará usar um renderizador de célula personalizado. Nesse renderizador de célula, você
combinará informações de diversas propriedades para que o usuário possa ver o tipo, a marca e o modelo enumerados para cada
item.

Para aplicar o renderizador de célula para o produto.

1. Clique com o botão direito do mouse na classe ProductListCellRenderer e escolha Compilar arquivo.

2. Abra o formulário OrderEditor na visualização de desenho.

3. Arraste a classe da janela Projetos para o espaço em branco ao redor do formulário, da mesma maneira que foi feita para
o CountryListCellRenderer.

4. No formulário, selecione a caixa de combinação.

5. Na janela Propriedades, role até a propriedade do renderizador e escolha productListCellRenderer1, na lsita suspensa dessa
propriedade.

Preenchendo previamente a caixa de diálogo de pedidos com dados.


Já que o objetivo dessa caixa de diálogo é inserir novos pedidos, é provável que o usuário do aplicativo esteja inserindo um
pedido para a data atual. Para que o usuário não precise inserir essa data, é possível preencher previamente esse campo com a
data atual.

Da mesma maneira, você deveria modificar o valor padrão para quantidade, já que 0 é um valor inválido. Você pode criar um
validador aqui; porém, por enquanto, é mais fácil e prático definir simplesmente um valor padrão razoável.

Para preencher previamente os campos de data e quantidade na caixa de diálogo do Editor de pedidos:

1. Abra a classe CustomerRecordsView e selecione a Visualização do código-fonte.

2. Navegue até o método newDetailRecord() .

3. Abaixo da linha customerrecords.Orders o = new customerrecords.Orders(); , cole essas linhas:

o.setOrderDate(new java.util.Date());
o.setQuantity(1);

Agora, quando você executar o aplicativo, a data atual deverá aparecer no campo Data quando a caixa de diálogo for aberta; e a
quantidade padrão deve ser 1.

Ativando os botões Salvar e Cancelar nas caixas de diálogo


Agora você precisa finalizar a codificação da conexão entre as caixas de diálogo e o formulário principal.

Ativando os botões Salvar e Cancelar do Editor de clientes.


Primeiro, conecte os botões na caixa de diálogo CustomerEditor com o código de manipulação de eventos apropriado. Você já
salvou() e atualizou() ações fornecidas com o aplicativo esqueleto. Você codificará a caixa de diálogo para que os botões
reutilizem essas ações. Isso pode ser feito configurando-se uma propriedade booleana na caixa de diálogo que retorna verdadeiro
quando o botão Salvar registro é pressionado e falso quando o botão Cancelar é selecionado. Com base no valor que é retornado
quando a caixa de diálogo é fechada, a ação· salvar() ou atualizar() será executada a partir da classe CustomerRecordsView.

Para configurar a propriedade, faça o seguinte:

1. Abra o aquivo CustomerEditor e selecione a visualização Código-fonte.

2. Coloque o cursor acima do campo propertyChangeSupport .

3. Pressione Alt-Insert e escolha Adicionar propriedade.

4. Na caixa de diálogo Adicionar propriedade, digite customerConfirmed como o nome da propriedade.

5. Defina o tipo como booleano.

6. Certifique-se de que a caixa de seleção Gerar Getters e Setters esteja selecionada.

7. Clique em OK para fechar a caixa de diálogo e gerar o código.

Você definirá o valor dessa propriedade no código de manipulação de eventos para os botões.

Para criar as escutas e os manipuladores de eventos:

1. Mude para a visualização de desenho para a classe CustomerEditor.

2. Selecione o botão Salvar no formulário CustomerEditor.

3. Na janela Propriedades, clique no botão Eventos.

4. Clique no botão de reticências (...) próximo à propriedade actionPerformed .

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]
Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.8

5. Na caixa de diálogo Manipuladores para actionPerformed, adicione um manipulador denominado saveCustomer .

6. Com o método saveCustomer , no Editor de código-fonte (para onde o cursor salta após você criar o novo manipulador),
digite o seguinte código:

setCustomerConfirmed(true);
setVisible(false);

7. Repita as etapas de 2 a 5 para o botão Cancelar e nomeie seu manipulador como cancelCustomer .

8. No método cancelCustomer , digite o seguinte:

setCustomerConfirmed(false);
setVisible(false);

Na classe CustomerRecordsView, navegue até o método newRecord() e adicione o seguinte código ao botão do método:

if (ce.isCustomerConfirmed()) {
save().run();
} else {
refresh().run();
}

Como as ações salvar() e atualizar() atuam em qualquer modificação feita durante a sessão do aplicativo, você deve fazer com
que a caixa de diálogo seja modal e que as tabelas no formulário principal não sejam editáveis. Outro motivo para fazer com que
a caixa de diálogo seja modal é que, quando o usuário pressiona o botão Salvar ou Cancelar, o método setVisible() não retorna
até que o manipulador de eventos (que inclui o método setCustomerConfirmed ) seja executado.

Para tornar a caixa de diálogo modal:

1. Abra a visualização de desenho da classe CustomerEditor.

2. Selecione a caixa de diálogo.

3. Na janela Propriedades, clique em Propriedades e selecione a caixa de seleção para a propriedade modal .

Para tornar a tabela Clientes do formulário principal não editável:

1. Abra a classe CustomerRecordsView e selecione a visualização de desenho.

2. Clique com o botão direito do mouse na tabela superior e escolha Conteúdo da tabela.

3. Na caixa de diálogo Personalizador, selecione a guia Colunas.

4. Para cada coluna, limpe a caixa de seleção Editável.

5. Clique em Fechar.

Agora, você poderá criar novos registros e salvá-los no Editor de clientes. Agora, você também poderá criar um novo registro e
cancelá-lo do Editor de clientes.

Na classe interna RefreshTask, Thread.sleep é chamado quatro vezes para diminuir o código de rollback para melhor demonstrar
como as tarefas do Swing Application Framework funcionam. Você não precisa desse código para o aplicativo, por isso, exclua
essas quatro instruções. Da mesma maneira, você não precisa de um bloco de tentativa/captura aqui, conseqüentemente, exclua
também as instruções de tentativa e captura (mas deixe o resto do corpo do bloco de tentativa).

Ativando os botões Salvar e Cancelar do Editor de pedidos


Exatamente como feito para o Editor de clientes, você necessita conectar os botões no diálogo OrderEditor com as ações salvar()
e atualizar() fornecidas com o aplicativo esqueleto. Como feito anteriormente, você usará uma propriedade boolena na caixa de
diálogo que retorna verdadeiro quando o botão Salvar registro é pressionado e falso quando se seleciona Cancelar. Com base no
valor retornado quando a caixa de diálogo é fechada, a ação salvar() ou atualizar() será executada a partir da classe
CustomerRecordsView.

Para definir a propriedade, faça o seguinte:

1. Abra o arquivo OrderEditor e selecione a visualização Código-fonte.

2. Coloque o cursor acima do campo propertyChangeSupport .

3. Pressione Alt-Insert e escolha Adicionar propriedade.

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]
Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.8

4. Na caixa de diálogo Adicionar propriedade, digite orderConfirmed como o nome da propriedade.

5. Defina o tipo como booleano.

6. Certifique-se de que a caixa de seleção Gerar Getters e Setters esteja selecionada.

7. Clique em OK para fechar a caixa de diálogo e gerar o código.

Você definirá o valor dessa propriedade no código de manipulação de eventos para os botões.

Para criar o código de manipulação de eventos para os botões:

1. Alterne para a visualização de desenho para a classe OrderEditor.

2. Selecione o botão Salvar no formulário OrderEditor.

3. Na janela Propriedades, clique no botão Eventos.

4. Clique no botão de reticências (...) ao lado da propriedade actionPerformed.

5. Em Manipuladores da caixa de diálogo actionPerformed, adicione um manipulador denominado saveOrder .

6. No método saveOrder no Editor de código-fonte (para onde o cursor salta após você criar o novo manipulador), digite o
seguinte código:

setOrderConfirmed(true);
setVisible(false);

7. Repita as etapas de 2 a 5 para o botão Cancelar e denomine o manipulador cancelOrder .

8. No método cancelOrder , digite o seguinte:

setOrderConfirmed(false);
setVisible(false);

Na classe CustomerRecordsView, navegue até o método newDetailRecord() e adicione o seguinte código na parte inferior do
método:

if (oe.isOrderConfirmed()) {
save().run();
} else {
refresh().run();
}

Para tornar o diálogo modal:

1. Abra a visualização de desenho da classe OrderEditor.

2. Selecione a caixa de diálogo.

3. Na janela Propriedades, clique em Proprieddes e selecione a caixa de seleção para a propriedade modal.

Para tornar a tabela Pedidos do formulário principal não editável:

1. Abra a classe CustomerRecordsView, no Editor de código-fonte, e selecione a visualização de desenho.

2. Clique com o botão direito do mouse na tabela inferior e escolha Conteúdo da tabela.

3. Na caixa de diálogo Personalizador, selecione a guia Colunas.

4. Para cada coluna, limpe a caixa de seleção Editável.

5. Clique em Fechar.

Verificando a exclusão de registros


Você moveu o acesso da maioria das principais ações do formulário principal para as caixas de diálogo. A única exceção é a ação
Excluir. Previamente no aplicativo, as exclusões eram confirmadas ao pressionar o botão Salvar e canceladas pressionando o
botão Atualizar. Como os botões Salvar e Atualizar já não estão no formulário principal, é necessário substituir essa
funcionalidade. Para fazê-lo, você irá adicionar uma caixa de diálogo de confirmação nos métodos deleteRecord() e
deleteDetailRecord() . Se o usuário clicar em OK, o método salvar() será chamado e, conseqüentemente, o registro será excluído
permanentemente. Se o usuário clicar em Cancelar, o método refresh() será chamado e o registro será restaurado.

Para adicionar as caixas de diálogo de confirmação aos botões de exclusão:

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]
Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.8

1. Abra o formulário principal na visualização Código-fonte.

2. Exclua o método deleteRecord() e substitua-o pelo seguinte código:

@Action(enabledProperty = "recordSelected")
public void deleteRecord() {
Object[] options = {"OK", "Cancel"};
int n = JOptionPane.showConfirmDialog(null, "Delete the records permanently ? ", "Warning",
JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null);
if (n == JOptionPane.YES_OPTION) {
int[] selected = masterTable.getSelectedRows();
List<customerrecords.Customers> toRemove = new
ArrayList<customerrecords.Customers>(selected.length);
for (int idx = 0; idx < selected.length; idx++) {
customerrecords.Customers c = list.get(masterTable.convertRowIndexToModel(selected[idx]));
toRemove.add(c);
entityManager.remove(c);
}
list.removeAll(toRemove);
save().run();
} else {
refresh().run();
}
}

3. Pressione Ctrl-Shift-I para adicionar as instruções de importação ausentes.

4. Exclua o método deleteDetailRecord() e substitua-o pela nova versão do método:

@Action(enabledProperty = "detailRecordSelected")
public void deleteDetailRecord() {
Object[] options = {"OK", "Cancel"};
int n = JOptionPane.showConfirmDialog(null, "Delete the records permanently ? ", "Warning",
JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null);
if (n == JOptionPane.YES_OPTION) {
int index = masterTable.getSelectedRow();
customerrecords.Customers c = list.get(masterTable.convertRowIndexToModel(index));
List<customerrecords.Orders> os = c.getOrdersCollection();
int[] selected = detailTable.getSelectedRows();
List<customerrecords.Orders> toRemove = new ArrayList<customerrecords.Orders>(selected.length);
for (int idx = 0; idx < selected.length; idx++) {
selected[idx] = detailTable.convertRowIndexToModel(selected[idx]);
int count = 0;
Iterator<customerrecords.Orders> iter = os.iterator();
while (count++ < selected[idx]) {
iter.next();
}
customerrecords.Orders o = iter.next();
toRemove.add(o);
entityManager.remove(o);
}
os.removeAll(toRemove);
masterTable.clearSelection();
masterTable.setRowSelectionInterval(index, index);
list.removeAll(toRemove);
save().run();
} else {
refresh().run();
}
}

Adicionando a funcionalidade de edição às caixas de diálogo


Agora você pode executar o aplicativo e clicar em Novos clientes para adicionar um novo registro. Ao pressionar Salvar na caixa
de diálogo Novos clientes, o registro é salvo. Ao pressionar Cancelar, o novo registro modificado volta a seu estado anterior.

No entanto, você não pode mais editar registros existentes, pois desativou a edição de tabelas no formulário principal. Para
resolver isso, você irá adicionar botões de edição ao formulário de clientes principal para que, dessa maneira, a edição de
registros existentes seja possível. Para a manipulação de eventos, você aproveitará a funcionalidade Ação do Swing Application
Framework.

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]
Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.8

Tornando os registros de clientes editáveis


Para adicionar o botão e o código de manipulação de eventos correspondente, faça o seguinte:

1. Abra a classe CustomerRecordsView e selecione a visualização de desenho.

2. Arraste o botão Novos clientes ligeiramente para a esquerda.

3. Arraste o botão da paleta para a abertura recentemente criada.

4. Clique com o botão direito do mouse no botão e escolha Definir ação.

5. No campo Ação, selecione Criar nova ação.

6. Para Método de ação, digite editCustomer .

7. Para Texto, digite Editar cliente .

8. Clique na guia Avançado e selecione recordSelected para a Propriedade ativada.


Isso gera um atributo de anotação para garantir que o botão e quaisquer outros disparadores de ações (por exemplo, um
item de menu) só sejam ativados após a seleção de um registro.

9. Clique em OK para fechar a caixa de diálogo.


A visualização Código-fonte do arquivo deve aparecer com o cursor no novo método editCustomer() recentemente gerado.

10. No método, cole o seguinte código:

setSaveNeeded(true);
JFrame mainFrame = CustomerRecordsApp.getApplication().getMainFrame();
CustomerEditor ce = new CustomerEditor(mainFrame, false);
ce.setCurrentRecord(list.get(masterTable.convertRowIndexToModel(masterTable.getSelectedRow())));
ce.setVisible(true);
if (ce.isCustomerConfirmed()) {
save().run();
} else {
refresh().run();
}

Grande parte desse código é diretamente copiado da ação newRecord . A principal diferença é a linha
ce.setCurrentRecord(list.get(masterTable.convertRowIndexToModel(masterTable.getSelectedRow()))); , que preenche o registro
atual na caixa de diálogo com o registro atualmente selecionado.

A parte Cliente do aplicativo está praticamente definida. Você pode adicionar, editar e excluir registros livremente da tabela
CLIENTES usando a GUI especializada que você criou.

Tornando os registros de pedidos editáveis


Para adicionar o botão Editar pedidos e seu código de manipulação de eventos, faça o seguinte:

1. Na visualização de desenho da classe CustomerRecordsView, exclua os botões Atualizar e Salvar.

2. Arraste o botão Excluir para a direita.

3. Arraste um botão da paleta para a abertura recentemente criada.

4. Clique com o botão direito do mouse no botão e escolha Definir ação.

5. No campo Ação, selecione Criar nova ação.

6. Para Método de ação, digite editOrder .

7. Para Texto, digite Edit Order .

8. Clique na guia Avançado e selecione detailRecordSelected para a Propriedade ativada.

9. Clique em OK para fechar a caixa de diálogo.

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]
Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.8

A visualização Código-fonte do arquivo deve aparecer com o cursor no novo método editOrder .

10. No método editOrder , cole o seguinte código:

setSaveNeeded(true);
int index = masterTable.getSelectedRow();
customerrecords.Customers c = list.get(masterTable.convertRowIndexToModel(index));
List<customerrecords.Orders> os = c.getOrdersCollection();
JFrame mainFrame = CustomerRecordsApp.getApplication().getMainFrame();
OrderEditor oe = new OrderEditor(mainFrame, false);
oe.setCurrentOrderRecord(os.get(detailTable.getSelectedRow()));
oe.setVisible(true);
if (oe.isOrderConfirmed()) {
save().run();
} else {
refresh().run();
}

Agora, quando você executar o aplicativo, todos os principais elementos estarão estabelecidos. Você pode criar, recuperar,
atualizar e excluir registros de clientes e pedidos. Na captura de tela abaixo, você pode ver a caixa de diálogo Editor de pedidos,
exatamente como aparece após selecionar um registro e pressionar o botão Editar pedidos.

A seção abaixo mostra outras ações que podem ser feitas para aperfeiçoar e ajustar o aplicativo.

Conversão de moedas, Verificação de dados e Pesquisa


Agora o aplicativo deve estar completamente funcional. No entanto, ainda há várias maneiras de aperfeiçoar o aplicativo. Veja
abaixo algumas maneiras para melhorar o aplicativo.

Convertendo a moeda na visualização principal


Você lidou com a formatação de datas e moedas no Editor de pedidos, mas ainda não fez o mesmo para a classe
CustomerRecordsView. Não é necessário realizar ações no campo de data. O formato passou de forma efetiva entre o Editor de
pedidos e o formulário principal. No entanto, o mesmo não se aplica ao campo Preço. Será necessário adicionar uma classe de
formatador de moedas para renderizar esse campo corretamente.

Para renderizar o campo Preço com o formato de moedas na visualização principal:

1. Na janela Projetos, clique com o botão direito do mouse na classe CurrencyCellRenderer e escolha Compilar arquivo.

2. Abra a classe CustomerRecordsView e alterne para a visualização de desenho.

3. Arraste a classe CurrencyCellRenderer da janela Projetos e solte-o na área em branco ao redor do formulário.
Um nó denominado currencyCellRenderer1 deve aparecer na janela Inspetor.

4. No formulário, clique com o botão direito do mouse na tabela mais abaixo e escolha Conteúdo da tabela.

5. Clique na guia Coluna.

6. Selecione a coluna de preços .

7. Na caixa de combinação Renderizador, selecione currencyCellRenderer1 .

Agora, quando você executar o aplicativo, o preço deverá aparecer com o símbolo de dólar (US$), um ponto decimal e dois dígitos
após o ponto.

Adicionando uma função de pesquisa


Agora você adicionará uma função de pesquisa para a tabela de clientes. Você usará mecanismos que já existem no Swing e na
biblioteca de vinculação de beans. Você criará uma vinculação entre a propriedade rowSorter da tabela mestre e um campo de

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]
Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.8

texto para a string de pesquisa. Para essa vinculação, será necessário um conversor de vinculações para que a tabela saiba como
responder à string de pesquisa.

Primeiro, adicione um rótulo e um campo de texto para o campo de pesquisa, como exibido abaixo.

Agora você adicionará uma classe de conversores ao projeto.

1. Na janela Projetos, clique com o botão direito do mouse na classe RowSorterToStringConverter e escolha Compilar arquivo.

2. Arraste a classe da janela Projetos e solte-a na área em branco ao redor do formulário.

3. Na janela Inspetor, selecione o nó rowSorterToStringConverter1 e defina a propriedade da tabela como masterTable .

Você usará esse conversor durante a criação da vinculação.

Para criar a vinculação:

1. No formulário principal, clique com o botão direito do mouse o campo de texto Pesquisa e escolha Vincular > texto.

2. Na caixa de diálogo Vincular, selecione masterTable como a origem da vinculação e rowSorter como a expressão.

3. Clique na guia Avançado da caixa de diálogo.

4. Na caixa de combinação Conversor, selecione rowSorterToStringConverter1 .

5. Clique em OK para fechar a caixa de diálogo e gerar o código de vinculação.

Agora, quando você executar o aplicativo, poderá digitar no campo Filtro de pesquisa e verá que a lista de filas reduziu-se apenas
às filas que contêm texto que corresponde ao que você digitou.

No entanto, a adição desse recurso de pesquisa cria um efeito indesejado. Se você usar a pesquisa e clicar em Novo cliente, será
exibida uma exceção porque o código usado para selecionar a nova fila é determinado de acordo com o número de registros na
tabela do banco de dados e não pelo número de registros atualmente exibidos na tabela.

Para corrigir essa exceção:

Substitua a linha a seguir no newRecord :

int row = list.size() - 1;

por:

int row = masterTable.getRowCount() - 1;

Verificando o formato da data


Embora exista um formatador de data na caixa de diálogo Editor de pedidos, você ainda não especificou o que deve ser feito
quando o usuário inserir a data equivocada. O comportamento padrão é retornar para a data válida previamente inserida. Para
personalizar esse comportamento, é possível especificar um verificador para o campo. Você pode usar a classe DateVerifier, que
está entre as classes de utilidades para esse projeto.

Para conectar o verificador de datas à coluna Data do pedido:

1. Na janela Projetos, clique com o botão direito do mouse na classe DateVerifier e escolha Compilar arquivo.

2. Abra o OrderEditor e alterne para a visualização de desenho.

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]
Criando um aplicativo de banco de dados de área de trabalho Java personalizado - Tutorial do NetBeans 6.7/6.8

3. Arraste a classe DateVerifier da janela Projetos para o espaço em branco que rodeia o formulário.

4. Selecione o campo de texto formatado para a Data.

5. Na janele Propriedades, clique na guia Propriedades e selecione o dateVerifier1 da caixa de combinação para a
propriedade Inserir verificador. Essa propriedade é exibida na seção Outras propriedades da guia.

Envie-nos seus comentários

Consulte também
Para uma introdução mais geral do uso do construtor de GUIs do IDE, consulte Introdução à construção de GUIs.

Para um guia mais abrangente sobre os recursos de desenho do Construtor de GUIs, incluindo demonstrações em vídeo dos vários
recursos, consulte Criando um GUI Swing no NetBeans IDE.

Para ver como você pode usar o modelo de projeto Aplicativo de área de trabalho Java para construir um aplicativo de banco de
dados com uma visualização Mestre/Detalhe, consulte Construindo um aplicativo de área de trabalho Java.

Para outras informaçes sobre o desenvolvimento de aplicativo Java no IDE, consulte Trilha de aprendizado da programação em
Java e IDE básica.

Para obter mais informações sobre a vinculação de beans, consulte a página do projeto Vinculação de beans em java.net.

Para obter mais informações sobre a vinculação de beans no IDE, consulte Vinculando beans e dados em um aplicativo de área de
trabalho.

Para obter mais informações sobre como usar o Hibernate para uma camada de persistência do aplicativo Swing, consulte Usando
Hibernate em um aplicativo Java Swing.

Para obter dicas e truques gerais sobre o uso do Construtor de GUIs no NetBeans IDE, consulte Perguntas freqüentes do Editor de
GUIs e Log da Web de Patrick Keegan.

By use of this website, you agree to the NetBeans Policies and Terms of Use.
Shop   SiteMap   About Us   Contact   Legal  
© 2010, Oracle Corporation and/or its affiliates.

 Sponsored by 
Companion
Projects:
               

http://netbeans.org/kb/docs/java/gui-db-custom_pt_BR.html[16-Oct-10 22:02:37]