Eu estou tentando fazer um slideshow com imagens contidas em uma pasta, mas está dando problema…quando inicio o método, trava toda a aplicação! só pelo taskmanager para fechar=/. Alguém pode me ajudar?
no começo tinha feito isso! Mas não funciona. Só funciona se executar essaclasse sozinha, neste caso eu estou criando um objeto e executando a partir de um JFrame, trava tudo…
Eu não sou bom desenvolvedor de aplicações Desktop, mas pelo que estou vendo do seu projeto tem uma coisa que não está legal!
O botão fica clicado acho que é por que você chama o SlideShow e espera ele retornar, mas ele demora, o que gera o problema.
Tente fazer o botão iniciar uma thread e essa thread é o SlideShow, ou faça o SlideShow iniciar em outra janela (um novo JFrame) e nesse novo JFrame você faz o slide show. Assim a primeira janela pode ficar livre quanto a execução desse slides…
O trecho de código que vai ser disparado para outra thread tem que estar dentro de um Runnable.
Esse Runnable é então passado para classe Thread, para só então vc dar o start.
Exception in thread “Thread-2” java.lang.NullPointerException
at lib.SlideShow$SlideRun.run(SlideShow.java:30)
at java.lang.Thread.run(Thread.java:619)
Agora o porblema foi outro. Me parece que o lblImg nã foi inicializado e se encontra nulo, então o lblImg.setIcon() joga um NullPointerException. Pelo menos é mais facil o problema ser aí.
o jlabel está instanciado, mas como mostrei ali, eu passo ele como referencia para o construtor da classe slideshow, agora… será q eu nao posso mais acessar esse jlabel de dentro desta classe?
sim! continua! E PIOR, não consigo acessar nada! Tentei colocar ela como innerclass, mesmo assim não rola… tentei imprimir só o length do array de imgs…e nao rolou, segue:
public class Teste extends JFrame{
//codigos...declarações...
public void metodo(){
Teste.SlideShow slide = new Teste().new SlideShow();
slide.play();
}
class SlideShow {
public void play() {
Thread t = new Thread(new SlideRun());
t.start();
}
class SlideRun implements Runnable {
public void run() {
int i = 0;
double tempo = 0;
try {
while (true) {
Thread.sleep(3500);
System.out.println(imgs.length);
}
}catch (InterruptedException e) {}
}
}
}
}