1. Cadastro de Clientes em
JAVA no Netbeans
http://partilho.com.br/java-netbeans/projetos-java-netbeans/cadastro-de-clientes-java-
netbeans/#Netbeans8211Gerandoum_Cadastro_de_Clientes_com_Interface
dezembro 30, 2013Projetos JAVA NetbeansCadastro de Clientes, JAVA, NetBeans, Projeto
Conteúdo [Esconder]
1 Netbeans – Gerando um Cadastro de Clientes com Interface
2 Passos para Criar o Cadastro de Clientes
o 2.1 Criar o Cadastro de Clientes sem Interface
o 2.2 Criar Apresentações
2.2.1 A. Criar um pacote chamado apresentacao
2.2.2 B. Criar as apresentações (jFrame) Principal, Clientes e Compras
o 2.3 Vinculando BD, jTable e Componentes
2.3.1 A. Vinculando BD e jTable
2.3.2 B. Vinculando jTable e Campos no jFrame
o 2.4 Configuração de Lists
2.4.1 A. Configurando Lists como observáveis
2.4.2 B. Criando um evento valueChanged para o jTableCliente
o 2.5 Métodos e Propriedades a Adicionar
o 2.6 Configurar Eventos
2.6.1 A. Definição dos eventos
2.6.1.1 Eventos em JFrameClientes
2.6.1.2 Eventos em JFrameCadastroCliente
2.6.2 B. Atribuição dos eventos de alteração de campo
o 2.7 Código final de teste
3 Exercícios
4 Referências
o 4.1 Netbeans – JPA eclipselink
o 4.2 Netbeans JPA Tutorial
o 4.3 Tutorial JPA
o 4.4 Toolkit Swing
o 4.5 Calculadora em JAVA Aprenda muito Neste Projeto
o 4.6 Agenda em JAVA – semelhante a este Projeto
o 4.7 Query em JAVA
o 4.8 Persistencia em JAVA
o 4.9 JPA Hibernate
Netbeans – Gerando um Cadastro de Clientes com
Interface
Nesta postagem você vai aprender a criar um pequeno e simples cadastro de clientes
com interface, no Netbeans, utilizando banco de dados e tabelas MySQL e JPA.
2. Queremos dizer que o código fonte deste projeto no Netbeans, funcionando, pode ser
baixado em Cadastro de Clientes Simples. Talvez com ele, seu aprendizado seja mais
rápido. Quem sabe! Caso você encontre problemas, afinal nada é perfeito, dúvidas,
sugestões, críticas etc, escreva-nos. Muito obrigado por sua participação. Acompanhe!
Passos para Criar o Cadastro de Clientes
Em alguns casos, siga as elipses ou indicações nas imagens para criar o BD Cadastro
de Clientes. Lembre-se que o MySQL e o Netbeans devem estar instalados
em sua máquina.
Apenas para dar um sentido, a imagem abaixo representa as camadas que armazenarão
as classes do sistema em JAVA no Netbeans.
Para saber mais sobre desenvolvimento em camadas veja wikipédia
Criar o Cadastro de Clientes sem Interface
3. Para isto você deve criar ou utilizar exatamente a aplicação desenvolvida neste
link: Cadastro Cliente JAVA JPA sem Interface Netbeans
Criar Apresentações
A. Criar um pacote chamado apresentacao
Nele serão armazenados os jFrames da Aplicação. Caso não saiba como criar um
pacote no Netbeans, veja este link: Criar um pacote chamado controle
B. Criar as apresentações (jFrame) Principal, Clientes e Compras
jFrame principal, no pacote apresentacao, jFrameCadastroCliente
4. Crie o jFrame abaixo arrastando componentes e esteja atento ao nome dado a eles na
guia Navegador à esquerda. Para mudar o nome da variável, uma opção é a de clicar
com o botão direito do mouse sobre o componente no jFrame e escolher Alterar o nome
da Variável…. Após preparado o jFrame deve estar exatamente como segue.
No mesmo pacote, crie os frames e mais ou menos os Layouts, abaixo, ficando atento
aos nomes dos componentes. Observe que o prefixo jTextField diz respeito ao Campo
de Texto na paleta à direita, jLabel ao Label, jButton ao Botão (A importância de
manter os mesmos nomes de variáveis apresentados nas imagens, está no fato, de que
à frente, códigos serão utilizados e nestes, estes nomes serão mencionados em
programação)
6. 1- Os campos Id não devem ser editados pois o controle está por conta do próprio JPA.
Para desativá-los basta o botão direto do mouse sobre eles, propriedades e desabilite
a propriedade editable
2- Em jFormattedTextField com o botão direito do mouse sobre ele e
acessando propriedades e a propriedade formatterFactory é possível formatar o
campo para data, moeda etc. Veja na imagem:
Vinculando BD, jTable e Componentes
A. Vinculando BD e jTable
Inicie com o botão direito do mouse sobre o jTableClientes, selecionado, e siga baixo
pelas linhas e elipses.
7. Selecione a tabela Cliente e configure a janela de Vincular, conforme segue.
9. Observação: Faça o mesmo com o jTableCompras com a tabela compra na
guia Compras. Veja o resultado:
10. B. Vinculando jTable e Campos no jFrame
Botão direito em cada campo da
guia Clientes no jFrame (jTextFieldId com Id, jTextFieldNome com nome, jTextField
CPF com cpf, …) e vincule-os aos seus
correspondentes selectedElement do jTableClientes. Veja:
11. Observação: Faça o mesmo procedimento para os campos da guia Compras com
o jTableCompras. Veja:
12.
13. Configuração de Lists
A. Configurando Lists como observáveis
Isto permitirá que uma modificação no jTabel reflita imediatamente sobre o conteúdo dos
campos. Isto deve ser feito para o List clienteList e compraList. Veja abaixo.
14.
15. B. Criando um evento valueChanged para o jTableCliente
Isto permitirá que após a mudança de seleção de uma das linhas no jTabelClientes,
provoque uma atualização no jTableCompras com as compras do cliente selecionado.
Digite ou copie o código a seguir após a linha com o código jTableBinding.bind();,
conforme a imagem mais abaixo. Esteja atento aos comentários nas linhas e entenderá
o significado delas.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
jTableClientes.getSelectionModel () .addListSelectionListener(new ListSelectionListener() { // Adiciona um evento de
mudança de seleção ao jTabelClientes
public void valueChanged(ListSelectionEvent e) { // Evento de mudança de seleção
if (jTextFieldId.getText().isEmpty()) { // Não há cliente selecionado (Não há o que mostrar)
compraQuery = JavaApplicationCadastroClientePUEntityManager.createQuery("SELECT c FROM Comprac
WHERE c.idCliente.id=0"); // Gerar uma query compra vazia
} else {
compraQuery = JavaApplicationCadastroClientePUEntityManager.createQuery("SELECT c FROM Comprac
WHERE c.idCliente.id=" + jTextFieldId.getText()); // Buscar compras de cliente Id
}
compraList.clear(); // Limpa compras atual
compraList.addAll(compraQuery.getResultList()); // Adiciona ao list as compras buscadas
if (jTableCompras.getRowCount() > 0) { // Existe compras
jTableCompras.setRowSelectionInterval(0, 0); // Seleciona a primeira no jTable
} else {
// Limpa campos da guia compras se elas não existem
jTextFieldCompraDescricao.setText(null);
jTextFieldCompraId.setText(null);
jFormattedTextFieldCompraData.setText(null);
jFormattedTextFieldCompraPrcUnitario.setText(null);
jFormattedTextFieldCompraQtd.setText(null);
18. Métodos e Propriedades a Adicionar
Adicione as propriedades e os métodos abaixo no jFrameClientes e, para não confundir,
você pode fazê-lo antes do código marcado em cinza que inicia como // Variables
declaration – do not modify na imagem abaixo, por exemplo. Observe atentamente os
nomes dos métodos e os comentários. Desta maneira, você entenderá cada código
abaixo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
privateenum EstadoCliente {
INSERINDO_CLIENTE,
EDITANDO_CLIENTE,
CONSULTANDO_CLIENTE
}
privateenum EstadoCompra{
INSERINDO_COMPRA,
EDITANDO_COMPRA,
CONSULTANDO_COMPRA
}
privateEstadoCliente estadoCliente = EstadoCliente.CONSULTANDO_CLIENTE;
privateEstadoCompra estadoCompra= EstadoCompra.CONSULTANDO_COMPRA;
privateCliente cliente;
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
19. 23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
this.cliente = cliente;
}
privatevoid inserirCliente() {
Cliente cliente = new Cliente();
this.clienteList.add(cliente); // Insere no clienteList para forçar a aparição de uma linha em branco no JTableClientes
// Seleciona objeto inserido na tabela e estabelece foco no campo "nome" (Apenas dar a sensação de inserção)
this.jTableClientes.setRowSelectionInterval(this.jTableClientes.getRowCount() - 1,
this.jTableClientes.getRowCount() - 1);
this.jTextFieldNome.requestFocus();
//Configura botões paraestado de Inserção
this.jButtonInserirCliente.setEnabled(false);
this.jButtonExcluirCliente.setEnabled(false);
this.jButtonCancelarCliente.setEnabled(true);
this.jButtonSalvarCliente.setEnabled(true);
this.estadoCliente = EstadoCliente.INSERINDO_CLIENTE;
}
privatevoid salvarClienteEmAtualização() {
// Encontra e carrega o objeto de atualização com base no "Id"
if (cliente.encontradoId(Long.valueOf(this.jTextFieldId.getText()))) {
// Atualizao objeto com novos valores
cliente.setNome(this.jTextFieldNome.getText());
cliente.setCidade(this.jTextFieldCidade.getText());
cliente.setCpf(this.jTextFieldCPF.getText());
cliente.setEndereco(this.jTextFieldEndereco.getText());
cliente.setEstado(this.jTextFieldEstado.getText());
20. 54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
if (cliente.atualizado()) { // Se atualizado objeto no BD
//Configura botões paraestado de Consulta
this.jButtonInserirCliente.setEnabled(true);
this.jButtonExcluirCliente.setEnabled(this.jTableClientes.getRowCount() != 0); // Existe algo paraexcluir?
this.jButtonCancelarCliente.setEnabled(false);
this.jButtonSalvarCliente.setEnabled(false);
this.estadoCliente = EstadoCliente.CONSULTANDO_CLIENTE;
}
}
}
privatevoid encontrarCliente(String CPF) {
// Encontra e carrega o objeto de atualização com base no "Id"
if (CPF.isEmpty()) {
// Busca todos
clienteQuery = JavaApplicationCadastroClientePUEntityManager.createQuery("SELECT c FROM Cliente c");
} else {
clienteQuery = JavaApplicationCadastroClientePUEntityManager.createQuery("SELECT c FROM Cliente c
WHERE c.cpf = " + CPF);
}
clienteList.clear();
clienteList.addAll(clienteQuery.getResultList());
if (jTableClientes.getRowCount() > 0) {
jTableClientes.setRowSelectionInterval(0, 0);
22. 10
8
10
9
11
0
11
1
11
2
11
3
11
4
11
5
11
6
11
7
11
8
11
9
12
0
12
1
12
2
//Configura botões paraestado de Consulta
this.jButtonInserirCliente.setEnabled(true);
this.jButtonExcluirCliente.setEnabled(this.jTableClientes.getRowCount() != 0); // Existe algo paraexcluir?
this.jButtonCancelarCliente.setEnabled(false);
this.jButtonSalvarCliente.setEnabled(false);
this.estadoCliente = EstadoCliente.CONSULTANDO_CLIENTE;
}
}
privatevoid cancelarInsercaoCliente() {
// Remove a linha em branco da lista e automaticamente do JTable
this.clienteList.remove(this.jTableClientes.getSelectedRow());
if (this.jTableClientes.getRowCount() > 0) { // Se houver objetos na lista
// Seleciona o último da lista
this.jTableClientes.setRowSelectionInterval(this.jTableClientes.getRowCount() - 1,
this.jTableClientes.getRowCount() - 1);
}
//Configura botões paraestado de Consulta
this.jButtonInserirCliente.setEnabled(true);
this.jButtonExcluirCliente.setEnabled(this.jTableClientes.getRowCount() != 0); // Existe algo paraexcluir?
this.jButtonCancelarCliente.setEnabled(false);
this.jButtonSalvarCliente.setEnabled(false);
this.estadoCliente = EstadoCliente.CONSULTANDO_CLIENTE;
}
23. 12
3
12
4
12
5
12
6
12
7
12
8
12
9
13
0
13
1
13
2
13
3
13
4
13
5
13
6
13
7
privatevoid cancelarAtualizacaoCliente() {
// Busca o objeto com informações anteriores à atualização
Cliente cliente = new Cliente();
if (cliente.encontradoId(Long.valueOf(this.jTextFieldId.getText()))) {
// Atualizaos campos com dados sem alteração
this.jTextFieldNome.setText(cliente.getNome());
this.jTextFieldCidade.setText(cliente.getCidade());
this.jTextFieldCPF.setText(cliente.getCpf());
this.jTextFieldEndereco.setText(cliente.getEndereco());
this.jTextFieldEstado.setText(cliente.getEstado());
}
//Configura botões paraestado de Consulta
this.jButtonInserirCliente.setEnabled(true);
this.jButtonExcluirCliente.setEnabled(this.jTableClientes.getRowCount() != 0); // Existe algo paraexcluir?
this.jButtonCancelarCliente.setEnabled(false);
this.jButtonSalvarCliente.setEnabled(false);
this.estadoCliente = EstadoCliente.CONSULTANDO_CLIENTE;
}
privatevoid excluirCliente() {
Cliente cliente = new Cliente(); // Cria o objeto
cliente.setId(Long.valueOf(this.jTextFieldId.getText())); // Configura o id de exclusão
if (cliente.desarmazenado()) { // Exclui o objeto do BD
int linhaSelecionada = this.jTableClientes.getSelectedRow(); // Marca linha selecionada da tabela
this.clienteList.remove(this.jTableClientes.getSelectedRow()); // Remove objeto da lista e do JTabel
if (this.jTableClientes.getRowCount() > 0) { // Se houver linhas na tabela
24. 13
8
13
9
14
0
14
1
14
2
14
3
14
4
14
5
14
6
14
7
14
8
14
9
15
0
15
1
15
2
if (linhaSelecionada > 0) {
linhaSelecionada--;
}
this.jTableClientes.setRowSelectionInterval(linhaSelecionada, linhaSelecionada); // Seleciona linha marcada
}
//Configura botões paraestado de Consulta
this.jButtonInserirCliente.setEnabled(true);
this.jButtonExcluirCliente.setEnabled(this.jTableClientes.getRowCount() != 0); // Existe algo paraexcluir?
this.jButtonCancelarCliente.setEnabled(false);
this.jButtonSalvarCliente.setEnabled(false);
this.estadoCliente = EstadoCliente.CONSULTANDO_CLIENTE;
}
}
privatevoid configurarMudancaDeEstadoPorEdicaoCliente() {
//Configura botões paraEstado de Edição
this.jButtonInserirCliente.setEnabled(false);
this.jButtonExcluirCliente.setEnabled(false);
this.jButtonCancelarCliente.setEnabled(true);
this.jButtonSalvarCliente.setEnabled(true);
if (this.estadoCliente == EstadoCliente.CONSULTANDO_CLIENTE) {
if (this.jTableClientes.getRowCount() != 0) { // Existe algo para editar?
this.estadoCliente = EstadoCliente.EDITANDO_CLIENTE;
} else {
this.jButtonInserirClienteActionPerformed(null); // Executa uma inserção
}
25. 15
3
15
4
15
5
15
6
15
7
15
8
15
9
16
0
16
1
16
2
16
3
16
4
16
5
16
6
16
7
}
}
privatevoid configurarClienteInicializacao() {
// Configuração da Guia Clientes
if (this.jTableClientes.getRowCount() > 0) { // Se houver linhas na lista
this.jTableClientes.setRowSelectionInterval(0, 0); // Seleciona linha 0 (primeira)
}
//Configura botões paraestado de Consulta
this.jButtonInserirCliente.setEnabled(true);
this.jButtonExcluirCliente.setEnabled(this.jTableClientes.getRowCount() != 0); // Existe algo paraexcluir?
this.jButtonCancelarCliente.setEnabled(false);
this.jButtonSalvarCliente.setEnabled(false);
// Configuração da Guia Compras
if (this.jTableCompras.getRowCount() > 0) { // Se houver linhas na lista
this.jTableCompras.setRowSelectionInterval(0, 0); // Seleciona linha 0 (primeira)
}
//Configura botões parao Estado de Consulta
this.jButtonCompraInserir.setEnabled(true);
this.jButtonCompraExcluir.setEnabled(this.jTableCompras.getRowCount() != 0); // Existe registro paraexcluir?
this.jButtonCompraCancelar.setEnabled(false);
this.jButtonCompraSalvar.setEnabled(false);
this.estadoCompra= EstadoCompra.CONSULTANDO_COMPRA;
}
26. 16
8
16
9
17
0
17
1
17
2
17
3
17
4
17
5
17
6
17
7
17
8
17
9
18
0
18
1
18
2
privatevoid excluirCompra() {
Compra compra = new Compra(); // Cria o objeto
compra.setId(Long.valueOf(this.jTextFieldCompraId.getText())); // Configura o id de exclusão
if (compra.desarmazenado()) { // Exclui o objeto do BD
int linhaSelecionada = this.jTableCompras.getSelectedRow(); // Marca linha selecionada da tabela
this.compraList.remove(this.jTableCompras.getSelectedRow()); // Remove objeto da lista
if (this.jTableCompras.getRowCount() > 0) { // Se houver linhas na tabela
if (linhaSelecionada > 0) {
linhaSelecionada--;
}
this.jTableCompras.setRowSelectionInterval(linhaSelecionada, linhaSelecionada); // Seleciona linha marcada
}
//Configura botões parao Estado de Consulta
this.jButtonCompraInserir.setEnabled(true);
this.jButtonCompraExcluir.setEnabled(this.jTableCompras.getRowCount() != 0); // Existe algo paraexcluir?
this.jButtonCompraCancelar.setEnabled(false);
this.jButtonCompraSalvar.setEnabled(false);
this.estadoCompra= EstadoCompra.CONSULTANDO_COMPRA;
}
}
privatevoid configurarMudancaDeEstadoPorEdicaoCompra() {
//Configura botões paraEstado de Edição
this.jButtonCompraInserir.setEnabled(false);
this.jButtonCompraExcluir.setEnabled(false);
this.jButtonCompraCancelar.setEnabled(true);
this.jButtonCompraSalvar.setEnabled(true);
27. 18
3
18
4
18
5
18
6
18
7
18
8
18
9
19
0
19
1
19
2
19
3
19
4
19
5
19
6
19
7
if (this.estadoCompra== EstadoCompra.CONSULTANDO_COMPRA) {
if (this.jTableCompras.getRowCount() != 0) { // Existe algo para editar?
this.estadoCompra= EstadoCompra.EDITANDO_COMPRA;
} else {
this.jButtonInserirClienteActionPerformed(null); // Executa uma inserção
}
}
}
privatevoid cancelarInsercaoCompra() {
// Remove a linha em branco da lista e automaticamente do JTable
this.compraList.remove(this.jTableCompras.getSelectedRow());
if (this.jTableCompras.getRowCount() > 0) { // Se houver objetos na lista
// Seleciona o último da lista
this.jTableCompras.setRowSelectionInterval(this.jTableCompras.getRowCount() - 1,
this.jTableCompras.getRowCount() - 1);
}
}
privatevoid cancelarAtualizacaoCompra() {
// Busca o objeto com informações anteriores à atualização
Compra compra = new Compra();
if (compra.encontradoId(Long.valueOf(this.jTextFieldCompraId.getText()))) {
// Atualizaos campos com dados sem alteração
this.jTextFieldCompraDescricao.setText(compra.getDescricao());
this.jFormattedTextFieldCompraData.setText(new SimpleDateFormat("dd/MM/yyyy").format(compra.getData()));
28. 19
8
19
9
20
0
20
1
20
2
20
3
20
4
20
5
20
6
20
7
20
8
20
9
21
0
21
1
21
2
DecimalFormat decimalFormat = new DecimalFormat("¤ #,##0.00");
this.jFormattedTextFieldCompraPrcUnitario.setText(decimalFormat.format(compra.getPrecoUnitario()));
this.jFormattedTextFieldCompraQtd.setText(String.valueOf(compra.getQtde()));
}
//Configura botões parao Estado de Consulta
this.jButtonCompraInserir.setEnabled(true);
this.jButtonCompraExcluir.setEnabled(this.jTableCompras.getRowCount() != 0); // Existe registro paraexcluir?
this.jButtonCompraCancelar.setEnabled(false);
this.jButtonCompraSalvar.setEnabled(false);
this.estadoCompra= EstadoCompra.CONSULTANDO_COMPRA;
}
privatevoid inserirCompra() {
Compra compra = new Compra();
this.compraList.add(compra); // Insere no compraList para forçar a aparição de uma linha em branco no
JTableCompras
// Seleciona objeto inserido na tabela e estabelece foco no campo "nome" (Apenas dar a sensação de inserção)
this.jTableCompras.setRowSelectionInterval(this.jTableCompras.getRowCount() - 1,
this.jTableCompras.getRowCount() - 1);
this.jTextFieldCompraDescricao.requestFocus();
//Configura botões paraestado de Inserção
this.jButtonCompraInserir.setEnabled(false);
this.jButtonCompraExcluir.setEnabled(false);
this.jButtonCompraCancelar.setEnabled(true);
this.jButtonCompraSalvar.setEnabled(true);
this.estadoCompra= EstadoCompra.INSERINDO_COMPRA;
}
29. 21
3
21
4
21
5
21
6
21
7
21
8
21
9
22
0
22
1
22
2
22
3
22
4
22
5
22
6
22
7
privatevoid salvarCompraEmInsercao() throws ParseException {
// Cria e configura o objeto
Compra compra = new Compra();
// Configura o objeto com os valores definidos nos campos
Cliente cliente = new Cliente();
cliente.encontradoId(Long.valueOf(this.jTextFieldId.getText()));
compra.setIdCliente(cliente);
compra.setDescricao(this.jTextFieldCompraDescricao.getText());
SimpleDateFormat data = new SimpleDateFormat("dd/MM/yyyy");
compra.setData((java.util.Date) data.parse(this.jFormattedTextFieldCompraData.getText()));
DecimalFormat decimalFormat = new DecimalFormat("¤ #,##0.00");
compra.setPrecoUnitario(decimalFormat.parse(this.jFormattedTextFieldCompraPrcUnitario.getText()).doubleValue())
;
compra.setQtde(Integer.parseInt(this.jFormattedTextFieldCompraQtd.getText()));
if (compra.armazenado()) { // Se armazenado objeto no BD
// Retira o objeto da lista e o adiciona com o id
this.compraList.remove(this.jTableCompras.getSelectedRow());
this.compraList.add(compra);
// Seleciona o último da lista
this.jTableCompras.setRowSelectionInterval(this.jTableCompras.getRowCount() - 1,
this.jTableCompras.getRowCount() - 1);
// Configura botões em Estado de Consulta
this.jButtonCompraInserir.setEnabled(true);
this.jButtonCompraExcluir.setEnabled(this.jTableCompras.getRowCount() != 0); // Existe registro paraexcluir?
30. 22
8
22
9
23
0
23
1
23
2
23
3
23
4
23
5
23
6
23
7
23
8
23
9
24
0
24
1
24
2
this.jButtonCompraCancelar.setEnabled(false);
this.jButtonCompraSalvar.setEnabled(false);
this.estadoCompra= EstadoCompra.CONSULTANDO_COMPRA;
}
}
privatevoid salvarCompraEmAtualizacao() throws ParseException {
// Cria e configura o objeto
Compra compra = new Compra();
// Encontra e carrega o objeto de atualização
if (compra.encontradoId(Long.valueOf(this.jTextFieldCompraId.getText()))) {
// Atualizao objeto
compra.setDescricao(this.jTextFieldCompraDescricao.getText());
SimpleDateFormat data = new SimpleDateFormat("dd/MM/yyyy");
compra.setData((java.util.Date) data.parse(this.jFormattedTextFieldCompraData.getText()));
DecimalFormat decimalFormat = new DecimalFormat("¤ #,##0.00");
compra.setPrecoUnitario(decimalFormat.parse(this.jFormattedTextFieldCompraPrcUnitario.getText()).doubleValue
());
compra.setQtde(Integer.parseInt(this.jFormattedTextFieldCompraQtd.getText()));
if (compra.atualizado()) { // Se atualizado objeto no BD
// Configura botões em Estado de Consulta
this.jButtonCompraInserir.setEnabled(true);
this.jButtonCompraExcluir.setEnabled(this.jTableCompras.getRowCount() != 0); // Existe registro para excluir?
this.jButtonCompraCancelar.setEnabled(false);
this.jButtonCompraSalvar.setEnabled(false);
42. Configurar Eventos
A. Definição dos eventos
Para configurar os eventos você pode selecionar o componente e com o botão direito do
mouse acesse Eventos. Será mostrado um código com duas marcas em cinza. Entre
elas é que o código deve ser colocado. Veja exemplos:
43.
44. Eventos em JFram eClientes
Abaixo, está o código dos eventos programados para serem adicionados. Observe seus
nomes e saberá a que componentes pertencem.
1
2
3
4
5
6
7
privatevoid jButtonInserirClienteActionPerformed(java.awt.event.ActionEvent evt) {
// Código para inserir o cliente
this.inserirCliente();
}
privatevoid jButtonSalvarClienteActionPerformed(java.awt.event.ActionEvent evt) {
// Código para salvar o cliente
46. 39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
} catch (Exception e) {
JOptionPane.showMessageDialog(rootPane, e);
}
}
}
privatevoid jTextFieldNomeActionPerformed(java.awt.event.ActionEvent evt) {
// Código que provoca edição de cliente em modificação no campo Nome
this.configurarMudancaDeEstadoPorEdicaoCliente();
}
privatevoid formWindowOpened(java.awt.event.WindowEvent evt) {
// Código que inicializa o jFrameClientes
this.configurarClienteInicializacao();
}
privatevoid jTextFieldNomeKeyPressed(java.awt.event.KeyEvent evt) {
// Edição de cliente por alteração do campo Nome
this.configurarMudancaDeEstadoPorEdicaoCliente();
}
privatevoid jButtonCompraExcluirActionPerformed(java.awt.event.ActionEvent evt) {
// Código para exclusão de compra
if (JOptionPane.showConfirmDialog(rootPane, "Confirma a exclusão deste registro?") == JOptionPane.OK_OPTION)
{
try {
this.excluirCompra();
} catch (Exception e) {
JOptionPane.showMessageDialog(rootPane, e);
47. 70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
}
}
}
privatevoid jTextFieldCompraDescricaoKeyPressed(java.awt.event.KeyEvent evt) {
// Código para colocar em edição a compra por alteração do campo descrição
this.configurarMudancaDeEstadoPorEdicaoCompra();
}
privatevoid jButtonCompraCancelarActionPerformed(java.awt.event.ActionEvent evt)
{
// Código que cancela inserção ou edição de compra
try {
if (this.estadoCompra== EstadoCompra.INSERINDO_COMPRA) {
this.cancelarInsercaoCompra();
} else {
this.cancelarAtualizacaoCompra();
}
} catch (Exception e) {
JOptionPane.showMessageDialog(rootPane, e);
}
}
privatevoid jButtonCompraSalvarActionPerformed(java.awt.event.ActionEvent evt) {
// Código para salvar compra
try {
if (this.estadoCompra== EstadoCompra.INSERINDO_COMPRA) {
48. 101
102
103
104
105
106
107
108
109
110
111
112
113
114
this.salvarCompraEmInsercao();
} else {
this.salvarCompraEmAtualizacao();
}
} catch (Exception e) {
JOptionPane.showMessageDialog(rootPane, e);
}
}
privatevoid jButtonCompraInserirActionPerformed(java.awt.event.ActionEvent evt) {
// Código para inserir compra
this.inserirCompra();
}
privatevoid jButtonBuscarClienteActionPerformed(java.awt.event.ActionEvent evt) {
// código para encontrar cliente
this.encontrarCliente(this.jTextFieldCPFBusca.getText());
}
Eventos em JFram eCadastroCliente
Abaixo, está o código do evento programado para o jMenuItemCliente.
1
2
3
JFrameClientes jFrameClientes = new JFrameClientes();
jFrameClientes.setLocationRelativeTo(null);
jFrameClientes.setVisible(true);
49. B. Atribuição dos eventos de alteração de campo
Esta atribuição permite que a alteração de qualquer campo provoque a edição do
registro. A ideia é utilizar um mesmo evento para todos os campos de cada guia. Um dos
eventos em jFrameClientes, utilizados, são os pertencente ao campo Nome
(jTextFieldNome) na guia de cliente
(jTextFieldNomeActionPerformed e jTextFieldNomeKeyPressed) que serão
atribuídos a todos os outros nesta janela. Para isto, selecione todos os campos,
menos jTextFieldNome, com o mouse segurando a tecla Shift e com o botão direito do
mouse acessando Propriedades e a seguir Eventos, copie estes nomes de eventos aos
eventos ActionPerformed e KeyPressed, respectivamente. Veja:
O mesmo deve ser feito para o
evento jTextFieldCompraDescricaoKeyPressed pertencente ao
campo jTextFieldCompraDescricao, atribuindo-o as demais componentes de edição.
Abaixo:
50. Código final de teste
Digite o código abaixo na main da classe principal JavaApplicationCadastroCliente e
rode o programa.
1
2
3
JFrameCadastroCliente jFrameCadastroCliente = new JFrameCadastroCliente(); // Cria o Frame principal
jFrameCadastroCliente.setLocationRelativeTo(null); // Frame no centro
jFrameCadastroCliente.setVisible(true); // Mostrao Frame
51. Exercícios
Crie uma aplicação cadastro de fornecedores e vendas como a
apresentada acima onde os scripts para as tabelas em MySQL seguem:
1
2
3
4
5
6
create table `CadastroFornecedor`.fornecedor
(
id BIGINT not null primary key,
Nome VARCHAR(40) not null,
CNPJ VARCHAR(18) not null unique,
Endereco VARCHAR(80) not null,
52. 7
8
9
10
11
12
13
14
15
16
17
18
19
20
Cidade VARCHAR(15) not null,
Estado VARCHAR(2) not null
);
create table `CadastroFornecedor`.compra
(
id BIGINT not null primary key,
Data DATEnot null,
Descricao VARCHAR(40) not null,
QtdeINT not null,
PrecoUnitario DOUBLE PRECISION not null,
id_cliente BIGINT not null,
foreign key(id_fornecedor) references fornecedor(id)
)
Referências