Erro ao tentar carregar uma imagem (jogo de TRUCO)

4 respostas
d34d_d3v1l

Oi gente,

estou fazendo um jogo de truco com interface gráfica, porém estou me deparando com um erro de “java.lang.NullPointerException”… Vou explicar rapidamente como funciona a minha “lógica”…

Criei a classe “Carta” que contém:
-String nome
-Int valor
-Icon imagem

A ideia é adicionar as gifs das imagens dentro de cada objeto… Segue uma parte do código da classe Carta:

public class Carta {

    private String nome;
    int valor;
    public Icon imagem;

    public Carta(String nome, int valor, Icon imagem) {
        this.nome = nome;
        this.valor = valor;
        this.imagem = imagem;
    }
}

Depois na janela “Mesa” criei um arrayList:

ArrayList<Carta> baralho;

ae fiz o seguinte:

public Mesa() {
        super("Computador x Jogador");
        initComponents();
        setLocationRelativeTo(null);

        Carta carta1 = new Carta("4 de paus",100,new ImageIcon(getClass().getResource("GUI/4c.gif")));
        Carta carta2 = new Carta("7 de copas",99,new ImageIcon(getClass().getResource("GUI/7h.gif")));
        Carta carta3 = new Carta("7 de ouros",97,new ImageIcon(getClass().getResource("GUI/7d.gif")));
        Carta carta4 = new Carta("A de espada",98,new ImageIcon(getClass().getResource("GUI/as.gif")));
        Carta carta5 = new Carta("3 de paus", 96, new ImageIcon(getClass().getResource("GUI/3c.gif")));
        Carta carta6 = new Carta("3 de copas", 96, new ImageIcon(getClass().getResource("GUI/3h.gif")));
        Carta carta7 = new Carta("3 de espada", 96, new ImageIcon(getClass().getResource("GUI/3s.gif")));
        Carta carta8 = new Carta("3 de ouros", 96, new ImageIcon(getClass().getResource("GUI/3d.gif")));
        Carta carta9 = new Carta("2 de paus", 95, new ImageIcon(getClass().getResource("GUI/2c.gif")));
        Carta carta10 = new Carta("2 de copas", 95, new ImageIcon(getClass().getResource("GUI/2h.gif")));
        Carta carta11 = new Carta("2 de espada", 95, new ImageIcon(getClass().getResource("GUI/2s.gif")));
        Carta carta12 = new Carta("2 de ouros", 95, new ImageIcon(getClass().getResource("GUI/2d.gif")));
        Carta carta13 = new Carta("A de paus", 94, new ImageIcon(getClass().getResource("GUI/ac.gif")));
        Carta carta14 = new Carta("A de copas", 94, new ImageIcon(getClass().getResource("GUI/ah.gif")));
        Carta carta16 = new Carta("A de ouros", 94, new ImageIcon(getClass().getResource("GUI/ad.gif")));
        Carta carta17 = new Carta("K de paus", 93, new ImageIcon(getClass().getResource("GUI/kc.gif")));
        Carta carta18 = new Carta("K de copas", 93, new ImageIcon(getClass().getResource("GUI/kh.gif")));
        Carta carta19 = new Carta("K de espada", 93, new ImageIcon(getClass().getResource("GUI/ks.gif")));
        Carta carta20 = new Carta("K de ouros", 93, new ImageIcon(getClass().getResource("GUI/kd.gif")));
        Carta carta21 = new Carta("J de paus", 92, new ImageIcon(getClass().getResource("GUI/jc.gif")));
        Carta carta22 = new Carta("J de copas", 92, new ImageIcon(getClass().getResource("GUI/jh.gif")));
        Carta carta23 = new Carta("J de espada", 92, new ImageIcon(getClass().getResource("GUI/js.gif")));
        Carta carta24 = new Carta("J de ouros", 92, new ImageIcon(getClass().getResource("GUI/jd.gif")));
        Carta carta25 = new Carta("Q de paus", 91, new ImageIcon(getClass().getResource("GUI/qc.gif")));
        Carta carta26 = new Carta("Q de copas", 91, new ImageIcon(getClass().getResource("qh.gif")));
        Carta carta27 = new Carta("Q de espada", 91, new ImageIcon(getClass().getResource("GUI/qs.gif")));
        Carta carta28 = new Carta("Q de ouros", 91, new ImageIcon(getClass().getResource("GUI/qd.gif")));
        Carta carta29 = new Carta("7 de paus", 90, new ImageIcon(getClass().getResource("GUI/7c.gif")));
        Carta carta30 = new Carta("7 de espada", 90, new ImageIcon(getClass().getResource("GUI/7s.gif")));
        Carta carta31 = new Carta("6 de paus", 89, new ImageIcon(getClass().getResource("GUI/6c.gif")));
        Carta carta32 = new Carta("6 de espada", 89, new ImageIcon(getClass().getResource("GUI/6s.gif")));
        Carta carta33 = new Carta("6 de ouros", 89, new ImageIcon(getClass().getResource("GUI/6d.gif")));
        Carta carta34 = new Carta("6 de copas", 89, new ImageIcon(getClass().getResource("GUI/6h.gif")));
        Carta carta35 = new Carta("5 de paus", 88, new ImageIcon(getClass().getResource("GUI/5c.gif")));
        Carta carta36 = new Carta("5 de espada", 88, new ImageIcon(getClass().getResource("GUI/5s.gif")));
        Carta carta37 = new Carta("5 de ouros", 88, new ImageIcon(getClass().getResource("GUI/5d.gif")));
        Carta carta38 = new Carta("5 de copas", 88, new ImageIcon(getClass().getResource("GUI/5h.gif")));
        Carta carta39 = new Carta("4 de espada", 87, new ImageIcon(getClass().getResource("GUI/4s.gif")));
        Carta carta40 = new Carta("4 de ouros", 87, new ImageIcon(getClass().getResource("GUI/4d.gif")));
        Carta carta41 = new Carta("4 de copas", 87, new ImageIcon(getClass().getResource("GUI/4h.gif")));


        baralho.add(carta1);
        baralho.add(carta2);
        baralho.add(carta3);
        baralho.add(carta4);
        baralho.add(carta5);
        baralho.add(carta6);
        baralho.add(carta7);
        baralho.add(carta8);
        baralho.add(carta9);
        baralho.add(carta10);
        baralho.add(carta11);
        baralho.add(carta12);
        baralho.add(carta13);
        baralho.add(carta14);
        baralho.add(carta16);
        baralho.add(carta17);
        baralho.add(carta18);
        baralho.add(carta19);
        baralho.add(carta20);
        baralho.add(carta21);
        baralho.add(carta22);
        baralho.add(carta23);
        baralho.add(carta24);
        baralho.add(carta25);
        baralho.add(carta26);
        baralho.add(carta27);
        baralho.add(carta28);
        baralho.add(carta29);
        baralho.add(carta30);
        baralho.add(carta31);
        baralho.add(carta32);
        baralho.add(carta33);
        baralho.add(carta34);
        baralho.add(carta35);
        baralho.add(carta36);
        baralho.add(carta37);
        baralho.add(carta38);
        baralho.add(carta39);
        baralho.add(carta40);
        baralho.add(carta41);

        Collections.shuffle(baralho);

        cartaPC1.setIcon(baralho.get(0).imagem );
        cartaPC2.setIcon(baralho.get(1).imagem );
        cartaPC3.setIcon(baralho.get(2).imagem );

o erro é o seguinte:

Obs a linha 35 é: Carta carta1 = new Carta(“4 de paus”,100,new ImageIcon(getClass().getResource(“GUI/4c.gif”)));

Lembrando que cartaPC1, 2 e 3 são botões com os icones…
O que pode ser gente?
Abraços,
agradeço desde já

4 Respostas

M

getClass().getResource(“GUI/4c.gif”) está retornando null. Isso porque o arquivo não está sendo encontrado.

Acrescente uma barra no início do caminho que deve resolver:

Carta carta1 = new Carta("4 de paus",100,new ImageIcon(getClass().getResource("/GUI/4c.gif")));

Agora uma sugestão:

Use um laço de repetição para criar suas cartas e já adicione no baralho. Crie um array com as cartas a serem carregadas e os naipes. Algo assim:

String[] valores = { "A", "2", "3", "4", "5", "6", "7", "J", "Q", "K" };
String[] naipes = { "espada", "copas", "paus", "ouros" };

for (String naipe : naipes) {
    for (String valor : valores) {
        // cria a carta e adiciona na sua lista
    }
}

E um detalhe: a carta26 está carregando a imagem de um lugar diferente das outras. Acho que isso não deveria acontecer. De qualquer forma, se carregar as cartas no laço de repetição isso será corrigido.

d34d_d3v1l

Valeu chará!

ahh… to com outra dúvida q está em outro tópico…

consegue me ajudar?

abraços,
ate++

M

Passe o link para o outro tópico.

d34d_d3v1l

http://www.guj.com.br/posts/list/0/228236.java#1169841

Criado 22 de dezembro de 2010
Ultima resposta 23 de dez. de 2010
Respostas 4
Participantes 2