[RESOLVIDO] Popular JCombobox com dados do Banco, trazendo informação indesejada

2 respostas
lgustavo.sic

Boa tarde a todos, gostaria de uma ajuda.
Tenho uma classe que faz a busca de unidade de medida do banco de dados, esta funcionando sem nenhum erro… Aí em outra classe insiro os dados dentro de um JCombobox, porem quando vou selecionar algum item ele aparece algo como : br.com.[empresa].uniMedida@767f878

Segue abaixo classe que faz a busca :

package br.com.olgber.DAO;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import br.com.olgber.bean.Uni_Medida;
import br.com.olgber.util.ConnectionFactory;

public class UniMedDAO {
	
	private String SELECT_UNIDADE = "Select * from Uni_Medida";
	
	private Connection getConnection(){
		return ConnectionFactory.getConnection();		
	}
	
	public Vector<Uni_Medida> comboboxUniMed(){
		Vector<Uni_Medida> combobox = new Vector<Uni_Medida>();

		try{
			
		PreparedStatement ps = getConnection().prepareStatement(SELECT_UNIDADE);
		ResultSet rs = ps.executeQuery();

			Uni_Medida unidade;
			
				while(rs.next()){
					unidade = new Uni_Medida();
					unidade.setUniMedCod (rs.getString("UniMedCod"));
					combobox.add(unidade);
				}
				
				return combobox;				
		}
		
		catch (SQLException e) 
		{
			e.printStackTrace();
		}
		return combobox;

		}
	
	}

e na minha tela de cadastro tem o combobox :

cbx = new JComboBox(new Vector<Uni_Medida>(unidade.comboboxUniMed()));
        cbx.setBounds(150, 155,100,25);
        cbx.setVisible(true);
        frame.add(cbx);

Será que alguem consegue me dar alguma dica ?!

Obrigado !

2 Respostas

wagnerfrancisco

Você populou o seu combo com objetos Uni_Medida. Quando o combo é exibido, ele utiliza o método toString deste objeto para exibi-lo no combo. Como você não especificou nenhum, ele mostra este valor “estranho” que você vê. Uma maneira simples de resolver é sobreescrever o método toString de Uni_Medida:

public class Uni_Medida {
   //... seu codigo aqui

   @Override
   public String toString() {
      return this.getUniMedCod(); //retorne o que vc quer mostrar aqui!
   }
}

Se você não quer sobrescrever o toString (ou não pode), você pode criar um Renderer customizado para o combobox (ou criar um outro tableModel que atenda suas necessidades).

lgustavo.sic

Wagner !!!

Cara valeu pela ajuda ! Eu sobrescrevi o metodo e deu certinho cara !

Obrigado mesmo !

Criado 1 de agosto de 2012
Ultima resposta 1 de ago. de 2012
Respostas 2
Participantes 2