[RESOLVIDO] Como fazer com que após alguns segundos feche um jframe e abra outro jframe automaticamente

Eae pessoal, gostaria de saber se tem como abrir um jframe automaticamente apos alguns segundos.

Estou fazendo um Projeto da faculdade e estou utilizando o netbeans, criei a “tela inicial” do aplicativo e gostaria que apos alguns segundos abrisse o jframe de login. como o da imagem .

Bom, coloca um while ( um contador):


// no caso após dez segundos ( talvez);
int x;

while(int x != 10) {
x = x +1;
}

// O do login;
new NomedoJframe.setVisible(true);

// Fecha o inicial;
dispose( );


O loop só será finalizado quando x == 10, daí o seu JFrame de login será aberto.

obs: caso esteja fazendo isso no Jframe inicial.

Isso aqui não funciona, pois a variável do tipo inteiro não permite trabalhar com tempo!

Para solucionar o problema você deve fazer um delay utilizando Thread:

Exemplo:

public static void main(String ... args) {       
        //Abre o primeiro jFrame
        
        try {
            Thread.sleep(5000);//Isso criará um delay de 5 segundos
        } catch (InterruptedException e) {
            //Tratativa de exceção
        }
        
        //Abre o segundo jFrame
}

Double então… é um loop :wink:

Também não!

O loop só irá cessar quando x == 10 daí o que vier depois será executado…

De qualquer forma é bom testar, creio que meu raciocínio funcione.

O que eu quis dizer é que, o uso de loop com variáveis independente de tipos (Integer, Double…) não atende ao problema, compreende ?

Não disse que seu código está incorreto ou que não funciona, somente não atende ao problema especificado, pois a necessidade é de se trabalhar com tempo e não com valores.

Sim, compreendo. Beleza, achei sofisticada sua resposta. Vlw! Mas o cara deve estar começando os estudos em Java, o loop - passando um valor suficiente por parâmetro - será o necessário. De qualquer forma, é bom agregar conhecimento e sua resposta foi legal.

deu certo fazendo isso cara, depois de 5 segundos ele abre o segundo jframe como gostaria só que logo em seguida o primeiro jframe abre novamente .

tentei fazer desse jeito mas não deu certo cara

esquece consegui resolver na verdade mais a baixo do meu código o próprio netbeans estava abrindo o Jframe, então coloquei este código de baixo dele.
Ficou assim:

public static void main(String args[]) {

    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new TelaInicial().setVisible(true);
        }
    });
    
     try {
        Thread.sleep(5000);//Isso criará um delay de 5 segundos
    } catch (InterruptedException e) {
        //Tratativa de exceção
    }
     
     TelaLogin primeiro = new TelaLogin();
     primeiro.setVisible(true);
}