Jtable não reflete os JcomboBoxs

bom dia,

Estou conseguindo refletir JtextFields da Jtable, mas os JcomboBox não

Tabelas:

CREATE TABLE tbl_estado(
estado_id INT(20) AUTO_INCREMENT, 
estado_sg CHAR(3),
estado_nome VARCHAR(50),
PRIMARY KEY (estado_id)
);


INSERT INTO tbl_estado (estado_sg, estado_nome) VALUES ('SP', 'Acre');
INSERT INTO tbl_estado (estado_sg, estado_nome) VALUES ('AL', 'Alagoas');

CREATE TABLE tbl_ddd(
ddd_id INT(20) AUTO_INCREMENT, 
ddd_ddd VARCHAR(5),
ddd_estsigla VARCHAR(50),
PRIMARY KEY (ddd_id)
);


INSERT INTO tbl_ddd (ddd_ddd, ddd_estsigla) VALUES ('12', 'SP');
INSERT INTO tbl_ddd (ddd_ddd, ddd_estsigla) VALUES ('82', 'AL');
INSERT INTO tbl_ddd (ddd_ddd, ddd_estsigla) VALUES ('92', 'AM');

CREATE TABLE tbl_corretor(
corr_id INT(20) AUTO_INCREMENT, 
corr_nome VARCHAR(100),
corr_cpf VARCHAR(20),       
corr_endereco VARCHAR(255),
corr_cep VARCHAR(12),
corr_estado_id INT(20),
corr_ddd_id INT(20), 
corr_tel VARCHAR(20), 
PRIMARY KEY (corr_id),
FOREIGN KEY (corr_estado_id)REFERENCES tbl_estado(estado_id), 
FOREIGN KEY (corr_ddd_id)REFERENCES tbl_ddd(ddd_id)
);

Aqui carrega normalmente no WorkBench

SELECT
  ta.corr_id,
  ta.corr_nome,
  ta.corr_cpf,
  ta.corr_endereco,
  ta.corr_cep,
  tb.estado_sg,
  tc.ddd_ddd,
  ta.corr_tel  
FROM
  tbl_corretor ta
    INNER JOIN 
	tbl_estado tb ON (ta.corr_estado_id = tb.estado_id)
INNER JOIN 
	tbl_ddd tc ON (ta.corr_ddd_id = tc.ddd_id);

Saída:
corr_id  corr_nome     corr_cpf     corr_endereco     corr_cep    
1           mario batata  456           r feliz                     4444
2           joaquim         55547       r andrades            20030500
estado_sg    ddd_ddd  corr_tel
sp                 12            5252222
sp                  12           9998888

Java

public class ModelEstado {
    private Integer id;
    private String estadoSiglaModelEstado;
    private String estadoNome;    

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getEstadoSiglaModelEstado() {
        return estadoSiglaModelEstado;
    }

    public void setEstadoSiglaModelEstado(String estadoSiglaModelEstado) {
        this.estadoSiglaModelEstado = estadoSiglaModelEstado;
    }

    public String getEstadoNome() {
        return estadoNome;
    }

    public void setEstadoNome(String estadoNome) {
        this.estadoNome = estadoNome;
    }
}

public class ModelDdd {
    private Integer id;
    private Integer dddModelDdd;
    private String estadoSigla;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getDddModelDdd() {
        return dddModelDdd;
    }

    public void setDddModelDdd(Integer dddModelDdd) {
        this.dddModelDdd = dddModelDdd;
    }

    public String getEstadoSigla() {
        return estadoSigla;
    }

    public void setEstadoSigla(String estadoSigla) {
        this.estadoSigla = estadoSigla;
    }
}

View

public FRMCorretor() {
        initComponents();
        DefaultTableModel modelo = (DefaultTableModel) jTableCorretor.getModel();
        jTableCorretor.setRowSorter(new TableRowSorter(modelo));
       
        readJTable(daoCorretor.getSqlCorretor());
        
        estados = new HashMap<>();
        ddds = new HashMap<>();
        
        // filling the jcomboBox
        fillJcomboBoxEstado();
        fillJcomboBoxDDD();

        TableCellRenderer renderer = new JTableAlternateColors04();
        jTableCorretor.setDefaultRenderer(Object.class, renderer);
        jTableCorretor.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);


public void fillJcomboBoxEstado() {
        Connection con = ConnectionFactory.getConnnection();
        PreparedStatement pstmt = null;
        ResultSet rs = null;

        try {
            String sql = daoCorretor.getSqlEstados(); // could be "SELECT field FROM  a table"
            pstmt = con.prepareStatement(sql);
            rs = pstmt.executeQuery();
            while (rs.next()) {
                String estado_sg = rs.getString("estado_sg"); // a certain field from a table
                jComboBoxEstado.addItem(estado_sg);
                ModelEstado estado = new ModelEstado();
                estado.setId(rs.getInt("estado_id"));
                estado.setEstadoSiglaModelEstado(rs.getString("estado_sg"));
                estado.setEstadoNome(rs.getString("estado_nome"));
                estados.put(estado.getEstadoSiglaModelEstado(), estado);
            }

        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex);
        }
        ConnectionFactory.closeConnection(con, pstmt, rs);
    }// end fillJcomboBoxEstado
     
     
    public void fillJcomboBoxDDD() {
        Connection con = ConnectionFactory.getConnnection();
        PreparedStatement pstmt = null;
        ResultSet rs = null;

        try {
            String sql = daoCorretor.getSqlDDD(); // could be "SELECT field FROM  a table"
            pstmt = con.prepareStatement(sql);
            rs = pstmt.executeQuery();
            while (rs.next()) {
                String ddd_ddd = rs.getString("ddd_ddd"); // a certain field from a table
                jComboBoxDDD.addItem(ddd_ddd);
                ModelDdd ddd = new ModelDdd();
                ddd.setId(rs.getInt("ddd_id"));
                ddd.setEstadoSigla(rs.getString("ddd_estsigla"));
                ddd.setDddModelDdd(rs.getInt("ddd_ddd"));
                ddds.put(ddd.getDddModelDdd(), ddd);
            }

        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex);
        }
        ConnectionFactory.closeConnection(con, pstmt, rs);
    }// end fillJcomboBoxDDD

.
.
.

 private void loadFields(String sql) {
        Connection con = ConnectionFactory.getConnnection();

        PreparedStatement stmt = null;

        ResultSet rs = null;
        try {

            stmt = con.prepareStatement(sql);
            rs = stmt.executeQuery();
            while (rs.next()) {

                // tudo entre "" vem direto do codigo sql, "id_login" vem
                // da tabela tbl_login
                jTextFieldId.setText(String.valueOf(rs.getInt("corr_id")));
                // keep_id = Integer.parseInt(jTextFieldId.getText());

                jTextFieldNome.setText(rs.getString("corr_nome"));
                jTextFieldCPF.setText(rs.getString("corr_cpf"));
                jTextFieldEndereco.setText(rs.getString("corr_endereco"));
                jTextFieldCEP.setText(rs.getString("corr_cep"));
                
                // NÃO utilizar campo "corr_ddd_id" da tabela tbl_corretor,
                // USE o campo "ddd_ddd" da tabela tbl_ddd
                
                jTextFieldTel.setText(rs.getString("corr_tel"));                
                //JcomboBox
                jComboBoxEstado.setSelectedItem(rs.getString("estado_sg"));
                // NÃO utilizar campo "corr_estado_id" da tabela tbl_corretor,
                // USE o campo "estado_sg" da tabela tbl_estado
                
                jComboBoxDDD.setSelectedItem(rs.getString("ddd_ddd"));
                

            }
           
            keep_id = Integer.parseInt(jTextFieldId.getText());

        } catch (Exception e) {
            e.getMessage();
        } finally {
            ConnectionFactory.closeConnection(con, stmt, rs);

        }

    }

Dao de Estado e DDD

public List<ModelCorretor> read(String sql) {
        Connection con = ConnectionFactory.getConnnection();

        PreparedStatement pstmt = null;

        ResultSet rs = null;

        List<ModelCorretor> modelCorretores = new ArrayList<>();

        try {
            pstmt = con.prepareStatement(sql);
            rs = pstmt.executeQuery();

            while (rs.next()) {
                ModelCorretor mCorretor = new ModelCorretor();

                mCorretor.setId(rs.getInt("corr_id"));
                mCorretor.setNome(rs.getString("corr_nome"));
                mCorretor.setCpf(rs.getString("corr_cpf"));
                
                mCorretor.setEndereco(rs.getString("corr_endereco"));
                
                mCorretor.setCep(rs.getString("corr_cep"));
                
                ModelEstado estado = new ModelEstado();
                estado.setId(rs.getInt("corr_estado_id"));
                estado.setEstadoNome(rs.getString("estado_nome"));
                estado.setEstadoSiglaModelEstado(rs.getString("estado_sg"));
                
                mCorretor.setEstadoModelCorretor(estado);
                
                ModelDdd ddd = new ModelDdd();
                ddd.setId(rs.getInt("corr_ddd_id")); 
                ddd.setDddModelDdd(rs.getInt("ddd_ddd"));
                ddd.setEstadoSigla(rs.getString("ddd_estsigla"));
                
                mCorretor.setDdd(ddd);
                
                mCorretor.setTel(rs.getString("corr_tel"));

                modelCorretores.add(mCorretor);

            }
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro ao ler lista A\nErro : " + ex);
        } finally {                  
             ConnectionFactory.closeConnection(con, pstmt, rs);
        }
        return modelCorretores;
    }// end read
    
    
    public List<ModelEstado> readEstado(String sqlEstado){
        Connection con = ConnectionFactory.getConnnection();

        PreparedStatement pstmt = null;

        ResultSet rs = null;

        List<ModelEstado> modelEstados = new ArrayList<>();

        try {
            pstmt = con.prepareStatement(sqlEstado);
            rs = pstmt.executeQuery();

            while (rs.next()) {
                ModelEstado mEstado = new ModelEstado();

                mEstado.setId(rs.getInt("estado_id"));
                mEstado.setEstadoSiglaModelEstado(rs.getString("estado_sg"));
                mEstado.setEstadoNome(rs.getString("estado_nome"));
                
                modelEstados.add(mEstado);
                
                

            }
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro ao ler lista\nErro B: " + ex);
        } finally {                  
             ConnectionFactory.closeConnection(con, pstmt, rs);
        }
        return modelEstados;
        
    } // end readEstado
    
    
    public List<ModelDdd> readDDD(String sqlDdd){
        Connection con = ConnectionFactory.getConnnection();

        PreparedStatement pstmt = null;

        ResultSet rs = null;

        List<ModelDdd> modelDdds = new ArrayList<>();

        try {
            pstmt = con.prepareStatement(sqlDdd);
            rs = pstmt.executeQuery();

            while (rs.next()) {
                ModelDdd mDdd = new ModelDdd();

                mDdd.setId(rs.getInt("ddd_id"));
                mDdd.setDddModelDdd(rs.getInt("ddd_ddd"));
                mDdd.setEstadoSigla(rs.getString("ddd_estsigla"));
                
                modelDdds.add(mDdd);
                
                

            }
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro ao ler lista C\nErro : " + ex);
        } finally {                  
             ConnectionFactory.closeConnection(con, pstmt, rs);
        }
        return modelDdds;
        
    }// end readDDD

public  String getSqlCorretor(){
        return " SELECT\n" +
                "  ta.corr_id,\n" +
                "  ta.corr_nome,\n" +
                "  ta.corr_cpf,\n" +
                "  ta.corr_endereco,\n" +
                "  ta.corr_cep,\n" +
                "  ta.corr_estado_id,\n" +
                "  ta.corr_ddd_id,\n" +
                "  tb.estado_sg,\n" +
                "  tb.estado_nome,\n" +
                "  tc.ddd_ddd, \n" +
                "  tc.ddd_estsigla, \n" +
                "  ta.corr_tel  \n" +
                "FROM\n" +
                "  tbl_corretor ta\n" +
                "    INNER JOIN tbl_estado tb ON (ta.corr_estado_id = tb.estado_id)\n" +
                "    INNER JOIN tbl_ddd tc ON (ta.corr_ddd_id = tc.ddd_id)";
    }

SP ACRE , estas inserções foram feitas aqui na correria

Continuando a discussão do Pegar dados da JTable e inserir em uma ComboBox[RESOLVIDO]:

Continuando a discussão do Sorteio de String sem repetição:

Acho que isso aqui pode te ajudar.

1 curtida

valeu, vou ver com calma