Java Desktop - Cadastrar código na JComboBox

Sou iniciante em Java e estou fazendo um sistema para cadastrar livros e artigos utilizando JDBC e ambiente Eclipse, porém com o código que possuo estou tendo dificuldade para cadastrar o código do Tipo da tabela Tipos na JComboBox de tipo, estou utilizando também programação em camadas com DAL, BO e DTO.

Método para carregar a JComboBox de tipo

@SuppressWarnings({ "rawtypes", "unused", "unchecked" })
private JComboBox getComboTipo() {
	if(comboTipo == null) {
		try
		{
			TipoBO tipoBO = new TipoBO();
			
			@SuppressWarnings("unchecked")
			ComboBoxModel comboTipoModel = 
					new DefaultComboBoxModel(converteTipos(tipoBO.listaTipos())); 
			
			comboTipo = new JComboBox();
			comboTipo.setModel(comboTipoModel);
		}catch (Exception e)
		{
			e.printStackTrace();
		}
		
	}
	return comboTipo;
}

//Preparando dados para a combo de tipos

	private String[] converteTipos(List<TipoDTO> lista)
	{
		String[] result = new String[lista.size()];
		for (int i = 0; i < lista.size();i++)
		{
			TipoDTO tipoDTO = lista.get(i);
			result[i] = tipoDTO.getNome();
		}
		
		return result;
	} 

Listar Tipos da classe de BO:

public List<TipoDTO> listaTipos() throws NegocioException 
{
	List<TipoDTO> lista = null;
	
	try
	{
		TipoDAO tipoDao = new TipoDAO();
		lista = tipoDao.listarTodos();
	}catch (Exception e)
	{
		e.printStackTrace();
		throw new NegocioException(e.getMessage(), e);
	}
	
	
	return lista;

}

Classe DAO para o método listarTodos:

@Override
public List<TipoDTO> listarTodos() throws PersistenciaException {
	List<TipoDTO> listaTipos = new ArrayList<TipoDTO>();
	
	try
	{
		Connection connection = ConexaoUtil.getInstance().getConnection();
		String sql = "SELECT * FROM TB_Tipo";
		
		PreparedStatement statement = connection.prepareStatement(sql);
		ResultSet resultset = statement.executeQuery();
		
		while (resultset.next())
		{
			TipoDTO tipoDTO = new TipoDTO();
			tipoDTO.setId(resultset.getInt("id"));
			tipoDTO.setNome(resultset.getString("nome"));
			
			listaTipos.add(tipoDTO);
		}
		
		connection.close();
	}catch (Exception e)
	{
		e.printStackTrace();
		throw new PersistenciaException(e.getMessage(),e);
	}
	return listaTipos;
}

Olá,
Não entendi onde está o problema no seu código. É mais fácil vc explicar o problema, do que todos que quiserem te ajudar, ter de criar um projeto com esse código (que está bem incompleto).

Dicas:

  1. Preferencialmente sempre utilize listas tipadas: List
  2. Na sua classe tipo, sobrescreva o método toString para retornar o nome do tipo, assim ele aparecerá legível no combo.

Olá Rodrigo_Void obrigado por ajudar!!

O problema está na função converteTipos o qual só encapsula a descrição do tipo, não consigo adicionar o id do tipo como item da jcombobox na linha do método convertetipos com a instrução:

result[i] = tipoDTO.getNome();

Se eu mudar para getId() ele coloca no texto da JCombobox e eu gostaria que ele pegasse o getId para ser gravado na JCombobox como item para posteriormente gravar no banco de dados o id específico.

Poise, é que na verdade este converteTipos é um “anti-OO”, ou seja, vc precisa usar orientação a objetos.
Conforme as dicas que dei antes:

  1. utilize listas tipadas.
  2. Passe a lista original de tipos ao combo.
  3. sobrescreva o toString de Tipo
  4. quando for egar o objeto selecionado, terá em mãos um Tipo, podendo então usar seu id.

Resultado: O combo vai exibir o nome do tipo e vc poderá usar o id do tipo selecionado.