Duvida Jcombo setSelectedIndex

7 respostas
B

Pessoal, minha duvida é a seguinte:

Criei um Jcombo to pegando valor dele e gravando no banco normal.
Mas quando eu pego o valor gravado no banco pra setar no Jcombo não ta dando certo pq o combo tem a numeração começando do Zero e eu quero setar a partir da chave (codigo) que vem do banco.
vou postar os codigos ai fica mais facil entender minha dificuldade:

public class cAtendimento {
    
     private String value;  
     private int key;  
     public cAtendimento(int key, String value) {  
         this.key=key;  
         this.value=value;  
     }  
      
     @Override  
      public String toString() {  
         return value;  
     }  
   
      public int getKey() {  
          return key;  
     }  
  
 }
public List<Tipo_atendimento> retornaTipoAtendimento() throws SQLException {
        String sql = "select * from tipo_atendimento order by tat_descritivo";
        PreparedStatement stmt = this.conexao.prepareStatement(sql);

        ResultSet rs = stmt.executeQuery();

        List<Tipo_atendimento> minhaListaAtd = new ArrayList<Tipo_atendimento>();

        while (rs.next()) {
            Tipo_atendimento TpA = new Tipo_atendimento();
            TpA.setTat_codigo(rs.getInt("tat_codigo"));
            TpA.setTat_descritivo(rs.getString("tat_descritivo"));
            minhaListaAtd.add(TpA);
        }
        rs.close();
        //stmt.close();
        return minhaListaAtd;

    }
private void PopulaCombo(List<Tipo_atendimento> tipo_atendimentos){
     for (int i = 0; i < tipo_atendimentos.size(); i++) {
                JcomboTratamento.addItem(new cAtendimento(tipo_atendimentos.get(i).getTat_codigo(), tipo_atendimentos.get(i).getTat_descritivo()));
            }
Aqui é quando eu pego o valor (codigo chave) que preciso gravar no banco
Object obj3 = JcomboTratamento.getSelectedItem();
            int resultCombo = 0;
            //passa pra int pega o valor da um cast pra classe cCliente pega a key
            resultCombo = Integer.parseInt(String.valueOf(((cAtendimento) obj3).getKey()));

Meu problema é por exemplo eu preciso setar o combo pelo codigo chave (key) que peguei do combo para gravar no banco.
Nao sei se ficou claro.. mas caso tenha alguma duvida em entender meu problema eu volto a postar..

Obrigado

7 Respostas

B

Pessoal, será que ninguem consegue achar uma solução para meu problema acima?

Valeu

walissongpi

Eu não sei se entendi sua pergunta.
Esse jComboBox utiliza Inteiros? em que ordem estão esses inteiros?
Se vc está utilizando numeros em ordem ( de 1,2,3,…,50), vc pode pegar o numero resgatado do bando e subtrair 1 que será equivalente ao índice (antes ou depois de gravar). Se os números não estão em alguma ordem, então eu te recomendo utilizar jTable.

B

walissongpi, valeu pela resposta:

Então, os números hoje estão em ordem e são inteiros, mas eu estou pensando futuramente pode não estar.
Como venho da programação web achei que eu conseguiria setar o numero chave do combo.

Então não existe outra possibilidade de eu pegar o numero chave que eu setei na hora que montei o combo? Ai complicou…

Mas blz. valeu pela resposta…

Abraço

alexcomput

exite sim…alias muitas ainda…vc pode concatenar o codigo e o value no valor para ser mostrado no combo… depois quando vc for pega-lo
o que faria é apenas fazer um split da string do combobox e só pegar o codigo e trabalhar com ele…se é que me entende…

B

Opa… enfim uma luz…

Entendi sim, mas como eu setaria o item que eu quero, seria :

jcombo.setSelectedItem(codigo) ou jcombo.setSelectedIndex(codigo)

Valeu…

alexcomput

Cara da uma pesquisado sobre Model…vc tem que pegar o Model do combobox…da uma olhada aqui como seta valor em um combobox.
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JComboBox.html

B

Ae fera, apenas compartilhando. consegui resolver meu problema da seguinte forma:

public int retornaIndexCombo(JComboBox combo, int codigoBanco){
        int num = 0;
        
        for (int i=0; i<combo.getItemCount(); i++) 
        { 
            Object item = combo.getItemAt(i); 

            num = i; // index que vou setar 
            int resultCombo = Integer.parseInt(String.valueOf(((cAtendimento) item).getKey()));
            if (codigoBanco == resultCombo)
            {
                break;
            }
        } 
        return num;
    }

Tentei colocar isso numa classe separada da que estou usando, mas não rodou, ai coloquei na classe do proprio form mesmo ai foi...

Valeu

Criado 15 de fevereiro de 2010
Ultima resposta 20 de fev. de 2010
Respostas 7
Participantes 3