1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Aprendendo um pouco sobre Thrends

Pessoal em outro post tentando fazer um efeito de embaralhamento de cartas para um jogo me foi recomendado estudar um pouco de Thrends e foi o que fiz. Montei um código usando thrends para alternar as imagens dentro de um JLabel por um certo tempo. Porem estou tendo um erro que não consigo enteder:

Segue o Código:

public class TestThreadsImage extends JFrame implements Runnable {

    private JPanel contentPane;
    private JLabel lblImg;
    String img;
    long tempo;

    public void setImg(Image i){
        lblImg.setIcon(new ImageIcon(i));
    }

    @Override
    public void run() {

        for(int i=0;i<=5;i++){

            try {
                String caminho = "C:/Dropbox/Projeto Score Player/Caio/Baralho/img/";
                ImageIcon i1=new ImageIcon(caminho + img);
                Image imagem1 = i1.getImage().getScaledInstance((int)(i1.getIconWidth()*0.2),(int) (i1.getIconHeight()*0.2), Image.SCALE_SMOOTH);
                imagem1.flush();
                setImg(imagem1);
                i1=null;
                Thread.sleep(tempo);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }


    public static void main(String[] args) {

                    TestThreadsImage frame = new TestThreadsImage();
                    frame.setVisible(true);

    }




    public TestThreadsImage() {

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(new BorderLayout(0, 0));
        setContentPane(contentPane);

        lblImg = new JLabel("");
        contentPane.add(lblImg, BorderLayout.CENTER);

        JButton btnTeste = new JButton("teste");
        btnTeste.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                Runnable img1 = new TestThreadsImage("fundoV.jpg",1500);
                Runnable img2 = new TestThreadsImage("fundoP.jpg",2000);

                new Thread(img1, "ping").start();
                new Thread(img2, "pong").start();
            }
        });
        contentPane.add(btnTeste, BorderLayout.SOUTH);
    }

    public TestThreadsImage(String img, long tempo) {
        this.img=img;
        this.tempo=tempo;
    }



}

O erro acontece quando faço o cast de Image pra ImageIcon na linha:

lblImg.setIcon(new ImageIcon(i));

O erro:

Exception in thread "ping" java.lang.NullPointerException
    at br.com.caezar.threads.TestThreadsImage.setImg(TestThreadsImage.java:25)
    at br.com.caezar.threads.TestThreadsImage.run(TestThreadsImage.java:38)
    at java.lang.Thread.run(Unknown Source)
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags threads ou faça a sua própria pergunta.