No Jframe tenho um Jcombobox que no momento da insercao de dados tenho que salvar o codigo do item selecionado e na apresentacao mostrar a descricao dos itens.
Existe alguma forma de comparar o valor do codigo com a descricao e apresentar a descricao no jcombobox?
Preenchendo o Jcombobox
public void listaTipodocumentoBox() throws Exception {
try {
TipoDocumentoDAO dao = new TipoDocumentoDAO();
List<TipoDocumento> lista = dao.listarTipoDocumento();
Iterator<TipoDocumento> it = lista.iterator();
while (it.hasNext()) {
TipoDocumento td = it.next();
String tpdoc = td.getCd_tpdocumento();
cbTipodocumento.addItem(tpdoc);
}
} catch (Exception ex) {
}
}
Gerando a lista
public ArrayList<TipoDocumento> listarTipoDocumento() throws SQLException {
PreparedStatement stmt = connection.prepareStatement("select cd_tpdocumento, ds_tpdocumento from tpdocumento");
ResultSet rs = stmt.executeQuery();
ArrayList <TipoDocumento> listaTipodocumento = new ArrayList<TipoDocumento>();
while(rs.next()) {
TipoDocumento tpdoc;
tpdoc = new TipoDocumento();
tpdoc.setCd_tpdocumento(rs.getString("cd_tpdocumento"));
tpdoc.setDs_tpdocumento(rs.getString("ds_tpdocumento"));
listaTipodocumento.add(tpdoc);
}
return listaTipodocumento;
}
Iniciando o combobox
public CadastroDocumento() throws Exception {
listaTipodocumentoBox();
}
o mais recomendado no caso seria vc sobreescrever o método toString na classe TipoDocumento, assim vc enviaria o objeto TipoDocumento para o JComboBox, com os dados da classe junto e depois pegando eles de volta e fazer a sua checagem
ex:
acrescentar esse método ou a string que vc queira que mostre no jComboBox
public String toString(){
return getCd_tpdocumento();
}
como que seria acrescentado:
while (it.hasNext()) {
TipoDocumento td = it.next();
cbTipodocumento.addItem(td);
}
Do jeito que mostrei vc envia o objeto, que no JComboBox irá mostrar apenas a String que irá ser obtida no método toString, não precisando colocar o id junto com a string de retorno, não entendi pq não funcionaria. Já que depois vc poderia apenas pegar o id dos objetos que vc queira salvar
no JComboBox, os items enviados para ele, usa o metodo toString para mostrar a string de retorno.
Se voce sobreescrever o método toString na sua classe do objeto (TipoDocumento) e mandar retornar o texto que vc queira (getCd_tpdocumento), no frame irá mostrar o getCd_tpdocumento de cada objeto, mas no jcombobox teria armazenado cada objeto (TipoDocumento), podendo ser recuperado quando voce queira.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package sgd.modelo;
/**
*
* @author regis
*/
public class TipoDocumento {
private String cd_tpdocumento;
private String ds_tpdocumento;
/**
* @return the cd_tpdocumento
*/
public String getCd_tpdocumento() {
return cd_tpdocumento;
}
/**
* @param cd_tpdocumento the cd_tpdocumento to set
*/
public void setCd_tpdocumento(String cd_tpdocumento) {
this.cd_tpdocumento = cd_tpdocumento;
}
/**
* @return the ds_tpdocumento
*/
public String getDs_tpdocumento() {
return ds_tpdocumento;
}
/**
* @param ds_tpdocumento the ds_tpdocumento to set
*/
public void setDs_tpdocumento(String ds_tpdocumento) {
this.ds_tpdocumento = ds_tpdocumento;
}
}
hmm, curiosidade, vc queria então era comparar as strings para pegar o id?
exceto se vc queira fazer comparação de string (que podem haver dados com nomes iguais) para detectar o id do objeto, recomendo criar um campo id nessa classe. E adiciona na classe o método toString mostrado anteriormente.
Atualizar o dao para setar o id junto com o objeto e na classe de colocar os objetos no JComboBox, colocar o objeto TipoDocumento.
Dessa forma, depois vc pode pegar os objetos selecionados, e dar um get no id.
Na verdade cd_tpdocumento eh o id do tipo de documento.
Para teste estou setando no jcombobox o cd_tpdocumento como uma String e ate o momento esta salvando normalmente, a intencao era no jcombobox apresentar o ds_tpdocumento(descricao) e salvar o cd_tpdocumento.
@return the cd_tpdocumento
*/
public String getCd_tpdocumento() {
return cd_tpdocumento;
}
/**
@param cd_tpdocumento the cd_tpdocumento to set
*/
public void setCd_tpdocumento(String cd_tpdocumento) {
this.cd_tpdocumento = cd_tpdocumento;
}
/**
@return the ds_tpdocumento
*/
public String getDs_tpdocumento() {
return ds_tpdocumento;
}
/**
@param ds_tpdocumento the ds_tpdocumento to set
*/
public void setDs_tpdocumento(String ds_tpdocumento) {
this.ds_tpdocumento = ds_tpdocumento;
}
//Irá mostrar no jComboBox o texto que estiver aqui
public String toString(){
return ds_tpdocumento;
}
}[/code]
e pra instanciar o jcombobox vc soh precisa alterar aquele código seu:
[code]
public void listaTipodocumentoBox() throws Exception {
try {
TipoDocumentoDAO dao = new TipoDocumentoDAO();
List lista = dao.listarTipoDocumento();
Iterator it = lista.iterator();
while (it.hasNext()) {