Olá pessoal, estou tentando de todas as maneiras mas não consigo interromper essa thread que criei. O objetivo é que apareça uma tela de introdução por apenas 3 segundos. Logo após esse tempo ela desapareça e suba a tela de login. Tudo está acontecendo, mas o problemas é que a cada 3 segundos surge uma nova tela de login, incessantemente! Como resolver isso? Alguém poderia dar uma ajuda?
Vejam o código:
De fato isso é uma sugestão melhor, exceto naquele malfadado caso em que você tem de fazer a coisa rodar em Java 5. Por exemplo, aqui escrevi uma aplicação que requer Java 6 (por causa do SwingWorker, basicamente). Agora tenho de transformar essa aplicação em uma applet (tolerável, já que ela tem uma tela só) mas infelizmente eu tenho de fazer um downgrade para Java 5 (argh - nem a Sun suporta mais esse cara, exceto com contrato pago) porque as máquinas aqui na firma, por algum motivo incerto e não sabido, estão com o plugin do Java 5 instalado, não do Java 6, e não tem como mexer nisso (argh argh argh).
E como seria usar esse recurso? Já pesquisei sobre esse assunto também, mas não consegui assimilar as idéias. Teria como explicar ou disponibilizar um exemplo?
Obrigado.
Você precisa compilar os dois arquivos. Compile primeiro o segundo arquivo, se é isso que está dando problemas (como é que você compila as coisas? Use uma IDE como o Eclipse ou o NetBeans para evitar esses problemas bobocas) , e então compile o primeiro arquivo.
Correto, já me disseram isso, mas como o prof. da matéria não quer que use, aliás, ele disse que para quem está aprendendo a linguagem, o melhor é não usar as IDEs. Mas voltando aquela minha dúvida inicial, se eu quisesse interromper aquele looping, teria como me explicar o que fazer? Aqueles exemplos que você me passou foram ótimos mas gostaria de resolver minha dúvida. Obrigado.
Veja o código novamente:
a) Threads não foram feitas para serem interrompidas. O que se deve fazer é você indicar para sua thread, setando uma variável que pertença à classe, que você quer que ela seja encerrada. Além disso, threads != janelas; normalmente, threads são invisíveis (não têm janelas associadas). Só para você ter uma idéia, o Swing processa todas as operações de janelas em uma única thread (e isso é que é a parte “misteriosa” da coisa).
Se você quer que uma janela se feche sozinha, crie um timer que a feche, assim como eu fiz com o programa. Você entendeu mesmo o que fiz? Não há um jeito muito mais simples de fazer o que eu fiz (exceto, é claro, usar o Java 6 e passar um parâmetro mágico -splash para o java.exe.)
b) “ScheduleAtFixedRate” quer dizer que você está agendando uma operação para que ocorra repetidamente, a uma determinada taxa (por exemplo, uma vez a cada 3 segundos). É isso que você quer fazer? É melhor ler a documentação primeiro (ela está em Timer.scheduleAtFixedRate. Veja os outros métodos dessa classe.
Já fiz algumas alterações, mas estou com problemas na hora de chamar minha “TelaLogar”. Ela está aparecendo junto com a tela de apresentação, aquela que se encerra após alguns segundos. Teria como me orientar nesse sentido? Obrigado.
Veja o código:
Você viu o truque que eu usei? Quem chama o “setVisible” da janela principal (a “TelaLogar” no seu caso) é o método que é chamado quando a janela do splash está fechando. Isso para que a parte de logar fique sempre depois da tela de splash.
Certo, mas o que acontece, é que, ao executar o código, o primeiro frame que aparece é o de login, e depois ele desaparece rapidamente, e aí sim a tela de apresentação permanece por alguns segundos. Sendo que o de login teria que ser secundário. O que eu fiz de errado, no caso?