Olá Esller,
Ok, segue meus códigos.
Meu DAO(que popula a JComboBox):
public List getContasTotalizadoras() {
conn = null;
ArrayList cp = new ArrayList<>();
String sql = “SELECT * FROM contascontabeis WHERE lancavel = ‘N’ ORDER BY conta ASC”;
try {
conn = ConexaoPostGreSql.getConexao();
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
while (rs.next()) {
CContasContabeis cp2 = new CContasContabeis();
cp2.setConta(rs.getInt(“conta”));
cp2.setDescricao(rs.getString(“descricao”));
cp2.setTotalizadora(rs.getInt(“totalizadora”));
cp2.setLancavel(rs.getString(“lancavel”));
cp.add(cp2);
}
ConexaoPostGreSql.fechaConexao(conn, pst, rs);
} catch (SQLException | ClassNotFoundException | IOException e) {
JOptionPane.showMessageDialog(null, “Erro ao listar as contas!\n”+e.getMessage());
}
return cp;
}
Meu Combo Model:
import java.util.ArrayList;
import java.util.List;
import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;
import controle.CContasContabeis;
public final class ContasContabeisComboModel extends AbstractListModel implements ComboBoxModel{
private List listContas;
private CContasContabeis selectedContas;
private final static int FIRSTINDEX = 0;
public ContasContabeisComboModel() {
this.listContas = new ArrayList<>();
}
public ContasContabeisComboModel(List listContaContabeis){
this();
this.listContas.addAll(listContaContabeis);
if (getSize() > 0) {
setSelectedItem(this.listContas.get(FIRSTINDEX));
}
}
@Override
public Object getElementAt(int index){
return listContas.get(index);
}
@Override
public int getSize() {
return listContas.size();
}
@Override
public Object getSelectedItem(){
return selectedContas;
}
@Override
public void setSelectedItem(Object anItem){
selectedContas = (CContasContabeis) anItem;
}
public void addConta(CContasContabeis cs){
listContas.add(cs);
fireIntervalAdded(this, getSize() - 1, getSize() - 1);
setSelectedItem(listContas.get(getSize() - 1));
}
public void addListConta(List cs2){
int primeiraLinha = getSize();
listContas.addAll(cs2);
fireIntervalAdded(this, primeiraLinha, primeiraLinha + cs2.size());
setSelectedItem(listContas.get(getSize() - 1));
}
public void removeConta(){
listContas.remove(getSelectedItem());
fireIntervalRemoved(this, FIRSTINDEX, getSize() - 1);
setSelectedItem(listContas.get(FIRSTINDEX));
}
public void clear(){
listContas.clear();
fireContentsChanged(this, FIRSTINDEX, getSize() - 1);
}
}
Meu Combo Renderer:
import java.awt.Component;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JList;
import controle.CContasContabeis;
public class ContasContabeisCellRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList<? extends Object> list,
Object value, int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value instanceof CContasContabeis) {
CContasContabeis cs = (CContasContabeis) value;
setText(String.valueOf(cs.getConta()));
}
return this;
}
}
E o método que eu uso, para quando clicar na tabela, enviar os dados para edição no Form:
private void PreencheCamposEditar() {
int row = tabelacontascontabeis.getSelectedRow();
txtconta.setText(tabelacontascontabeis.getModel().getValueAt(row, 1).toString());
txtdescricao.setText(tabelacontascontabeis.getModel().getValueAt(row, 2).toString());
int tot = (int) tabelacontascontabeis.getModel().getValueAt(row, 3);
System.out.println("Conta Totalizadora Selecionada: " + tot);
if (tot == 0) {
cbtotalizadora.setSelectedIndex(-1);
} else {
//Aqui que não dá certo
}
String lancavel = tabelacontascontabeis.getModel().getValueAt(row, 4).toString();
if (lancavel.equals("S")) {
rbsim.setSelected(true);
rbnao.setSelected(false);
} else {
rbsim.setSelected(false);
rbnao.setSelected(true);
}
btgravar.setEnabled(false);
btcancelar.setEnabled(true);
bteditar.setEnabled(true);
btatualizar.setEnabled(false);
btinserir.setEnabled(false);
jtpcontascontabeis.setSelectedIndex(1);
}