JComboBox, só mostra uma linha

Bom dia galera.

Estou com um problema em um formulário aqui.

Tenho dois JComboBox, no FocusLost do primeiro eu executo uma query e preencho o segundo.
Porém quando eu clico pela primeira vez no segundo ele abre pouco, só dá pra ver uma linha, mas se eu clico nele de novo ele abre normalmente.

Uma imagem vale mais do que mil palavras:

E o código do FocusLost:

[code]private void cbProdutosFocusLost(java.awt.event.FocusEvent evt) {
// TODO add your handling code here:
cbFormulas.removeAllItems();

    int codProd = parsearString(cbProdutos.getSelectedItem().toString());

    String sql = "SELECT id || '-' || nome AS idnome FROM formulas, prodform "+
                 "WHERE "+ codProd +" <> produto "+
                 "GROUP BY id, nome ORDER BY id;";

    System.out.println(codProd);

    conFormProd.executarSQL(sql);

    try{
        while(conFormProd.resultset.next()){
            cbFormulas.addItem(conFormProd.resultset.getString("idnome"));
        }
    }
    catch(SQLException ex){
        System.out.println("Erro. "+ex);
    }
}[/code]

Socorro, estou com o mesmo problema, voce já tema a solução?

Grato,

José Neto

[quote=andask]Bom dia galera.

Estou com um problema em um formulário aqui.

Tenho dois JComboBox, no FocusLost do primeiro eu executo uma query e preencho o segundo.
Porém quando eu clico pela primeira vez no segundo ele abre pouco, só dá pra ver uma linha, mas se eu clico nele de novo ele abre normalmente.

Uma imagem vale mais do que mil palavras:

E o código do FocusLost:

[code]private void cbProdutosFocusLost(java.awt.event.FocusEvent evt) {
// TODO add your handling code here:
cbFormulas.removeAllItems();

    int codProd = parsearString(cbProdutos.getSelectedItem().toString());

    String sql = "SELECT id || '-' || nome AS idnome FROM formulas, prodform "+
                 "WHERE "+ codProd +" <> produto "+
                 "GROUP BY id, nome ORDER BY id;";

    System.out.println(codProd);

    conFormProd.executarSQL(sql);

    try{
        while(conFormProd.resultset.next()){
            cbFormulas.addItem(conFormProd.resultset.getString("idnome"));
        }
    }
    catch(SQLException ex){
        System.out.println("Erro. "+ex);
    }
}[/code][/quote]

Eu troquei para o ItemStateChanged.
Mas aí você tem que colocar uma flag. Pq esse evento é “lançado” 2 vezes.
O que, dependendo da implementação dele, pode deixar seu programa mais lento.

não use SQL Injection

http://www.guj.com.br/posts/list/224716.java

Boa tarde,

Tentem o seguinte:

meuComboBox.setMaximumRowCount(count);

Onde “count”, é igual o numero maximo de linhas a serem exibidas.

[]s

Não entendi, desulpe sou iniciante, como coloco essa flag, vou postar meu codigo.

    private void jCB_TipoUnidadeArquivamentoItemStateChanged(java.awt.event.ItemEvent evt) {                                                             
            // TODO add your handling code here:
        try {
        listarComboBoxTipoUnidadeArquivamento();
        } catch (SQLException ex) {
            Logger.getLogger(JDialogUnidadeArquivamento.class.getName()).log(Level.SEVERE, null, ex);
        }
    }                                                            

Voce pode me ajudar a resolver?

Grato

José Neto

[quote=andask]Eu troquei para o ItemStateChanged.
Mas aí você tem que colocar uma flag. Pq esse evento é “lançado” 2 vezes.
O que, dependendo da implementação dele, pode deixar seu programa mais lento.[/quote]