Boa tarde a todos..
Estou eu mai um vez aqui pedindo a ajuda de vcs.
Dessa vez é o seguinte.
Estou fazendo um trabalho de conclusão de semestre e chegou em uma parte
que não consegui fazer de maneira alguma.. Eu não consegui encaixar a lógica ainda.
Bom vamos lá.
Nessa classe abaixo, que chamei de loja, criei basicamente duas Arrays como foi me pedido e os métodos necessários como
foi especificado pelo professor:
package pkgTP;
import java.util.ArrayList;
public class Loja {
ArrayList<Cliente> cliente;
ArrayList<Produto> produto;
public Loja(){
cliente = new ArrayList<Cliente>();
produto = new ArrayList<Produto>();
}
public void cadastraCliente(Cliente cli){
cliente.add(cli);
}
public void cadastraProduto(Produto pro){
produto.add(pro);
}
public void excluirCliente(int t){
cliente.remove(t);
}
public void excluirProduto(int t){
produto.remove(t);
}
public void imprimeCliente(String nome){
for(int i = 0; i < cliente.size(); i++){
if(cliente.get(i).getNome().equalsIgnoreCase(nome)){
System.out.println(cliente.get(i));
break;
}
}
}
}
Até ai tudo bem. Nessa próxima classe que está o meu problema:
É uma classe onde criei minha interface gráfica e estou pegando os dados do cadastro para passar para a classe
onde estao minhas ArrayList, vou mostrar a classe e abaixo explicarei o que não está dando certo:
package pkgTP;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class CadastraCliente extends JFrame implements ActionListener {
private JLabel lnome, lfone, lcelular, lrua, lcpf, lnumero, lcomplemento, lcidade,
lbairro, lcep, luf, ldata_nascimento, obrig;
private JTextField tnome, tfone, tcelular, trua, tcpf, tnumero,
tcomplemento, tcidade, tbairro, tcep, tdata_nascimento, tuf;
private JButton bcadastro, blimpar, bconsulta;
private Loja loja = new Loja();
public CadastraCliente(){
super("NewOptionStore - Cadastro de Clientes");
setSize(650,300);
//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new GridLayout(1,1));
JPanel pccli = new JPanel(null);
bcadastro = new JButton("Cadastrar");
blimpar = new JButton("Limpar");
lnome = new JLabel("*Nome:");
lrua = new JLabel("*Rua:");
lfone = new JLabel("Fone:");
lcelular = new JLabel("Cel:");
lcpf = new JLabel("*CPF:");
lnumero = new JLabel("*Numero:");
lcomplemento = new JLabel("Complemento:");
lbairro = new JLabel("*Bairro:");
lcidade = new JLabel("*Cidade:");
lcep = new JLabel("CEP:");
ldata_nascimento = new JLabel("*Data de Nascimento:");
luf = new JLabel("*UF:");
obrig = new JLabel("*Campos com asterisco são de preenchimento obrigatório.");
tnome = new JTextField();
trua = new JTextField();
tfone = new JTextField();
tcelular = new JTextField();
tcpf = new JTextField();
tnumero = new JTextField();
tcomplemento = new JTextField();
tbairro = new JTextField();
tcidade = new JTextField();
tcep = new JTextField();
tdata_nascimento = new JTextField();
tuf = new JTextField();
getContentPane().add(pccli);
pccli.add(bcadastro);
pccli.add(blimpar);
pccli.add(tnome);
pccli.add(lrua);
pccli.add(trua);
pccli.add(tfone);
pccli.add(tcelular);
pccli.add(lnome);
pccli.add(lfone);
pccli.add(lcelular);
pccli.add(lrua);
pccli.add(tcpf);
pccli.add(tnumero);
pccli.add(lnumero);
pccli.add(lcomplemento);
pccli.add(tcomplemento);
pccli.add(tbairro);
pccli.add(lbairro);
pccli.add(tcep);
pccli.add(lcep);
pccli.add(tcidade);
pccli.add(lcidade);
pccli.add(tdata_nascimento);
pccli.add(ldata_nascimento);
pccli.add(lcpf);
pccli.add(obrig);
pccli.add(tuf);
pccli.add(luf);
lnome.setBounds (10,20,120,20);
tnome.setBounds (60,20,500,20);
trua.setBounds (60,50,430,20);
lrua.setBounds (10,50,30,20);
tnumero.setBounds (560,50,80,20);
lnumero.setBounds (500,50,120,20);
lbairro.setBounds (10,80,50,20);
tbairro.setBounds (60,80,130,20);
lcomplemento.setBounds (200,80,190,20);
tcomplemento.setBounds (300,80,130,20);
lcidade.setBounds (10,110,60,20);
tcidade.setBounds (60,110,300,20);
lcep.setBounds (370,110,120,20);
tcep.setBounds (410,110,120,20);
tuf.setBounds (570,110,50,20);
luf.setBounds (540,110,30,20 );
lcpf.setBounds (10,140,100,20);
tcpf.setBounds (60,140,130,20);
ldata_nascimento.setBounds(200,140,150,20);
tdata_nascimento.setBounds(330,140,150,20);
tfone.setBounds (60,170,130,20);
lfone.setBounds (10,170,120,20);
tcelular.setBounds (240,170,130,20);
lcelular.setBounds (200,170,120,20);
bcadastro.setBounds (90,210,120,20);
blimpar.setBounds (230,210,120,20);
obrig.setBounds (280,240,400,20);
bcadastro.addActionListener(this);
blimpar.addActionListener(this);
}
public void actionPerformed(ActionEvent action){
if(action.getSource()== bcadastro){
Cliente cli = new Cliente();
if(tnumero.getText().equalsIgnoreCase("") || tnome.getText().equalsIgnoreCase("") || trua.getText().equalsIgnoreCase("") ||
tcpf.getText().equalsIgnoreCase("") || tbairro.getText().equalsIgnoreCase("") || tcidade.getText().equalsIgnoreCase("") ||
tdata_nascimento.getText().equalsIgnoreCase("") || tuf.getText().equalsIgnoreCase("") ){
JOptionPane.showMessageDialog(this, "Há campos de preenchimento obrigatório vazios!");
return;
}
try{
Integer.parseInt(tnumero.getText());
}catch(NumberFormatException nf){
JOptionPane.showMessageDialog(this, "Valor digitado no campo numero é um caracter inválido!");
return;
}
cli.setNome(lnome.getText());
cli.setEndereco(new Endereco(trua.getText(), tbairro.getText(), tcidade.getText(), tcomplemento.getText(),
tcep.getText(), tuf.getText(), Integer.parseInt(tnumero.getText())));
cli.setCpf(tcpf.getText());
cli.setFone(tfone.getText());
loja.cadastraCliente(cli);
}
else if(action.getSource() == blimpar){
tnumero.setText(""); tnome.setText(""); trua.setText(""); tcpf.setText(""); tbairro.setText(""); tcidade.setText("");
tdata_nascimento.setText(""); tuf.setText(""); tcelular.setText(""); tfone.setText(""); tcomplemento.setText("");
tcep.setText("");
}
}
}
Aliás nessa classe atualmente está dando tudo certo, porém minha dúvida é a seguinte:
Como vcs podem ver, eu instanciei um objeto da classe Loja na Classe CadastraCliente, para que eu pudesse,
depois de coletar os dados através da interface, enviar o objeto Cliente para a classe loja através do método que está
na classe loja cadastracliente()
private Loja loja = new Loja();
loja.cadastraCliente(cli);
Essa parte, acho que minha lógica foi correta, porém ai que está.
Cadastrar clientes não é a única coisa que tenho que fazer, tbm preciso pesquisar por um cliente, excluir um clientes e
outras coisas mais, que serão botões em uma interface gráfica principal, ou seja, terei uma janela principal com esses
botoes e ao clicar neles, deverão abrir por exemplo a janela onde cadastrarei cliente.
Até essa parte eu consegui fazer com essa classe olhem:
package pkgTP;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Testes extends JFrame implements ActionListener {
private JButton abr;
public Testes(){
super("Testes");
JPanel cad = new JPanel(new GridLayout(1,1));
getContentPane().add(cad);
abr = new JButton("Cadastrar Clientes");
cad.add(abr);
abr.addActionListener(this);
}
public void actionPerformed(ActionEvent action) {
if(action.getSource() == abr){
CadastraCliente obj = new CadastraCliente();
obj.setVisible(true);
obj.setResizable(false);
}
}
public static void main(String[] args) {
Testes t = new Testes();
t.setVisible(true);
t.setLocation(200, 200);
t.setSize(650,300);
t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Nessa classe de testes, coloquei o botão cadastrar cliente e quando clico nele, abre a minha interface gráfica de cadastrar clientes e está dando tudo certo. Agora vem minha dúvida principal: Quando fui criar por exemplo uma classe que encontrasse clientes, não consegui achar um jeito de usar o objeto loja que instanciei na classe CadastraCliente, pois até onde eu sei, todos os dados que coleto no cadastro de clientes vão para essa instancia do objeto e então se eu instanciar outra loja em outra interface como fiz na CadastraCliente para poder por exemplo buscar algum cliente por nome, não daria certo, pois nesse objeto não haveria nenhum cliente cadastrado.. Bom eu penso assim. Não sei se estou certo e errado e é por isso que preciso da ajuda de vcs..
Sei que o por ficou meio grande, mas é que estou precisando mesmo de ajuda..
Espero muito que possa solucionar isso para mim..
Pois como dizem é buscando que se evolui.
Grato
Pablo
PS.. qualquer coisa pergutem Ok!