Setar objeto num JComboBox - RESOLVIDO

1 resposta
luceliopv

bom dia, estou tentando utilizar o setSelectedItem do jcombobox para setar um objeto e não estou conseguindo.
Utilizei o equals sobrescrito na classe e não consegui ainda,
tenho a seguinte classe:

package classes;

import java.io.Serializable;

public class Depositos implements Serializable {

  private static long serialVersionUID = 1L;

  public static long getSerialVersionUID() {
    return serialVersionUID;
  }

  public static void setSerialVersionUID(long aSerialVersionUID) {
    serialVersionUID = aSerialVersionUID;
  }
  private String codDeposito;
  private String desDeposito;

  public String getCodDeposito() {
    return codDeposito;
  }

  public void setCodDeposito(String codDeposito) {
    this.codDeposito = codDeposito;
  }

  public String getDesDeposito() {
    return desDeposito;
  }

  public void setDesDeposito(String desDeposito) {
    this.desDeposito = desDeposito;
  }

  @Override
  public String toString() {
    return this.getDesDeposito();
  }

  @Override 
  public boolean equals(Object o) {
    if (o instanceof Depositos) {
      equals((Depositos) o);
    }
    if (o instanceof String) {
      equals((String) o);
    }
    return false;
  }

  @Override
  public int hashCode() {
    int hash = 7;
    hash = 59 * hash + (this.codDeposito != null ? this.codDeposito.hashCode() : 0);
    hash = 59 * hash + (this.desDeposito != null ? this.desDeposito.hashCode() : 0);
    return hash;
  }

  public boolean equals(Depositos dep) {
    return dep.codDeposito.equals(this.codDeposito);
  }
}

Essa classe gera os objetos.
Ai coloco os objetos do banco no combo assim:

java.util.List<Depositos> dep = dao.getParametrosDepositos();
      for (Depositos deposito : dep) {
        jCbDepositos.addItem(deposito);
      }

Ai o usuario salva o código do depósito num arquivo .ini, é uma tela de configuração.
Ai quando abro a tela novamente para visualização ou edição, preciso pegar o codigo do deposito, achar o
objeto correspondente e setá-lo no combo:

String codDeposito = ini.getProperty("deposito");
        //acha o código no combobox q equivale ao código do .ini
        java.util.List<Depositos> depositos = dao.getParametrosDepositos();
        for (Depositos deposito : depositos) {
         // JOptionPane.showMessageDialog(this, deposito.getCodDeposito() + " --- " + codDeposito);
          if (deposito.getCodDeposito().equals(codDeposito)) {
           // JOptionPane.showMessageDialog(this, "achou");
            jCbDepositos.setSelectedItem(deposito);
          }
        }

Mas ele não seta o objeto, quando vou selecionar um item para salvar seu código o combo não deixa escolher um item, por isso
não consigo salvar o codigo para depois tentar setar.

Se eu comentar isso:

@Override 
  public boolean equals(Object o) {
    if (o instanceof Depositos) {
      equals((Depositos) o);
    }
    if (o instanceof String) {
      equals((String) o);
    }
    return false;
  }

Ele deixa eu escolher um item e salva o codigo no arquivo, mas ao abrir a tela ele não consegue setar o objeto

Alguma dica?

Valeu

1 Resposta

luceliopv

Pessoal, consegui resolver, bastou apenas corrigir o método equals, ficou assim:

@Override
  public int hashCode() {
    int hash = 7;
    hash = 59 * hash + (this.codDeposito != null ? this.codDeposito.hashCode() : 0);
    hash = 59 * hash + (this.desDeposito != null ? this.desDeposito.hashCode() : 0);
    return hash;
  }

  @Override
  public boolean equals(Object obj) {
    if (obj == null) {
      return false;
    }
    if (getClass() != obj.getClass()) {
      return false;
    }
    final Depositos other = (Depositos) obj;
    if ((this.codDeposito == null) ? (other.codDeposito != null) : !this.codDeposito.equals(other.codDeposito)) {
      return false;
    }
    if ((this.desDeposito == null) ? (other.desDeposito != null) : !this.desDeposito.equals(other.desDeposito)) {
      return false;
    }
    return true;
  }
Criado 18 de novembro de 2009
Ultima resposta 18 de nov. de 2009
Respostas 1
Participantes 1