SlideShare uma empresa Scribd logo
1 de 52
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.
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
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
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)
Observações:
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.
Selecione a tabela Cliente e configure a janela de Vincular, conforme segue.
Resultado
Observação: Faça o mesmo com o jTableCompras com a tabela compra na
guia Compras. Veja o resultado:
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:
Observação: Faça o mesmo procedimento para os campos da guia Compras com
o jTableCompras. Veja:
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.
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);
23
24
}
}
}
);
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) {
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());
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);
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
10
0
10
1
10
2
10
3
10
4
10
5
10
6
10
7
} else {
jTextFieldNome.setText(null);
jTextFieldId.setText(null);
jTextFieldCPF.setText(null);
jTextFieldEndereco.setText(null);
jTextFieldCidade.setText(null);
jTextFieldEstado.setText(null);
}
}
privatevoid salvarClienteEmInsercao() {
// Cria o objeto
Cliente cliente = new Cliente();
// Configura o objeto com os valores definidos nos campos
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());
if (cliente.armazenado()) { // Se armazenado objeto no BD
// Retira a linha em branco, selecionada na inserção, da lista e do JTableClientes
this.clienteList.remove(this.jTableClientes.getSelectedRow());
// Adiciona o novo "Cliente" gravado no BD, na lista e automaticamente no JTableClientes.
this.clienteList.add(cliente);
// Seleciona o último da lista
this.jTableClientes.setRowSelectionInterval(this.jTableClientes.getRowCount() - 1,
this.jTableClientes.getRowCount() - 1);
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;
}
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
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
}
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;
}
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);
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()));
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;
}
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?
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);
24
3
24
4
24
5
24
6
24
7
24
8
24
9
25
0
25
1
25
2
25
3
25
4
25
5
25
6
25
7
this.estadoCompra= EstadoCompra.CONSULTANDO_COMPRA;
}
}
}
25
8
25
9
26
0
26
1
26
2
26
3
26
4
26
5
26
6
26
7
26
8
26
9
27
0
27
1
27
2
27
3
27
4
27
5
27
6
27
7
27
8
27
9
28
0
28
1
28
2
28
3
28
4
28
5
28
6
28
7
28
8
28
9
29
0
29
1
29
2
29
3
29
4
29
5
29
6
29
7
29
8
29
9
30
0
30
1
30
2
30
3
30
4
30
5
30
6
30
7
30
8
30
9
31
0
31
1
31
2
31
3
31
4
31
5
31
6
31
7
31
8
31
9
32
0
32
1
32
2
32
3
32
4
32
5
32
6
32
7
32
8
32
9
33
0
33
1
33
2
33
3
33
4
33
5
33
6
33
7
33
8
33
9
34
0
34
1
34
2
34
3
34
4
34
5
34
6
34
7
34
8
34
9
35
0
35
1
35
2
35
3
35
4
35
5
35
6
35
7
35
8
35
9
36
0
36
1
36
2
36
3
36
4
36
5
36
6
36
7
36
8
36
9
37
0
37
1
37
2
37
3
37
4
37
5
37
6
37
7
37
8
37
9
38
0
38
1
38
2
38
3
38
4
38
5
38
6
38
7
38
8
38
9
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:
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
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
try {
if (this.estadoCliente == EstadoCliente.INSERINDO_CLIENTE) {
this.salvarClienteEmInsercao();
} else {
this.salvarClienteEmAtualização();
}
} catch (Exception e) {
JOptionPane.showMessageDialog(rootPane, e);
}
}
privatevoid jButtonCancelarClienteActionPerformed(java.awt.event.ActionEvent evt)
{
// Código para cancelar alteração ou inserção de cliente
try {
if (this.estadoCliente == EstadoCliente.INSERINDO_CLIENTE) {
this.cancelarInsercaoCliente();
} else {
this.cancelarAtualizacaoCliente();
}
} catch (Exception e) {
JOptionPane.showMessageDialog(rootPane, e);
}
}
privatevoid jButtonExcluirClienteActionPerformed(java.awt.event.ActionEvent evt) {
// Código para excluir o cliente
if (JOptionPane.showConfirmDialog(rootPane, "Confirma a exclusão deste registro?") == JOptionPane.OK_OPTION)
{
try {
this.excluirCliente();
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);
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) {
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);
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:
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
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,
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

Mais conteúdo relacionado

Mais procurados

Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosMario Jorge Pereira
 
Arquitetura de Computadores: Álgebra Booleana
Arquitetura de Computadores: Álgebra BooleanaArquitetura de Computadores: Álgebra Booleana
Arquitetura de Computadores: Álgebra BooleanaAlex Camargo
 
Aula 5 - Estruturas de seleção encadeada - parte 2
Aula 5 - Estruturas de seleção encadeada - parte 2Aula 5 - Estruturas de seleção encadeada - parte 2
Aula 5 - Estruturas de seleção encadeada - parte 2Pacc UAB
 
Gerenciamento de Memoria
Gerenciamento de MemoriaGerenciamento de Memoria
Gerenciamento de Memoriaaudineisilva1
 
50978145 algoritmos-exercicios-resolvidos
50978145 algoritmos-exercicios-resolvidos50978145 algoritmos-exercicios-resolvidos
50978145 algoritmos-exercicios-resolvidosEdvan Mateó
 
Evolução de software 1 - Engenharia de Software
Evolução de software 1 - Engenharia de SoftwareEvolução de software 1 - Engenharia de Software
Evolução de software 1 - Engenharia de SoftwareEduardo Mendes
 
Arquitetura e Organização de Computadores: Evolução e Desempenho de Computadores
Arquitetura e Organização de Computadores: Evolução e Desempenho de ComputadoresArquitetura e Organização de Computadores: Evolução e Desempenho de Computadores
Arquitetura e Organização de Computadores: Evolução e Desempenho de ComputadoresWellington Oliveira
 
Avarias mais comuns nos computadores
Avarias mais comuns nos computadoresAvarias mais comuns nos computadores
Avarias mais comuns nos computadoresedlander
 
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...Marcello Thiry
 
Operador de Microcomputador.pdf
Operador de Microcomputador.pdfOperador de Microcomputador.pdf
Operador de Microcomputador.pdfOs Fantasmas !
 
Prova informatica - nivel c
Prova  informatica - nivel cProva  informatica - nivel c
Prova informatica - nivel cLucianoLLC
 
Introdução à Informática
Introdução à InformáticaIntrodução à Informática
Introdução à InformáticaFabio Marques
 
Arquitetura de Hardware
Arquitetura de HardwareArquitetura de Hardware
Arquitetura de HardwareMiguel Correia
 
Logica Algoritmo 08 Recursividade
Logica Algoritmo 08 RecursividadeLogica Algoritmo 08 Recursividade
Logica Algoritmo 08 RecursividadeRegis Magalhães
 
Produto cartesiano e função 1º ano do ensino medio
Produto cartesiano e função   1º ano do ensino medioProduto cartesiano e função   1º ano do ensino medio
Produto cartesiano e função 1º ano do ensino medioSimone Smaniotto
 

Mais procurados (20)

Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e Algoritmos
 
Arquitetura de Computadores: Álgebra Booleana
Arquitetura de Computadores: Álgebra BooleanaArquitetura de Computadores: Álgebra Booleana
Arquitetura de Computadores: Álgebra Booleana
 
Aprendendo a Usar o Netbeans
Aprendendo a Usar o NetbeansAprendendo a Usar o Netbeans
Aprendendo a Usar o Netbeans
 
Sdac
SdacSdac
Sdac
 
Aula 5 - Estruturas de seleção encadeada - parte 2
Aula 5 - Estruturas de seleção encadeada - parte 2Aula 5 - Estruturas de seleção encadeada - parte 2
Aula 5 - Estruturas de seleção encadeada - parte 2
 
Gerenciamento de Memoria
Gerenciamento de MemoriaGerenciamento de Memoria
Gerenciamento de Memoria
 
50978145 algoritmos-exercicios-resolvidos
50978145 algoritmos-exercicios-resolvidos50978145 algoritmos-exercicios-resolvidos
50978145 algoritmos-exercicios-resolvidos
 
Evolução de software 1 - Engenharia de Software
Evolução de software 1 - Engenharia de SoftwareEvolução de software 1 - Engenharia de Software
Evolução de software 1 - Engenharia de Software
 
Arquitetura e Organização de Computadores: Evolução e Desempenho de Computadores
Arquitetura e Organização de Computadores: Evolução e Desempenho de ComputadoresArquitetura e Organização de Computadores: Evolução e Desempenho de Computadores
Arquitetura e Organização de Computadores: Evolução e Desempenho de Computadores
 
Avarias mais comuns nos computadores
Avarias mais comuns nos computadoresAvarias mais comuns nos computadores
Avarias mais comuns nos computadores
 
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição  (ver...
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...
 
Operador de Microcomputador.pdf
Operador de Microcomputador.pdfOperador de Microcomputador.pdf
Operador de Microcomputador.pdf
 
Prova informatica - nivel c
Prova  informatica - nivel cProva  informatica - nivel c
Prova informatica - nivel c
 
Trabalho de Conclusão do Módulo de Hardware TI 2012/B Senac Jundiaí
Trabalho de Conclusão do Módulo de Hardware TI 2012/B Senac JundiaíTrabalho de Conclusão do Módulo de Hardware TI 2012/B Senac Jundiaí
Trabalho de Conclusão do Módulo de Hardware TI 2012/B Senac Jundiaí
 
Introdução à Informática
Introdução à InformáticaIntrodução à Informática
Introdução à Informática
 
Plano de aula de informática pronto
Plano de aula de informática prontoPlano de aula de informática pronto
Plano de aula de informática pronto
 
Arquitetura de Hardware
Arquitetura de HardwareArquitetura de Hardware
Arquitetura de Hardware
 
Logica Algoritmo 08 Recursividade
Logica Algoritmo 08 RecursividadeLogica Algoritmo 08 Recursividade
Logica Algoritmo 08 Recursividade
 
Produto cartesiano e função 1º ano do ensino medio
Produto cartesiano e função   1º ano do ensino medioProduto cartesiano e função   1º ano do ensino medio
Produto cartesiano e função 1º ano do ensino medio
 
Processamento paralelo
Processamento paraleloProcessamento paralelo
Processamento paralelo
 

Semelhante a Cadastro de Clientes em Java com NetBeans e MySQL

Cadastro de clientes em c#
Cadastro de clientes em c#Cadastro de clientes em c#
Cadastro de clientes em c#André Luiz
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer FacesEduardo Bregaida
 
Passo a-passo-pedidos
Passo a-passo-pedidosPasso a-passo-pedidos
Passo a-passo-pedidosDiego Alves
 
Aplicações java com netbeans
Aplicações  java com  netbeansAplicações  java com  netbeans
Aplicações java com netbeansThalles Anderson
 
Apostila de Crystal Report
Apostila de Crystal ReportApostila de Crystal Report
Apostila de Crystal ReportAndre Nascimento
 
Aula 05 banco de dados em asp.net (site do administrador - alterar e excluir)
Aula 05   banco de dados em asp.net (site do administrador - alterar e excluir)Aula 05   banco de dados em asp.net (site do administrador - alterar e excluir)
Aula 05 banco de dados em asp.net (site do administrador - alterar e excluir)Gabriel Bugano
 
JavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoJavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoEduardo Bregaida
 
ODI Series - Importar Arquivos Texto para Tabelas
ODI Series - Importar Arquivos Texto para TabelasODI Series - Importar Arquivos Texto para Tabelas
ODI Series - Importar Arquivos Texto para TabelasCaio Lima
 
Apresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáApresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáZarathon Maia
 
Observable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI AndroidObservable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI AndroidVinícius Thiengo
 
Manual vsflexgrid
Manual vsflexgridManual vsflexgrid
Manual vsflexgridmarcos0512
 
Aula 03 banco de dados em asp.net (cadastrar)
Aula 03   banco de dados em asp.net (cadastrar)Aula 03   banco de dados em asp.net (cadastrar)
Aula 03 banco de dados em asp.net (cadastrar)Gabriel Bugano
 

Semelhante a Cadastro de Clientes em Java com NetBeans e MySQL (20)

Vba cadastro de clientes
Vba   cadastro de clientesVba   cadastro de clientes
Vba cadastro de clientes
 
Cadastro de clientes em c#
Cadastro de clientes em c#Cadastro de clientes em c#
Cadastro de clientes em c#
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer Faces
 
Passo a-passo-pedidos
Passo a-passo-pedidosPasso a-passo-pedidos
Passo a-passo-pedidos
 
15 web panels-curso gxxbr
15 web panels-curso gxxbr15 web panels-curso gxxbr
15 web panels-curso gxxbr
 
Aplicações java com netbeans
Aplicações  java com  netbeansAplicações  java com  netbeans
Aplicações java com netbeans
 
Apostila de Crystal Report
Apostila de Crystal ReportApostila de Crystal Report
Apostila de Crystal Report
 
12 db atualizacao-curso-gxxbr
12 db atualizacao-curso-gxxbr12 db atualizacao-curso-gxxbr
12 db atualizacao-curso-gxxbr
 
Aula 05 banco de dados em asp.net (site do administrador - alterar e excluir)
Aula 05   banco de dados em asp.net (site do administrador - alterar e excluir)Aula 05   banco de dados em asp.net (site do administrador - alterar e excluir)
Aula 05 banco de dados em asp.net (site do administrador - alterar e excluir)
 
JavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em DesenvolvimentoJavaServer Faces Produtividade em Desenvolvimento
JavaServer Faces Produtividade em Desenvolvimento
 
Projeto locadora
Projeto locadoraProjeto locadora
Projeto locadora
 
ODI Series - Importar Arquivos Texto para Tabelas
ODI Series - Importar Arquivos Texto para TabelasODI Series - Importar Arquivos Texto para Tabelas
ODI Series - Importar Arquivos Texto para Tabelas
 
Apresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáApresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc Quixadá
 
14 patterns-curso gxxbr
14 patterns-curso gxxbr14 patterns-curso gxxbr
14 patterns-curso gxxbr
 
Ns tutorial so
Ns tutorial soNs tutorial so
Ns tutorial so
 
Observable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI AndroidObservable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI Android
 
Apostila de Power BI - Aula 1.pdf
Apostila de Power BI - Aula 1.pdfApostila de Power BI - Aula 1.pdf
Apostila de Power BI - Aula 1.pdf
 
Manual vsflexgrid
Manual vsflexgridManual vsflexgrid
Manual vsflexgrid
 
Aula 03 banco de dados em asp.net (cadastrar)
Aula 03   banco de dados em asp.net (cadastrar)Aula 03   banco de dados em asp.net (cadastrar)
Aula 03 banco de dados em asp.net (cadastrar)
 
Tutorial +login+mvc
Tutorial +login+mvcTutorial +login+mvc
Tutorial +login+mvc
 

Cadastro de Clientes em Java com NetBeans e MySQL

  • 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);
  • 17.
  • 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);
  • 21. 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 10 0 10 1 10 2 10 3 10 4 10 5 10 6 10 7 } else { jTextFieldNome.setText(null); jTextFieldId.setText(null); jTextFieldCPF.setText(null); jTextFieldEndereco.setText(null); jTextFieldCidade.setText(null); jTextFieldEstado.setText(null); } } privatevoid salvarClienteEmInsercao() { // Cria o objeto Cliente cliente = new Cliente(); // Configura o objeto com os valores definidos nos campos 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()); if (cliente.armazenado()) { // Se armazenado objeto no BD // Retira a linha em branco, selecionada na inserção, da lista e do JTableClientes this.clienteList.remove(this.jTableClientes.getSelectedRow()); // Adiciona o novo "Cliente" gravado no BD, na lista e automaticamente no JTableClientes. this.clienteList.add(cliente); // Seleciona o último da lista this.jTableClientes.setRowSelectionInterval(this.jTableClientes.getRowCount() - 1, this.jTableClientes.getRowCount() - 1);
  • 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);
  • 41.
  • 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
  • 45. 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 try { if (this.estadoCliente == EstadoCliente.INSERINDO_CLIENTE) { this.salvarClienteEmInsercao(); } else { this.salvarClienteEmAtualização(); } } catch (Exception e) { JOptionPane.showMessageDialog(rootPane, e); } } privatevoid jButtonCancelarClienteActionPerformed(java.awt.event.ActionEvent evt) { // Código para cancelar alteração ou inserção de cliente try { if (this.estadoCliente == EstadoCliente.INSERINDO_CLIENTE) { this.cancelarInsercaoCliente(); } else { this.cancelarAtualizacaoCliente(); } } catch (Exception e) { JOptionPane.showMessageDialog(rootPane, e); } } privatevoid jButtonExcluirClienteActionPerformed(java.awt.event.ActionEvent evt) { // Código para excluir o cliente if (JOptionPane.showConfirmDialog(rootPane, "Confirma a exclusão deste registro?") == JOptionPane.OK_OPTION) { try { this.excluirCliente();
  • 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