Erro ao clicar na Jlabel

7 respostas
java
F

private void AlbunsMouseClicked(java.awt.event.MouseEvent evt) {

Component index = Albuns.locate(WIDTH, WIDTH);
    //Point index = Albuns.location();
    if (index != null) {
            Object nomealbum = Albuns.getText();
            NoListaC<Album> b = (NoListaC) nomealbum;
            ArvoreBusca arvore = ArvoreBusca.getInstancia();
            No t = arvore.getNoAtual();
            Artista a1 = t.getArtista();
            a1.setAlbumAtual(b.getNomeAlbum());
            System.out.println(arvore.getNoAtual().getArtista().getAlbumAtual().musicas.estaVazia() );
            
            //System.out.println("passou aqui");
            //Object nomealbum = Albuns.getText();
            //NoListaC<Album> b = (NoListaC) nomealbum;
            //ArvoreBusca arvore = ArvoreBusca.getInstancia();
            //No t = arvore.getNoAtual();
            //Artista a1 = t.getArtista();
            //a1.setAlbumAtual(b.getNomeAlbum());
            //System.out.println(arvore.getNoAtual().getArtista().getAlbumAtual().musicas.estaVazia() );
           
      }
      
    IMusica2 frame = new IMusica2();
    frame.setVisible(true);
    dispose();
}

A mensagem de erro é:

Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: java.lang.String cannot be cast to Spotify.NoListaC

7 Respostas

staroski

A mensagem é bastante clara:
Não é possível fazer a coersão de java.lang.String para Spotify.NoListaC.

Veja seu código:

Object nomealbum = Albuns.getText();
NoListaC<Album> b = (NoListaC) nomealbum;

O método getText() sempre vai retornar um objeto do tipo String e a classe String é final, ou seja, não pode ser estendida.

Então não dá pra fazer cast de String para NoListaC.
NoListaC não estende String, são tipos de dados incompatíveis.

O que você tem que fazer é iterar os nós da sua árvore e encontrar aquele que tem o getNomeAlbum() igual ao nomealbum.

F

e como farei isso?

FearX

Iterando os nós da sua árvore, ora!

F

como faz essa iteração dos nos?

staroski

Isso depende de como você implementou as classes que compõe a estrutura da sua árvore de busca.

F

entende mais desse codigo vai ficar alguma coisa ou tenho que refazer tudo?:

F
private void AlbunsMouseClicked(java.awt.event.MouseEvent evt) {

Point index = Albuns.getLocation();

if (index == null) {

;

}

else{

System.out.println(passou aqui);
String nomealbum = Albuns.getText();
            NoListaC<Album> b = new NoListaC<>();
            Album a = new Album();//teste
            a.setNome(nomealbum);
            b.setNomeAlbum(a);
            
            ArvoreBusca arvore = ArvoreBusca.getInstancia();
            
            No t = arvore.getNoAtual();
            Artista a1 = t.getArtista();
         
            
            a1.setAlbumAtual(b.getNomeAlbum());
            
            System.out.println(t);
            System.out.println(a1);
            System.out.println(arvore.getNoAtual().getArtista().getAlbumAtual().musicas.estaVazia());
            System.out.println(a);
            System.out.println(b);
            
    }
   
    IMusica2 frame = new IMusica2();
    frame.setVisible(true);
    dispose();
}

coloquei assim agora arvore que e pra mostrar as musicas ta dando vaiza

Criado 6 de junho de 2019
Ultima resposta 6 de jun. de 2019
Respostas 7
Participantes 3