Delete ComboBox - JAVA

Estou desenvolvendo uma aplicação em JAVA conectada ao Postgree e preciso fazer uma deleção em um Combobox, segue a deleção abaixo, o Netbeans mostra o erro na linha grifada, mais não especifica o que está errado. Alguem pode ajudar?

if(jComboBox1.getSelectedIndex()!= -1) {

      Especialidade e = new Especialidade();
       EspecialidadeDao dao = new EspecialidadeDao();

        e.setIdEspecialidade(int)jComboBox1.removeItemAt(jComboBox1.getSelectedIndex()); //ERRO
        
        dao.remover(e);
   
   }else{
       JOptionPane.showMessageDialog(null, "Selecione um item para excluir");
    
   }

Tente fazer desta forma:

if(jComboBox1.getSelectedIndex() != -1) {	
    Especialidade e = new Especialidade();
    EspecialidadeDao dao = new EspecialidadeDao();

    e = (Especialidade) jComboBox1.getSelectedItem();
        
    dao.remover(e);
    jComboBox1.removeItem(e);	
} else {
	JOptionPane.showMessageDialog(null, "Selecione um item para excluir!");    
}

Ele não mostrou mais o erro, porém quando compilei e executei o comando ele não faz nada e mostra erro:

Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: java.lang.String cannot be cast to com.br.entidades.Especialidade
at com.br.telas.TelaRegistroEspecialidade.jButton3ActionPerformed(TelaRegistroEspecialidade.java:166)
at com.br.telas.TelaRegistroEspecialidade.access$400(TelaRegistroEspecialidade.java:10)
at com.br.telas.TelaRegistroEspecialidade$5.actionPerformed(TelaRegistroEspecialidade.java:85)
e mais alguns… no caso a linha 166 é onde tem: e = (Especialidade) jComboBox1.getSelectedItem();

Isso acontece por que provavelmente você está preenchendo sua comboBox com strings ao invés de objetos!

Mude seu método de carregar a comboBox para retornar objetos para a combo ao invés de strings, isso vai fazer com que o código acima funcione normalmente!

eu mexi nele ontem e ficou assim: ele agora ta funcionando em parte, ele executa sem erro e até informa que foi removido, porém ele não remove na tabela do banco!
if(jComboBox1.getSelectedIndex() != -1) {
Especialidade es = new Especialidade();
EspecialidadeDao dao = new EspecialidadeDao();

es.setIdEspecialidade((int) jComboBox1.getSelectedIndex()); 
jComboBox1.removeItem(jComboBox1.getSelectedIndex());
dao.remover(es);

} else {
JOptionPane.showMessageDialog(null, “Selecione um item para excluir!”);
}

Desse jeito não vai funcionar!

Perceba que você está recuperando o index da combo e passando como ID para o objeto e realizando a exclusão! (Index e ID são coisas totalmente distintas).

Exemplo:

Index  Descrição  ID
   0   teste 1     3 
   1   teste 2     2
   2   teste 3     1
1 curtida

Não percebi isso! Vou modificar aqui

Só trocar
jComboBox1.removeItem(jComboBox1.getSelectedIndex());
por
jComboBox1.removeItem(jComboBox1.getSelectedItem());

Funcionando Perfeito! Valeu cara! Tava de cabeça quente aqui ai deixei passar despercebido! Obrigado

Cara me animei antes do tempo, ele ta removendo do combobox mais não remove no banco! Não sei mais o que fazer ja fiz tudo, refiz e não consegui achar a solução

Foi o que eu te disse exatamente no início do tópico, você tem que modificar o seu método que preenche a comboBox com strings de especialidades para preencher com objetos do tipo especialidade!

Desta forma ao recuperar o Item da combo, temos ele como um todo, podendo conter descrição, ID e qualquer outro atributo que a classe de modelo possua.

1 curtida