Vou Mandar minhas principais classes ok:
Primeira Classe Loja: Minha classe principal:
[code]public class Loja {
ArrayList<Cliente> cliente;
ArrayList<Produto> produto;
public Loja(){
cliente = new ArrayList<Cliente>();
produto = new ArrayList<Produto>();
}
public void cadastraCliente(Cliente cli) /*throws IOException, ClassNotFoundException*/{
int id = cli.getId();
for(int i = 0; i < cliente.size(); i++){
Cliente rem = cliente.get(i);
if(rem.getId() == id){
JOptionPane.showMessageDialog(null, " Essa ID já está cadastrada!\n" +
"Impossível realizar o cadastro. Tente Novamente",
"Cadastrar Cliente", JOptionPane.ERROR_MESSAGE);
return;
}
}
cliente.add(cli);
//Arquivos.salvarEmArquivo(cliente,"Clientes");
JOptionPane.showMessageDialog(null, "Cliente cadastrado com sucesso!", "Cadastrar Cliente", JOptionPane.INFORMATION_MESSAGE);
//cliente = Arquivos.carregarDoArquivo("Clientes");
//System.out.println(cliente);
}
public void cadastraProduto(Produto pro){
produto.add(pro);
}
public void excluirCliente(int id){
int cont = 0;
for(int i = 0; i < cliente.size(); i++){
Cliente cli = cliente.get(i);
if(cli.getId() == id){
int op = JOptionPane.showConfirmDialog(null,
"Você deseja realmente remover esse Cliente?" +
"\n\n ID: " + cli.getId() +
"\n Nome: " + cli.getNome()+
"\n Fone: " + cli.getFone() +
"\n Celular: " + cli.getCelular() + "\n" +
"\n Endereço" +
"\n---------------------------------------------" +
"\n Rua: " + cli.getEndereco().getRua() +
"\n Numero: " + cli.getEndereco().getNumerocasa() +
"\n Bairro: " + cli.getEndereco().getBairro() +
"\n Complemento: " + cli.getEndereco().getComplemento() +
"\n Cidade: " + cli.getEndereco().getCidade() +
"\n Cep: " + cli.getEndereco().getCep() +
"\n UF: " + cli.getEndereco().getEstado() +
"\n",
"Remover Cliente", JOptionPane.OK_CANCEL_OPTION);
cont = 1;
if (op == JOptionPane.CANCEL_OPTION)
break;
cliente.remove(i);
if (op == JOptionPane.OK_OPTION)
JOptionPane.showMessageDialog(null, "Cliente removido com sucesso!", "Remover Cliente", JOptionPane.INFORMATION_MESSAGE);
break;
}
if(cont != 1)
JOptionPane.showMessageDialog(null, "Nenhum cliente encontrado!", "Remover Cliente", JOptionPane.ERROR_MESSAGE);
}
}
public void removerProduto(int cod){
for(int i = 0; i < produto.size(); i++){
if(produto.get(i).getCodigo() == cod){
produto.remove(i);
}
}
}
public void procurarCliente(){
ProcurarCli pc = new ProcurarCli();
pc.setVisible(true);
pc.setSize(300, 300);
}
private class ProcurarCli extends JFrame{
private JList lclientes;
private String l1 = "ID Cliente ";
public ProcurarCli(){
super("Procurar Cliente");
getContentPane().setLayout(new GridLayout(1,1));
JPanel pbuscacli = new JPanel(new GridLayout(1,1));
lclientes = new JList();
lclientes.setVisibleRowCount(5);
lclientes.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
pbuscacli.add(lclientes);
pbuscacli.add(new JScrollPane(lclientes));
getContentPane().add(pbuscacli);
popLista();
}
public void popLista(){
lclientes.setModel( new DefaultListModel());
DefaultListModel modelo = ( DefaultListModel ) lclientes.getModel();
modelo.addElement(l1);
for ( int i = 0; i < cliente.size(); i++ )
modelo.addElement(cliente.get(i).getId() + " " + cliente.get( i ).getNome() );
}
}//Fim da Classe ProcurarCli
public void procurarProduto(int op){
ProcurarPro pp = new ProcurarPro();
pp.setVisible(true);
pp.setSize(500, 300);
pp.popLista(op);
}
private class ProcurarPro extends JFrame{
private JList lprodutos;
private String l1 = " Produtos Encontrados: ";
private String l2 = " ";
public ProcurarPro(){
super("Procurar Produto");
getContentPane().setLayout(new GridLayout(1,1));
JPanel pbuscapro = new JPanel(new GridLayout(1,1));
lprodutos = new JList();
lprodutos.setVisibleRowCount(5);
lprodutos.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
pbuscapro.add(lprodutos);
pbuscapro.add(new JScrollPane(lprodutos));
getContentPane().add(pbuscapro);
}
public void popLista(int op){
lprodutos.setModel( new DefaultListModel());
DefaultListModel modelo = ( DefaultListModel ) lprodutos.getModel();
modelo.addElement(l1);
modelo.addElement(l2);
for ( int i = 0; i < produto.size(); i++ ){
if(op == 1){
if(produto.get(i) instanceof Calcado){
Calcado cal = (Calcado) produto.get(i);
modelo.addElement("Descrição: " + cal.getDescricao() + " Cor: " + cal.getCor() + " Número: " + cal.getNumero());} }
if(op == 2){
if(produto.get(i) instanceof Confecao){
Confecao con = (Confecao) produto.get(i);
modelo.addElement(con.getDescricao() + " " + con.getNumero());}}
if(op == 3){
if(produto.get(i) instanceof ProdutosCama){
ProdutosCama pc = (ProdutosCama) produto.get(i);
modelo.addElement(pc.getDescricao() + " " + pc.getTipo());}
}
}
}
}//Fim da Classe ProcurarProdutoPro
}
[/code]
Segunda Classe Cliente
[code]
public class Cliente {
private String nome, cpf, data_nascimento, fone, celular;
private Endereco endereco;
private int id;
public Cliente(int id, String nome, String cpf, String datanascimento, String fone,
String celular, Endereco endereco ){
this.nome = nome;
this.cpf = cpf;
this.data_nascimento = datanascimento;
this.fone = fone;
this.celular = celular;
this.endereco = endereco;
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getDatanascimento() {
return data_nascimento;
}
public void setDatanascimento(String datanascimento) {
this.data_nascimento = datanascimento;
}
public String getFone() {
return fone;
}
public void setFone(String fone) {
this.fone = fone;
}
public Endereco getEndereco() {
return endereco;
}
public void setEndereco(Endereco endereco) {
this.endereco = endereco;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setCelular(String celular) {
this.celular = celular;
}
public String getCelular() {
return celular;
}
[/code]
Terceira Classe Testes : Preste atenção nessa classe, que é aonde estava aparecendo um dos erros, em static Loja loja = new Loja();
Essa loja, é a que eu uso para cadastrar ou excluir tudo o que eu faço no programa.
[code]public class Testes extends JFrame implements ActionListener {
private JButton cadascli, removercli, cadasconf, removerpro, cadascal, removerprocalc,
cadascama, removerprocama, procurarcli, procurarpro;
static Loja loja = new Loja();
public Testes(){
super("Testes");
JPanel cad = new JPanel(new GridLayout(8,1));
getContentPane().add(cad);
cadascli = new JButton("Clique aqui para se cadastrar");
cad.add(cadascli);
removercli = new JButton("Remover Cliente");
cad.add(removercli);
cadasconf = new JButton("Cadastrar Produto - Confecção");
cad.add(cadasconf);
removerpro = new JButton("Remover Produto");
cad.add(removerpro);
cadascal = new JButton("Cadastrar Produto - Calçado");
cad.add(cadascal);
cadascama = new JButton("Cadastrar Produto - Produtos de Cama");
cad.add(cadascama);
procurarcli = new JButton("Procura Cliente");
cad.add(procurarcli);
procurarpro = new JButton("Procura Produto");
cad.add(procurarpro);
cadascli.addActionListener(this);
removercli.addActionListener(this);
cadasconf.addActionListener(this);
removerpro.addActionListener(this);
cadascal.addActionListener(this);
cadascama.addActionListener(this);
procurarcli.addActionListener(this);
procurarpro.addActionListener(this);
}
public void actionPerformed(ActionEvent action) {
if(action.getSource() == cadascli){
CadastraCliente obj = new CadastraCliente();
obj.setVisible(true);
obj.setLocation(400,200);
obj.setResizable(false);
}
if(action.getSource() == removercli){
String sid;
int iid;
if(Testes.loja.cliente.size() == 0){
JOptionPane.showMessageDialog(null, "Nenhum cliente cadastrado!", "Remover Cliente", JOptionPane.ERROR_MESSAGE);
return;
}
sid = JOptionPane.showInputDialog(null,"Digite a ID do cliente que deseja Remover: ", "Remover Cliente", JOptionPane.PLAIN_MESSAGE);
iid = Integer.parseInt(sid);
if(sid == null)
return;
else
loja.excluirCliente(iid);
}
if(action.getSource() == cadasconf){
CadastraConfeccao conf = new CadastraConfeccao();
conf.setVisible(true);
conf.setLocation(400,200);
conf.setResizable(false);
}
if(action.getSource() == removerpro){
if(Testes.loja.produto.size() == 0){
JOptionPane.showMessageDialog(null, "Nenhum Produto cadastrado!", "Remover Produto - Calçado", JOptionPane.ERROR_MESSAGE);
return;
}
RemoverProduto rempro = new RemoverProduto();
rempro.setVisible(true);
rempro.setLocation(400, 200);
rempro.setResizable(false);
}
if(action.getSource() == cadascal){
CadastraCalcado conf = new CadastraCalcado();
conf.setVisible(true);
conf.setLocation(400,200);
conf.setResizable(false);
}
if(action.getSource() == cadascama){
CadastraProdutosCama cam = new CadastraProdutosCama();
cam.setVisible(true);
cam.setLocation(400,200);
cam.setResizable(false);
}
if(action.getSource() == procurarcli){
if(loja.cliente.size() == 0)
JOptionPane.showMessageDialog(null, "Nenhum Cliente Cadastrado!", "Procurar Cliente", JOptionPane.ERROR_MESSAGE);
else
loja.procurarCliente();
}
if(action.getSource() == procurarpro){
if(loja.produto.size() == 0)
JOptionPane.showMessageDialog(null, "Nenhum Produto Cadastrado!", "Procurar Produto", JOptionPane.ERROR_MESSAGE);
else{
Opcao op = new Opcao();
op.setVisible(true);
op.setLocation(400, 200);
op.setResizable(false);
}
}
}
private class Opcao extends JFrame implements ActionListener{
private JButton op1, op2, op3;
private int op;
public Opcao(){
super("Buscar Produto");
setSize(600,300);
getContentPane().setLayout(new GridLayout(1,1));
JPanel bp = new JPanel(null);
op1 = new JButton("Buscar Calçados");
op2 = new JButton("Buscar Confecção");
op3 = new JButton("Buscar Cama");
bp.add(op1);
bp.add(op2);
bp.add(op3);
op1.setBounds(50, 100, 150, 20);
op2.setBounds(200, 100, 150, 20);
op3.setBounds(350, 100, 150, 20);
getContentPane().add(bp);
op1.addActionListener(this);
op2.addActionListener(this);
op3.addActionListener(this);
}
public void actionPerformed(ActionEvent action){
if(action.getSource()== op1){
setOp(1);
}
if(action.getSource()== op2){
setOp(2);
}
if(action.getSource()== op3){
setOp(3);
}
loja.procurarProduto(op);
}
public void setOp(int op) {
this.op = op;
}
public int getOp() {
return op;
}
}//Fim da classe Opcao
}
[/code]
Quarta classe CadastraCliente - o que está comentado, o próprio eclipse que colocou quando eu add os métodos que vc indicou
e os outros dados que estão comentados nas classes acima, coloquei, porque senão o programa não funcionaria e eu estava precisando
fazer alterações em outras coisas
[code]
public class CadastraCliente extends JFrame implements ActionListener {
private JLabel lnome, lfone, lcelular, lrua, lcpf, lnumero, lcomplemento, lcidade,
lbairro, lcep, luf, ldata_nascimento, lobrig, lid;
private JTextField tnome, tfone, tcelular, trua, tcpf, tnumero,
tcomplemento, tcidade, tbairro, tcep, tdata_nascimento, tuf, tid;
private JButton bcadastro, blimpar;
public CadastraCliente(){
super("NewOptionStore - Cadastro de Clientes");
setSize(650,300);
getContentPane().setLayout(new GridLayout(1,1));
JPanel pccli = new JPanel(null);
bcadastro = new JButton("Cadastrar");
blimpar = new JButton("Limpar");
lid = new JLabel("ID do Cliente:");
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:");
lobrig = new JLabel("*Campos com asterisco são de preenchimento obrigatório.");
tid = new JTextField();
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(lid);
pccli.add(tid);
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(lobrig);
pccli.add(tuf);
pccli.add(luf);
lid.setBounds (400,170,100,20);
tid.setBounds (500,170,50,20);
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);
lobrig.setBounds (280,240,400,20);
bcadastro.addActionListener(this);
blimpar.addActionListener(this);
}
public void actionPerformed(ActionEvent action){
if(action.getSource()== bcadastro){
int id, numcasa;
if(tid.getText().equalsIgnoreCase("") || 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("") || tdata_nascimento.getText().equalsIgnoreCase("") ){
JOptionPane.showMessageDialog(this, "Há campos de preenchimento obrigatório vazios!");
return;
}
try{
id = Integer.parseInt(tid.getText());
}catch(NumberFormatException nf){
JOptionPane.showMessageDialog(this, "Valor digitado no campo ID é um caracter inválido!");
return;
}
try{
numcasa = Integer.parseInt(tnumero.getText());
}catch(NumberFormatException nf){
JOptionPane.showMessageDialog(this, "Valor digitado no campo numero é um caracter inválido!");
return;
}
Cliente cli = new Cliente(id, tnome.getText(), tcpf.getText(), tdata_nascimento.getText(),
tfone.getText(),tcelular.getText(), new Endereco(trua.getText(),
tbairro.getText(), tcidade.getText(), tcomplemento.getText(),
tcep.getText(), tuf.getText(), numcasa));
//try {
Testes.loja.cadastraCliente(cli);
/*} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}*/
}
else if(action.getSource() == blimpar){
tid.setText(""); 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("");
}
}
}[/code]
E por último a Classe Arquivos.
[code]public class Arquivos {
public static void salvarEmArquivo(ArrayList<Cliente> cliente2, String nome) throws IOException {
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(nome));
out.writeObject(cliente2);
out.flush();
out.close();
}
public static ArrayList<Cliente> carregarDoArquivo(String nome) throws IOException, ClassNotFoundException {
ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File(nome)));
ArrayList<Cliente> lista = (ArrayList<Cliente>) in.readObject();
in.close();
return lista;
}
[/code]
Bom acho que com isso é suficiente para achar o erro.
Se achar, me diga. Grato.
PS .Minha Main só instancia uma Janela da Classe Testes.