Delete ComboBox - JAVA

9 respostas
L

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");
    
   }

9 Respostas

Jonathan_Medeiros

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!");    
}
L

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();
Jonathan_Medeiros

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!

L
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!);

}
Jonathan_Medeiros

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
L

Não percebi isso! Vou modificar aqui

L
 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

L

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

Jonathan_Medeiros

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.

Criado 11 de dezembro de 2017
Ultima resposta 12 de dez. de 2017
Respostas 9
Participantes 2