Jump to content
noorders

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

Recommended Posts

noorders

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

Share this post


Link to post
Share on other sites
Baderous

Por acaso não estás a popular a JList com Strings? É que se estás, é por causa disso. O getSelectedValue() está a devolver uma String.

Share this post


Link to post
Share on other sites
noorders

Pois, Baderous tens 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?

Share this post


Link to post
Share on other sites
Baderous

Estás a aceder ao índice 3 do array, mas o array tem menor dimensão que isso.

Share this post


Link to post
Share on other sites
noorders

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.