DBnavegator em java

7 respostas
E

Ola pessoa tudo bom?

Alguem conhece o dbNavegator do delphi?A ideia é simple , navegar pelos registro, primeiro,proximo,anterior,ultimo.

Tentei implementa isso em java , funcionou, mais ficou ridiculo totalmente gambiarra,vejam…

pessoa = new Pessoa();
      
      contador = pessoa.buscaTodos().size() - 1;
      
      txtCodigo.setText(String.valueOf(pessoa.buscaTodos().lastElement().getCodigo()));
	  txtNome.setText(pessoa.buscaTodos().lastElement().getNome());
	  txtRg.setText(pessoa.buscaTodos().lastElement().getRg());
	  txtCpf.setText(pessoa.buscaTodos().lastElement().getCpf());
	  txtDataNascimento.setText(pessoa.buscaTodos().lastElement().getDataNascimento());

      
  }

@Override
  
  public void actionPerformed(ActionEvent e) {
	if (e.getSource() == btnNovo){
		
	}
	if (e.getSource() == btnAlterar){
		
	}
	if (e.getSource() == btnApagar){
		
	}
	if (e.getSource() == btnCancelar){
		
	}
	if (e.getSource() == btnGravar){
		pessoa = new Pessoa(Integer.parseInt(txtCodigo.getText()) , txtNome.getText() , txtRg.getText(), txtCpf.getText() , txtDataNascimento.getText() , cmbSexo.getToolTipText());
		pessoa.grava();
		JOptionPane.showMessageDialog(null, "Cliente Gravado com sucesso");
	}
	if (e.getSource() == btnPrimeiro){

		  contador = 0;
		
		  txtCodigo.setText(String.valueOf(pessoa.buscaTodos().firstElement().getCodigo()));
		  txtNome.setText(pessoa.buscaTodos().firstElement().getNome());
		  txtRg.setText(pessoa.buscaTodos().firstElement().getRg());
		  txtCpf.setText(pessoa.buscaTodos().firstElement().getCpf());
		  txtDataNascimento.setText(pessoa.buscaTodos().firstElement().getDataNascimento());
		
	}
	if (e.getSource() == btnAnterior){

		if  ( contador > 0){	
			    
	      contador--;
			
		  txtCodigo.setText(String.valueOf(pessoa.buscaTodos().get(contador).getCodigo()));
		  txtNome.setText(pessoa.buscaTodos().get(contador).getNome());
		  txtRg.setText(pessoa.buscaTodos().get(contador).getRg());
		  txtCpf.setText(pessoa.buscaTodos().get(contador).getCpf());
		  txtDataNascimento.setText(pessoa.buscaTodos().get(contador).getDataNascimento());
		}
	}
	if (e.getSource() == btnProximo){
			
		  if (contador < pessoa.buscaTodos().size() - 1){	
		    
			contador++;
			
		    txtCodigo.setText(String.valueOf(pessoa.buscaTodos().get(contador).getCodigo()));
		    txtNome.setText(pessoa.buscaTodos().get(contador).getNome());
		    txtRg.setText(pessoa.buscaTodos().get(contador).getRg());
		    txtCpf.setText(pessoa.buscaTodos().get(contador).getCpf());
		    txtDataNascimento.setText(pessoa.buscaTodos().get(contador).getDataNascimento());
		  
		  }
		
	}
	if (e.getSource() == btnUltimo){
			
          contador = pessoa.buscaTodos().size() - 1;
		
		  txtCodigo.setText(String.valueOf(pessoa.buscaTodos().lastElement().getCodigo()));
		  txtNome.setText(pessoa.buscaTodos().lastElement().getNome());
		  txtRg.setText(pessoa.buscaTodos().lastElement().getRg());
		  txtCpf.setText(pessoa.buscaTodos().lastElement().getCpf());
		  txtDataNascimento.setText(pessoa.buscaTodos().lastElement().getDataNascimento());

	}	
	
}

Mais eu não ia usar esse lixo né, ai pensei em usar metodos dentro da classe pessoa, que é a classe em questao, tipo:

pessoa.proximaPessoa.
pessoa.ultimaPessoa.

usando Vector e Iterator e ListIterator, ACHO que ficou bem melhor, porem o proximo e anterior nao está funcionando queria saber porque…

Classe Pessoa

package VO;

import java.util.Vector;


import DAO.PessoaDao;

public class Pessoa {
	
	private int codigo;
	private String nome;
	private String rg;
	private String cpf;
	private String dataNascimento;
	private String sexo;
	private PessoaDao pessoaDao = new PessoaDao();
	
   public Pessoa(){
	   
   }
	
	public Pessoa(int codigo, String nome , String rg , String cpf , String dataNascimento, String sexo){
		setCodigo(codigo);
	    setNome(nome);
		setRg(rg);
		setCpf(cpf);
		setDataNascimento(dataNascimento);
		setSexo(sexo);
	}

	public int getCodigo() {
		return codigo;
	}

	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getRg() {
		return rg;
	}
	public void setRg(String rg) {
		this.rg = rg;
	}
	public String getCpf() {
		return cpf;
	}
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}
	
	public String getDataNascimento() {
		return dataNascimento;
	}

	public void setDataNascimento(String dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	public String getSexo() {
		return sexo;
	}
	public void setSexo(String sexo) {
		this.sexo = sexo;
	}
	
	public void gravar() {
		pessoaDao = new PessoaDao();
		pessoaDao.gravar(this);
	}
	
	public void apagar(){
		pessoaDao = new PessoaDao();
		pessoaDao.apagar(this);		
	}
	
	public void alterar(){
		pessoaDao = new PessoaDao();
		pessoaDao.alterar(this);	
	}
	
	
	
	public static Vector<Pessoa> listarPessoas(){
		return PessoaDao.listarPessoas();
	}

	public static Pessoa listarPrimeiro(){
		return listarPessoas().firstElement();
	}
	
	public static Pessoa listarProximo(){
		return listarPessoas().iterator().next();
	}
	
	public static Pessoa listarAnterior(){
		return listarPessoas().listIterator().previous();
	}
	
	public static Pessoa listarUltimo(){
	  return listarPessoas().lastElement();	
	}
	
	

}

Classe PessoaForm(swing)

if (e.getSource() == btnPrimeiro){
		txtCodigo.setText(String.valueOf(Pessoa.listarPrimeiro().getCodigo()));
	    txtNome.setText(Pessoa.listarPrimeiro().getNome());
	    txtRg.setText(Pessoa.listarPrimeiro().getRg());
	    txtCpf.setText(Pessoa.listarPrimeiro().getCpf());
	    txtDataNascimento.setText(Pessoa.listarPrimeiro().getDataNascimento());
	}
	if (e.getSource() == btnAnterior){
		txtCodigo.setText(String.valueOf(Pessoa.listarAnterior().getCodigo()));
	    txtNome.setText(Pessoa.listarAnterior().getNome());
	    txtRg.setText(Pessoa.listarAnterior().getRg());
	    txtCpf.setText(Pessoa.listarAnterior().getCpf());
	    txtDataNascimento.setText(Pessoa.listarAnterior().getDataNascimento());
	}
	if (e.getSource() == btnProximo){
		txtCodigo.setText(String.valueOf(Pessoa.listarProximo().getCodigo()));
	    txtNome.setText(Pessoa.listarProximo().getNome());
	    txtRg.setText(Pessoa.listarProximo().getRg());
	    txtCpf.setText(Pessoa.listarProximo().getCpf());
	    txtDataNascimento.setText(Pessoa.listarProximo().getDataNascimento());
	}
	if (e.getSource() == btnUltimo){
		txtCodigo.setText(String.valueOf(Pessoa.listarUltimo().getCodigo()));
	    txtNome.setText(Pessoa.listarUltimo().getNome());
	    txtRg.setText(Pessoa.listarUltimo().getRg());
	    txtCpf.setText(Pessoa.listarUltimo().getCpf());
	    txtDataNascimento.setText(Pessoa.listarUltimo().getDataNascimento());
	}

Ah eu tive em ideia apenas essas duas formas, QUERIA SABER SE EXISTE UM JEITO MAIS CORRETO DE ESTAR FAZENDO ISSO…

Obrigado…

7 Respostas

pedromuyala

Acredito que este link vai ajudá-lo.
Na penúltima postagem, existe um exemplo claro sobre um dicionário que faz praticamente as mesmas operações e também está com o código bem legível.
Tem até um vídeo que possa ajuda-lo. Abraço. :wink:

E

Obrigado por responder,esse link ajudo bastante mais nao tirou a minha duvida em relacao ao post acima,se algum poder responder as minha perguntas, agradeceria muito obrigado.

kenneth

Fala cara!

Nao sei se eu entendi o que voce precisa,
mas e se voce usar ArrayList, por exemplo?

Nao serviria?

Abraco!

E

Ola amigo, o que eu preciso é simples o conceito, imagine uma tabela de pessoa com 100 registro ai quero navegar entre eles,primeiro registro, proximo registro,anterior registro,ultimo registroo, no delhpi eu simples temm esse componente…

O DBNAVEGATOR

SAO 4 bostoes , o FRIST,NEXT,PRIOR,LAST , e navega na posiçoes do registro, intendeu??


Bom eu usei o vector , ele e quase = o array list mais ele ainda de dois metodos a mais que ajudam que é o firstElemento e lastElemento, ou seja , o FRIST E O LAST eu consegui , O PROBLEMA É O NEXT E PRIOR E TBM TENHO QSE CERTEZA QUE DO JEITO QUE EU FIZ TA ERRADO,

ESPERO A RESPOSTA

OBRIGADO…

kenneth

Deve ter um jeito mais facil, mas nao custa tentar neh?
:lol:

Olha so:

package testes;

import java.util.ArrayList;

public class Navegador {
    // Lista de pessoas - Considerando que voce tem uma classe "Pessoa"
    private ArrayList<Pessoa> listaPessoas = null;
    
    // Construtor
    public Navegador (){
        this.listaPessoas = new ArrayList<Pessoa>();
    }

    public Pessoa getProxima(Pessoa atual){
        // Para pegar o proximo, usamos o atual...
        int indice = this.listaPessoas.indexOf(atual);
        Pessoa retorno = null;
        if (indice != -1){
            indice++;
            retorno = this.listaPessoas.get(indice);
        }
        return retorno;
    }

    public Pessoa getAnterior(Pessoa atual){
        // Para o anterior tambem...
        int indice = this.listaPessoas.indexOf(atual);
        Pessoa retorno = null;
        if (indice != -1){
            indice--;
            retorno = this.listaPessoas.get(indice);
        }
        return retorno;
    }

    public Pessoa getPrimeira(){
        Pessoa retorno = null;
        if (this.listaPessoas.size() > 0)
            retorno = this.listaPessoas.get(1);
        return retorno;
    }

    public Pessoa getUltima(){
        Pessoa retorno = null;
        if (this.listaPessoas.size() > 0){
            // Se nos temos 5 pessoas, o ultimo estara na posicao 4, pois comeca em 0...
            int indice = this.listaPessoas.size() - 1;
            retorno = this.listaPessoas.get(indice);
        }
        return retorno;
    }
}

Sera que te ajuda?

Boa sorte!

E

Ola amigo claro que ajuda tudo é valido, porem ai agente está implementando na mao ja tinha pensado algo parecido que esse,mais vai ficar muito lendo, Obs um set e muito mais rapido que um arraylist,

Mais queria saber se tem alguma coisa pronta em java sobre isso ou uma maneira mais eficaz de fazer

Obrigado.

E
public Vector<Pessoa> listarPessoas(){
		return (Vector<Pessoa>) PessoaDAO.listarPessoas();
	}
	
	public Pessoa listarPrimeiro(){
	  return listarPessoas().firstElement();   
	}
	
	public Pessoa listarProximo(){
	  return listarPessoas().listIterator().next();
	}
	
	public Pessoa listarAnterior(){
	  return listarPessoas().listIterator().previous();
	}
	
	public Pessoa listarUltimo(){
	  return listarPessoas().lastElement(); 
	}

ALGUEM SABE POR O CÓDIGO ACIMA A listarAnterior() e a listarProximo NAO FUNCIONA?

Por favor alguem?

Criado 15 de outubro de 2009
Ultima resposta 20 de out. de 2009
Respostas 7
Participantes 3