Tela de espera enquanto executa uma função

2 respostas
J

Galera a bronca é a seguinte, tenho um metodo que vai gravar um arquivo em um servidor remoto pela internet, então dependendo do tamanho do arquivo pode demorar um pouco, queria saber como colocar algo tipo uma tela de espera ou uma barra de progresso entre o metodo que grava e tela de conclusao.
Segue o metodo.

private void jB_EnviarArquivoActionPerformed(java.awt.event.ActionEvent evt) {
        try {
            // TODO add your handling code here:
            gravarArquivo();
            JOptionPane.showMessageDialog(null, "Arquivo Gravado com Sucesso!");
        } catch (SQLException ex) {
            //Logger.getLogger(JDialogPrincipal.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null, "Sem Comunicação com o Servidor\nImpossível Gravar Arquivo\nVerifique a Rede/Internet");
        } catch (IOException ex) {
            Logger.getLogger(JDialogPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

2 Respostas

G

Fiz um esboço de código, olha só:

private void jB_EnviarArquivoActionPerformed(java.awt.event.ActionEvent evt) {
        try {
            // TODO add your handling code here:  
            final Thread t1 = new Thread(new Runnable() {//cria uma thread pra gravar o seu arquivo

                @Override
                public void run() {
                    gravarArquivo();
                }
            });
            t1.start();//inicia a thread
            new Thread(new Runnable() {//cria outra thread pra sua tela de espera

                @Override
                public void run() {
                    Tela telaDeEspera = new Tela();//cria a tela de espera e mostra ela
                    t1.join();//fica esperando a primeira thread acabar
                    telaDeEspera.dispose(); // quando acabar fecha a janela de espera, podes fazer outras coisas aqui
                    
                }
            }).start();
            JOptionPane.showMessageDialog(null, "Arquivo Gravado com Sucesso!");
        } catch (SQLException ex) {
            //Logger.getLogger(JDialogPrincipal.class.getName()).log(Level.SEVERE, null, ex);  
            JOptionPane.showMessageDialog(null, "Sem Comunicação com o Servidor\nImpossível Gravar Arquivo\nVerifique a Rede/Internet");
        } catch (IOException ex) {
            Logger.getLogger(JDialogPrincipal.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

Obs.: Não testei, precisaria criar muita coisa pra eu poder testar, mas acredito que funcione, se não funcionar, poste os erros que deu

J

Caro gaulix, agradeço sua resposta, com apenas algumas pequenas modificações ficou perfeito. Muito obrigado mesmo.

Criado 28 de outubro de 2012
Ultima resposta 28 de out. de 2012
Respostas 2
Participantes 2