Bom dia a todos
Espero que possam me ajudar tenho dois ComboBox no meu sistema de cadastro, no qual a partir da seleção no primeiro deve ser populado os items correspondentes no segundo, o primeiro combo tem duas categorias, uma id 0 e outra com id 1 consegui fazer com que filtre e popule as combobox de acordo, com a seleção, mas
Na hora de usar o removeAllItems(), para zerar o segundo comboxbox a cada seleção no primeiro, o setSelectedIndex -1, da erro e não salva caso eu selecione o primeiro item, do segundo combobox
E caso eu tire o -1 do setSelectedIndex, ele permite a seleção e permite salvar mas caso a selecione no ´primeiro combo a categoria 0 e posteriormente a 1 ele salva o os item selecionados com a chave estrangeira da categoria que primeiro foi selecionada.
variáveis criadas na view pra controlar a chave primaria das combobox
Vector<Integer> idTipo = new Vector<Integer>();
Vector<Integer> idTipoDrads = new Vector<Integer>();
Vector<Integer> idTipoDrads1 = new Vector<Integer>();
int codDrads;
int codCargo;
codgo que busca os dados no banco
// listar cargos para combobox
public ResultSet listarCargo() {
conectar();
String sql = "SELECT * FROM tb_cargo_funcao ORDER BY descricao_cargfun;";
try {
PreparedStatement stms = criarPreparedStatement(sql);
return stms.executeQuery();
} catch (SQLException e) {
System.err.println(e.getMessage());
return null;
}
}
// listar drads para a combobox
public ResultSet listarDradsinterior(int idcargo) {
conectar();
String sql = "SELECT * FROM tb_drads WHERE fk_id_cargo_funcao = ? ORDER BY nome_drads;";
try {
PreparedStatement stms = criarPreparedStatement(sql);
stms.setInt(1, idcargo);
return stms.executeQuery();
} catch (SQLException e) {
System.err.println(e.getMessage());
return null;
}
}
populando as tabelas
// popular combobox Cargos
public void popularComboBoxCargo() {
try {
DAOUsuario dAoUsu = new DAOUsuario();
ResultSet rs = dAoUsu.listarCargo();
while (rs.next()) {
idTipo.addElement(rs.getInt(1));
cbxUsuCargoFuncao.addItem(rs.getString(3));
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Carregar cargos ");
}
}
// popular combobos Drads - Drads interior
public void popularComboBoxDrads(int idCargo) {
codCargo = idTipo.get(cbxUsuCargoFuncao.getSelectedIndex()-1);
try {
DAOUsuario dUsu = new DAOUsuario();
ResultSet rs = dUsu.listarDradsinterior(idCargo);
while (rs.next()) {
idTipoDrads.addElement(rs.getInt(1));
idTipoDrads1.addElement(rs.getInt(2));
cbxUsuDrads.addItem(rs.getString(3));
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "carregar DRADS");
}
}
metodo do botão registrar
private void btnRegistrarActionPerformed(java.awt.event.ActionEvent evt) {
// ações do botão registrar
cbxUsuCargoFuncao.setVisible(true);
cbxUsuDrads.setVisible(true);
lblCargo.setVisible(true);
lblDrads.setVisible(true);
if (cadAlt.equals("cad")) {
int codCargo;
codCargo = idTipo.get(cbxUsuCargoFuncao.getSelectedIndex() - 1);
codDrads = idTipoDrads.get(cbxUsuDrads.getSelectedIndex());
mUsu = new ModelUsuario();
mUsu.setUsuNome(txtUsuNome.getText());
mUsu.setUsuEmail(txtUsuEmail.getText());
mUsu.setUsuRg(txtUsuRg.getText());
mUsu.setUsuCpf(txtUsuCpf.getText());
try {
mUsu.setFkIdCargoFuncao(codCargo);
mUsu.setFkIdDrads(codDrads);
JOptionPane.showMessageDialog(null, "id Salvo " + codCargo + "id salco drads " + codDrads);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "erro" + e);
}
try {
mUsu.setUsuDataNasc(dtFormat.parse(txtDataNascimento.getText()));
} catch (ParseException ex) {
JOptionPane.showMessageDialog(this, "Digite uma data Valida", "Aletra", JOptionPane.ERROR_MESSAGE);
}
if (controllerUsuario.salvarUsuarioController(mUsu)) {
// cadastrou novo usuario
JOptionPane.showMessageDialog(this, "Usuario Cadastrado com Sucesso", "informação", JOptionPane.INFORMATION_MESSAGE);
limpaFormulario();
carregaListaUsuario();
} else {
JOptionPane.showMessageDialog(this, "Não foi Possivel efetuar o Cadastro", "Alerta de Erro", JOptionPane.ERROR_MESSAGE);
}
} else {
// salvar alteração
mUsu = new ModelUsuario();
mUsu.setPkUsuarioId(Integer.parseInt(txtId.getText()));
mUsu.setUsuNome(txtUsuNome.getText());
mUsu.setUsuEmail(txtUsuEmail.getText());
mUsu.setUsuRg(txtUsuRg.getText());
mUsu.setUsuCpf(txtUsuCpf.getText());
try {
mUsu.setFkIdCargoFuncao((int) cbxUsuCargoFuncao.getSelectedItem());
mUsu.setFkIdDrads((int) cbxUsuDrads.getSelectedItem());
JOptionPane.showMessageDialog(null, "id Salvo " + cbxUsuCargoFuncao.getSelectedIndex() + "id salco drads " + cbxUsuDrads.getSelectedIndex());
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "erro" + e);
}
try {
mUsu.setUsuDataNasc(dtFormat.parse(txtDataNascimento.getText()));
} catch (ParseException ex) {
JOptionPane.showMessageDialog(this, "Digite uma data Valida", "Aletra", JOptionPane.ERROR_MESSAGE);
}
if (controllerUsuario.atualizarUsuariocontroller(mUsu)) {
// alterou usuario
JOptionPane.showMessageDialog(this, "Usuario Alterado com Sucesso!", "Informação", JOptionPane.INFORMATION_MESSAGE);
limpaFormulario();
carregaListaUsuario();
} else {
JOptionPane.showMessageDialog(this, "Erro ao Editar Usuario", "Alerta de ERRo!", JOptionPane.ERROR_MESSAGE);
}
}
}
metodo de ação do primeito combobox
private void cbxUsuCargoFuncaoActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
codCargo = idTipo.get(cbxUsuCargoFuncao.getSelectedIndex() - 1);
cbxUsuDrads.removeAllItems();
popularComboBoxDrads(codCargo);
cbxUsuDrads.setEnabled(true);
}