Lista Duplamente Ligada

1 resposta
R

Pessoal neste código quando eu excluo o método exclui toda a lista e perco todos os dados existentes de todas pessoas
porém além de querer deletar apenas uma pessoa apos prévia pesquisa, quando realizo uma pesquisa por nomes o mesmo dado excluído anteriormente persiste em ser exibido !
Desde já obrigado !

* To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Interface.Paineis;

import JavaBeans.Pessoa;
import TerceiraCamada.ListaDuplamenteEncadeada;
import TerceiraCamada.No;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.text.MaskFormatter;

/**
 *
 * @author Rafael Teixeira
 */
public class PainelExcluir extends JPanel implements ActionListener {
    //Declara os atributos

    private ListaDuplamenteEncadeada listaDuplamenteEncadeada;
    private Pessoa pessoaExcluir;
    private JLabel painelTitulo, pesquisar, logo, nome, idade, dataDeNascimento, cpf;
    private JTextField tPesquisar, tNome, tIdade, tDataDeNascimento, tCpf;
    private JButton btnPesquisar, btnExcluir;
    private MaskFormatter maskTDataDeNascimento, maskTCpf;
    No n;

    //Construtor do PainelExcluir
    public PainelExcluir(ListaDuplamenteEncadeada listaDuplamenteEncadeada) {
        this.listaDuplamenteEncadeada = listaDuplamenteEncadeada;
        this.initComponents();
        this.configComponents();
        this.insertComponents();
        this.setLayout(null);
        this.setBackground(Color.white);
        this.setBounds(0, 0, 866, 700);
        this.setBorder(BorderFactory.createLineBorder(Color.darkGray, 1));
    }
    //Inicia componentes

    private void initComponents() {
        this.pessoaExcluir = new Pessoa();
        //Título do Painel
        painelTitulo = new JLabel("Excluir Pessoas", SwingConstants.CENTER);
        //Marca d'agua
        logo = new JLabel(new ImageIcon(getClass().getResource("/imagem/solon_3.jpg")));
        //formulário para pesquisa
        pesquisar = new JLabel("Pesquisa por Nome", SwingConstants.RIGHT);
        tPesquisar = new JTextField();
        btnPesquisar = new JButton("Pesquisar");
        //JLabel
        nome = new JLabel("Nome:", SwingConstants.RIGHT);
        idade = new JLabel("Idade:", SwingConstants.RIGHT);
        dataDeNascimento = new JLabel("Data de Nascimento:", SwingConstants.RIGHT);
        cpf = new JLabel("CPF:", SwingConstants.RIGHT);

        //JTextField
        tNome = new JTextField();
        tDataDeNascimento = new JTextField(10);
        tIdade = new JTextField();
        tCpf = new JTextField(14);

        btnExcluir = new JButton("Excluir");
    }

    //Configura componentes
    private void configComponents() {

        //logo.setBounds(600, 370, 500, 314);
        pesquisar.setBounds(10, 50, 120, 20);
        tPesquisar.setBounds(140, 50, 250, 20);
        btnPesquisar.setBounds(400, 45, 120, 30);
        btnPesquisar.setIcon(new ImageIcon(getClass().getResource("/imagem/pesquisar.png")));
        btnPesquisar.addActionListener(this);
        logo.setBounds(300, 370, 500, 314);
        try {
            maskTCpf = new MaskFormatter("###.###.###-##");
            maskTDataDeNascimento = new MaskFormatter("##/##/####");
            maskTCpf.setPlaceholderCharacter(' ');
            maskTDataDeNascimento.setPlaceholderCharacter(' ');
        } catch (ParseException ex) {
            JOptionPane.showMessageDialog(null, "Droga de erro!!!",
                    "Erro!", JOptionPane.ERROR_MESSAGE);
        }
        tCpf = new JFormattedTextField(maskTCpf);
        tDataDeNascimento = new JFormattedTextField(maskTDataDeNascimento);
        painelTitulo.setBounds(10, 10, 840, 30);
        painelTitulo.setForeground(Color.darkGray);
        painelTitulo.setFont(new Font("Arial", Font.BOLD, 24));

        nome.setBounds(10, 100, 120, 20);
        dataDeNascimento.setBounds(10, 130, 120, 20);
        idade.setBounds(10, 160, 120, 20);
        cpf.setBounds(10, 190, 120, 20);
        tNome.setBounds(140, 100, 350, 20);
        tNome.setEditable(false);
        tDataDeNascimento.setBounds(140, 130, 70, 20);
        tDataDeNascimento.setEditable(false);
        tIdade.setBounds(140, 160, 30, 20);
        tIdade.setEditable(false);
        tCpf.setBounds(140, 190, 95, 20);
        tCpf.setEditable(false);
        btnExcluir.setBounds(140, 520, 150, 30);
        btnExcluir.setIcon(new ImageIcon(getClass().getResource("/imagem/delete.png")));
        btnExcluir.setEnabled(false);
        btnExcluir.addActionListener(this);
    }

    private void insertComponents() {
        this.add(painelTitulo);
        this.add(logo);
        this.add(pesquisar);
        this.add(tPesquisar);
        this.add(btnPesquisar);
        this.add(nome);
        this.add(dataDeNascimento);
        this.add(idade);
        this.add(tNome);
        this.add(tDataDeNascimento);
        this.add(tIdade);
        this.add(btnExcluir);
    }

    @Override
    public void actionPerformed(ActionEvent e) {

        if (e.getSource().equals(btnPesquisar)) {

            if (!tPesquisar.getText().isEmpty()) {
                this.pesquisarExcluir();

            } else {
                JOptionPane.showMessageDialog(null,
                        "Você deve digitar um nome para realizar a exclusão !",
                        "Erro!", JOptionPane.ERROR_MESSAGE);
            }
        }
if (e.getSource().equals(btnExcluir)) {

listaDuplamenteEncadeada.removerPrimeiro(pessoaExcluir);

}

    private void pesquisarExcluir() {

        No no = this.listaDuplamenteEncadeada.getPrimeiro();
        Pessoa pessoa = (Pessoa) no.getObjeto();

        while (!tPesquisar.getText().equals(pessoa.getNome())) {
            no = no.prox;
            if (no == null) {
                JOptionPane.showMessageDialog(null, "Nome inexistente na lista !",
                        "ERRO!", JOptionPane.ERROR_MESSAGE);
            } else {
                pessoa = (Pessoa) no.getObjeto();
            }
        }
        if (pessoa != null) {

            tNome.setText(pessoa.getNome());
            tDataDeNascimento.setText(pessoa.getDataDeNascimento());
            tIdade.setText(pessoa.getIdade());
            tCpf.setText(pessoa.getCpf());
            
            //tProfissao.setText(pessoa.getProfissao());

            this.listaDuplamenteEncadeada.inserirPrimeiro(pessoa);
            btnPesquisar.setEnabled(false);
            tPesquisar.setEditable(false);
            btnExcluir.setEnabled(true);
            btnPesquisar.setEnabled(false);
            tPesquisar.setText(null);
        }

    }
}

//segue aqui os métodos da classe listaDuplamenteEncadeada
public void removerPrimeiro(Pessoa pessoa) {
        if (getTotalNos() == 1) {
            primeiro = ultimo = null;
        } else {
            System.out.println(pessoa.getNome());
            primeiro = primeiro.prox;
            primeiro.ant = null;
            System.out.println(pessoa.getNome());
            
        }
        totalNos--;
    }

1 Resposta

InicianteJavaHenriqu

Ao invés de enviar o projeto, poste o código com as tags code e mostre exatamente onde aparece o erro. Fica mais fácil para quem está sem IDE agora.

:thumbup:

Criado 25 de maio de 2012
Ultima resposta 25 de mai. de 2012
Respostas 1
Participantes 2