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?
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();
}
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
R
rfogo
Desculpe acho que nao entendi mesmo, do jeito que voce falou achei que teria que salvar id junto com a string de retorno.
Como eu pegaria somente o cd_tpdocumento se eu seto o item no metodo:
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.
tem como mostrar a classe TipoDocumento?
R
rfogo
Segue a Classe TipoDocumento:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packagesgd.modelo;/** * * @author regis */publicclassTipoDocumento{privateStringcd_tpdocumento;privateStringds_tpdocumento;/** * @return the cd_tpdocumento */publicStringgetCd_tpdocumento(){returncd_tpdocumento;}/** * @param cd_tpdocumento the cd_tpdocumento to set */publicvoidsetCd_tpdocumento(Stringcd_tpdocumento){this.cd_tpdocumento=cd_tpdocumento;}/** * @return the ds_tpdocumento */publicStringgetDs_tpdocumento(){returnds_tpdocumento;}/** * @param ds_tpdocumento the ds_tpdocumento to set */publicvoidsetDs_tpdocumento(Stringds_tpdocumento){this.ds_tpdocumento=ds_tpdocumento;}}
A
ArrancaToco
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.
“Alguma” dúvida?
R
rfogo
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.
A
ArrancaToco
hmmmm, ok, então fica mais simples, vc pode alterar entao a classe tipodocumento para algo assim:
packagesgd.modelo;/** * * @author regis */publicclassTipoDocumento{privateStringcd_tpdocumento;privateStringds_tpdocumento;/** * @return the cd_tpdocumento */publicStringgetCd_tpdocumento(){returncd_tpdocumento;}/** * @param cd_tpdocumento the cd_tpdocumento to set */publicvoidsetCd_tpdocumento(Stringcd_tpdocumento){this.cd_tpdocumento=cd_tpdocumento;}/** * @return the ds_tpdocumento */publicStringgetDs_tpdocumento(){returnds_tpdocumento;}/** * @param ds_tpdocumento the ds_tpdocumento to set */publicvoidsetDs_tpdocumento(Stringds_tpdocumento){this.ds_tpdocumento=ds_tpdocumento;}//Irá mostrar no jComboBox o texto que estiver aquipublicStringtoString(){returnds_tpdocumento;}}
e pra instanciar o jcombobox vc soh precisa alterar aquele código seu:
Nao esta retornando o cd_tpdocumento para ser inserido na tabela.
A
ArrancaToco
os códigos que te passei não alterariam o valor do cd_tpdocumento, tem como me mostrar os códigos alterados do primeiro tópico?
R
rfogo
Segue as classes modificadas.
Modelo:
publicclassTipoDocumento{privateStringcd_tpdocumento;privateStringds_tpdocumento;/** * @return the cd_tpdocumento */publicStringgetCd_tpdocumento(){returncd_tpdocumento;}/** * @param cd_tpdocumento the cd_tpdocumento to set */publicvoidsetCd_tpdocumento(Stringcd_tpdocumento){this.cd_tpdocumento=cd_tpdocumento;}/** * @return the ds_tpdocumento */publicStringgetDs_tpdocumento(){returnds_tpdocumento;}/** * @param ds_tpdocumento the ds_tpdocumento to set */publicvoidsetDs_tpdocumento(Stringds_tpdocumento){this.ds_tpdocumento=ds_tpdocumento;}publicStringtoString(){returnds_tpdocumento;}}
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;
}