[RESOLVIDO] Apagar objecto da JList e de um ficheiro que guarda valores de objectos

Boa tarde!

Tenho uma JList onde me são apresentados Objectos do tipo Jogo (um tipo de classe que criei) que eu tenho guardados num ficheiro de objectos.

Nessa JList tenho as opções Abrir, Apagar e Cancelar. Quando escolho a opção apagar o programa dá um estouro deste género:

Exception occurred during event dispatching:
java.lang.ClassCastException: java.lang.String cannot be cast to Jogo.Base.Jogo

Código do botão apagar:

JButton btnApagar = new JButton("Apagar"); btnApagar.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (Jogo.getJogosGravados().isEmpty()) { // Verificar se o ArrayList de jogoGravados está vazio JOptionPane.showMessageDialog(null, "Não existem jogos gravados.", "Jogos Gravados", JOptionPane.INFORMATION_MESSAGE); } else { Jogo jogoSeleccionado = (Jogo) minhaLista.getSelectedValue(); //estoura aqui int indice = minhaLista.getSelectedIndex(); minhaLista.remove(indice-1); jogoSeleccionado.removeJogo(); } } });

Alguém pode ajudar?

Cumps

Como você fez para preencher essa lista?

Acontece que no interior desse JList estão objetos do tipo String, e não do tipo Jogo. Para corrigir, você precisará ter uma lista de jogos, e não uma lista de nomes de jogos.

Pois, Vini tem razão.

Eu estava a popular a Jlist a invocar ao mesmo tempo o toString() do Jogo e por isso dava esse erro.

Removi a chamada do toString() e agora está a gerar-me um erro de estouro no ArrayList.

Erro:
Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 3

JButton btnApagar = new JButton("Apagar"); btnApagar.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (Jogo.getJogosGravados().isEmpty()) { // Verificar se o ArrayList de jogoGravados está vazio JOptionPane.showMessageDialog(null, "Não existem jogos gravados.", "Jogos Gravados", JOptionPane.INFORMATION_MESSAGE); // Cria uma caixa de mensagem do tipo informativo } else { Jogo jogoSeleccionado = (Jogo) minhaLista.getSelectedValue(); int indice = minhaLista.getSelectedIndex(); minhaLista.remove(indice); //estoura aqui jogoSeleccionado.removeJogo(); } } });

Estarei a utilizar os métodos correctos?

Cumps

Já resolvi.

Estava a fazer remove na variável da minha JList quando deveria fazer na variável da DefaultListModel.

Obrigado pela atenção.

Cumprimentos