Combo box funciona em uma tabela mas em outra não! [RESOLVIDO][COM RESPOSTA]

7 respostas
guisantogui

Tenho duas classes que extendem combo box, cada um para colocar um combo box em JTable diferentes, em uma das JTables funciona legal, mas na outra não! :?

Jah revirei o codigo diversas vezes, podem dar uma olhada?

Combo Box que NÃO funciona

package Classes.Modelos;

import java.sql.ResultSet;
import java.sql.SQLException;

public class CombTabContas extends ColunaComboBox{

    public CombTabContas(){
        super();
        initComboBox();
    }

    public void initComboBox(){
        try{
            ResultSet rs = super.getConnBD().getStm().executeQuery("SELECT tipo_pagamento FROM tipo_pag AS tp INNER JOIN fn_conta_tipo_pag AS fc ON tp.cod_tipo_pag = fc.cod_tipo_pag");
            if(rs.first()){
                do{
                    this.addItem(rs.getString(1));
                }
                while(rs.next());
            }
        }
        catch(SQLException sqle){
            sqle.printStackTrace();
        }
    }
}

Tabela que NÃO funciona (metodo que inicializa o JTable chamado no construtor)

public void initTabela(){
        try {
            stm = (Statement) gcbd.getBanco().getConexao().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
            rs = stm.executeQuery("SELECT fc.conta FROM tipo_pag AS tp INNER JOIN fn_conta_tipo_pag AS fc ON tp.cod_tipo_pag = fc.cod_tipo_pag");
            modelo = (DefaultTableModel) tabTipoPagamento.getModel();

            if(rs.first()){
                do{
                    modelo.addRow(new Object[]{rs.getString(1)});
                }
                while(rs.next());
            }
            rs.first();
        }
        catch (SQLException ex){
          ex.printStackTrace();
        }

        colunaCombo = tabTipoPagamento.getColumnModel().getColumn(1);
        colunaCombo.setCellEditor(new DefaultCellEditor(comboBox));

        modelo.addRow(new Object[]{});
        tabTipoPagamento.setModel(modelo);
    }

Combo box que FUNCIONA

package Classes.Modelos;

import java.sql.ResultSet;
import java.sql.SQLException;

public class CombTabCentCustGrup extends ColunaComboBox {

    public CombTabCentCustGrup(){
        super();
        initComboBox();
    }

    public void initComboBox(){
        try {
            ResultSet rs = super.getConnBD().getStm().executeQuery("SELECT descricao FROM fn_ccusto AS fc INNER JOIN fn_grupo_ccusto AS fg ON fc.codfnccusto = fg.ccusto");
            if(rs.first()){
               do{
                    this.addItem(rs.getString(1));
               }
               while(rs.next());
            }
        }
        catch (SQLException ex){
            ex.printStackTrace();
        }
    }
}

Tabela que FUNCIONA (metodo que inicializa o JTable chamado no construtor)

public void initTabela(){
        try {
            stm = (Statement) gcbd.getBanco().getConexao().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
            rs = stm.executeQuery("SELECT fg.grupo, fg.percentual FROM fn_grupo_ccusto AS fg INNER JOIN fn_ccusto AS fc ON fc.codfnccusto = fg.ccusto");
            modelo = (DefaultTableModel) tabCentroCustGrupos.getModel();

            if(rs.first()){
                do{
                    modelo.addRow(new Object[]{rs.getObject(1)});
                    modelo.setValueAt(rs.getObject(2), rs.getRow()-1, 2);
                }
                while(rs.next());
            }
            rs.first();
        }
        catch (SQLException ex){
            ex.printStackTrace();
        }

        comboBoxTab = tabCentroCustGrupos.getColumnModel().getColumn(1);
        comboBoxTab.setCellEditor(new DefaultCellEditor(colunaComb));
        
        modelo.addRow(new Object[]{});
        tabCentroCustGrupos.setModel(modelo);
    }

7 Respostas

M

dá alguma exception? se sim, qual?

guisantogui

Nenhuma excessão ou erro, simplesmente naum funciona D:

M

ué ^^
tem alguma coisa no banco nessas tabelas?

guisantogui

Sim, inclusive se eu mando ele printar os dados do combo box vem tudo legal!

E tipo eu depurei o troço e na linha de setar o CellEditor ele executava mas continuava como NULL, não sei pq?? D:

guisantogui

Gente consegui resolver o problema de um combo soh Deus sabe como, mas tive que fazer em outra janela e a mesma coisa acontece, a seguir codigos:

Combo da JTable que não funciona

package Classes.Modelos;

import java.sql.ResultSet;
import java.sql.SQLException;

public class CombTabGruposAssuntos extends ColunaComboBox{

    public CombTabGruposAssuntos(){
        super();
        initComboBox();
    }

    public void initComboBox(){
        try{
            ResultSet rs = super.getConnBD().getStm().executeQuery("SELECT descricao FROM fn_class_grupo");
            if(rs.first()){
                do{
                    this.addItem(rs.getString(1));
                }
                while(rs.next());
            }
        }
        catch(SQLException sqle){
            sqle.printStackTrace();
        }
    }
}

JTable que não funciona (metodo que inicializa tabela)

public void iniTab(){
       try{
           stm = gcbd.getBanco().getConexao().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
           rs = stm.executeQuery("SELECT fg.grupo, fg.descricao, fg.fluxo, fg.criterio, fg.considfluxo, fg.considcontab FROM fn_grupo AS fg INNER JOIN fn_class_grupo AS fc ON fg.classificacao = fc.codfnclassgrupo");
           modelo = (DefaultTableModel) tabGruposAssuntos.getModel();

           if(rs.first()){
               do{
                   modelo.addRow(new Object[]{rs.getObject(1), rs.getObject(2), rs.getObject(3), rs.getObject(4), rs.getObject(5), rs.getObject(6)});
               }
               while(rs.next());
           }
           rs.first();
       }
       catch(SQLException sqle){
           sqle.printStackTrace();
       }

       colunaCombo = tabGruposAssuntos.getColumnModel().getColumn(6);
       colunaCombo.setCellEditor(new DefaultCellEditor(combTabGrupAssuntos));

       modelo.addRow(new Object[]{});
       tabGruposAssuntos.setModel(modelo);
    }

Combo da JTable que funciona

package Classes.Modelos;

import java.sql.ResultSet;
import java.sql.SQLException;

public class CombTabCentCustGrup extends ColunaComboBox {

    public CombTabCentCustGrup(){
        super();
        initComboBox();
    }

    public void initComboBox(){
        try {
            ResultSet rs = super.getConnBD().getStm().executeQuery("SELECT descricao FROM fn_ccusto AS fc INNER JOIN fn_grupo_ccusto AS fg ON fc.codfnccusto = fg.ccusto");
            if(rs.first()){
               do{
                    this.addItem(rs.getString(1));
               }
               while(rs.next());
            }
        }
        catch (SQLException ex){
            ex.printStackTrace();
        }
    }
}

JTable que funciona (metodo que inicializa tabela)

public void initTabela(){ 
        try {
            stm = (Statement) gcbd.getBanco().getConexao().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
            rs = stm.executeQuery("SELECT fg.grupo, fg.percentual FROM fn_grupo_ccusto AS fg INNER JOIN fn_ccusto AS fc ON fc.codfnccusto = fg.ccusto");
            modelo = (DefaultTableModel) tabCentroCustGrupos.getModel();

            if(rs.first()){
                do{
                   modelo.addRow(new Object[]{rs.getObject(1), null, rs.getObject(2)});
                }
                while(rs.next());
            }
            rs.first();
        }
        catch (SQLException ex){
            ex.printStackTrace();
        }

        comboBoxTab = tabCentroCustGrupos.getColumnModel().getColumn(1);
        comboBoxTab.setCellEditor(new DefaultCellEditor(colunaComb));
        
        modelo.addRow(new Object[]{});
        tabCentroCustGrupos.setModel(modelo);
guisantogui

alguém?
ainda to quebrando a cuca!

guisantogui

Gente descobri!!!
Essa fica pra galera que tiver o mesmo problema!!

Eu tinha um evento de perda de foco na JTable e quando ele entrava na celula ele perdia o foco da JTable, consequentemente executando o meu codigo do evento e no evento eu tinha a interface cellEditor dando um stopEditing(), ao perder o foco por isso ele sempre perdia a edição quando eu clicava!!

vlw fica a dica a todos

Criado 14 de junho de 2010
Ultima resposta 15 de jun. de 2010
Respostas 7
Participantes 2