List no JComboBox não consigo resolver!

4 respostas
J

Tenho um List que coloco no ComboBox ate ai td bem, mas na hora de capturar o Id para salvar na nova tabela nao consigo alguem pode me ajudar.

Parte que pega o List e Coloca no ComboBox

public void listarComboBoxAcervo() throws SQLException {

        AcervoDao acervoDao = new AcervoDao();
        List<Acervo> minhalista = acervoDao.getCombo();

        for (Acervo acervo : minhalista) {
            Long b = null;
            jCB_Acervo.addItem(acervo.<WBR>getId() + " - " + acervo.getNome());
        }
    }

Parte que seria para selecionar o Id onde nao consigo fazer funcionar. Detalhe, criei 2 variaveis para teste, uma pega o texto completo do ComboBox e a outra pega o Indice que nao é igual ao meu Id.

private void jCB_AcervoActionPerformed(java.awt.event.ActionEvent evt) {                                             
        String a;   
        int b;   
        a = (String) jCB_Acervo.getSelectedItem();   
        b = jCB_Acervo.getSelectedIndex();   
        System.out.println("Tipo A: "+a);   
        System.out.println("Tipo B: "+b);   
}

4 Respostas

A

Eu já fiz uma coisa parecida com a sua, mas após o cara selecionar um dado no comboBox por exemplo o “Nome”, e clicar num botão como exemplo “Cadastrar”, eu ia no banco buscava o ID referente aquele nome e inseria na tabela, se quiser usar dessa meneira, faça um método que busque o ID do dado selecionado no comboBox…

ViniGodoy

Faça assim.

  1. Inclua acervos na sua combo:
public void listarComboBoxAcervo() throws SQLException {

        AcervoDao acervoDao = new AcervoDao();
        List&lt;Acervo&gt; minhalista = acervoDao.getCombo();

        for (Acervo acervo : minhalista) {
            jCB_Acervo.addItem(acervo);
        }
    }
  1. Sobrescreva o método toString() da classe Acervo pra que ele retorne a descrição (ou sei lá que campo vc queira mostrar na combo);
  2. Agora, retire acervos da sua combo:

private void jCB_AcervoActionPerformed(java.awt.event.ActionEvent evt) { Acervo acervo = (Acervo) jCB_Acervo.getSelectedItem(); System.out.println("Descrição: "+acervo.getNome()); System.out.println("Tipo B: "+acervo.getId()); }

J

Vini, nao sei pq esta aparecendo um monte de letra@mais letra rsrsrs, acho que é o passo 2 que nao entendi como funciona, voce pode me explicar melhr o passo 2, ja o passo 1 e 3 entendi bem a logica sem erro.

Valeu

ViniGodoy:
Faça assim.

  1. Inclua acervos na sua combo:
public void listarComboBoxAcervo() throws SQLException {

        AcervoDao acervoDao = new AcervoDao();
        List&lt;Acervo&gt; minhalista = acervoDao.getCombo();

        for (Acervo acervo : minhalista) {
            jCB_Acervo.addItem(acervo);
        }
    }
  1. Sobrescreva o método toString() da classe Acervo pra que ele retorne a descrição (ou sei lá que campo vc queira mostrar na combo);
  2. Agora, retire acervos da sua combo:

private void jCB_AcervoActionPerformed(java.awt.event.ActionEvent evt) { Acervo acervo = (Acervo) jCB_Acervo.getSelectedItem(); System.out.println("Descrição: "+acervo.getNome()); System.out.println("Tipo B: "+acervo.getId()); }

ViniGodoy

Na sua classe Acervo, crie o seguinte método:

@Override public String toString() { return getNome(); }

É ele que a combo usa para decidir como exibir o acervo.

Criado 10 de novembro de 2010
Ultima resposta 11 de nov. de 2010
Respostas 4
Participantes 3