Validação com progressBar e Transmissão com outro progressBar

2 respostas
A

Amigos,
Eita linguagem complicada essa, hein?!
Uma coisa simples de fazer em outras linguagens java complica demais.

Após o desabafo e pedindo desculpas pelo mesmo (posso estar com alguma má vontade com a linguagem), estou tendo enorme dificuldade em resolver a seguinte questão.

Trata-se de um programa desktop de validação e transmissão de arquivo texto.

Na tela inicial (tela1) há um botão que ao ser acionado, o usuário seleciona um arquivo texto. Este passa por um processo de validação de suas linhas e o programa exibe uma barra de progresso dessa tarefa. Essa etapa foi superada (com o uso de thread) e funciona normalmente.

Após a validação do arquivo, o programa exibe uma outra tela (um JDialog, tela2), com o resultado da validação. Nesta tela há um botão “Transmitir” que, quando acionado pelo usuário, transmite o arquivo para um servidor (utilizando sockets). A transmissão está ocorrendo normalmente. Nesta segunda tela há uma barra de progresso, porém eu não estou conseguindo fazer essa bendita barra de progresso mostrar o progresso da transmissão.

A etapa de exibição da tela2 ocorre dentro da thread inicial (não consegui fazer diferente) e, portanto, a transmissão também ocorre nessa etapa.

Como eu poderia, após concluída a validação, encerrar a thread de validação e só após exibir a tela2?

Algum iluminado consegue ajudar (inicialmente sem o código)?
Estou no trabalho e o código está na minha máquina caseira.

2 Respostas

Luan_Kevin

Bom eu uso um método mais ou menos assim... vê ai se ajuda!

Timer timer = new Timer(100, new ActionListener() {

            @Override
            public void actionPerformed(final ActionEvent event) {
                barraDeProgresso.setValue(barraDeProgresso.getValue() + 1);
                barraDeProgresso.setString(barraDeProgresso.getValue() + "%");

                if (barraDeProgresso.getValue() == 100) {
                    primeiraTela.dispose();
                    segundaTela.setVisible(true);
                }
            }
        });
        timer.start();

Espero que ajude :thumbup:

A
Luan Kevin:
Bom eu uso um método mais ou menos assim... vê ai se ajuda!
Timer timer = new Timer(100, new ActionListener() {

            @Override
            public void actionPerformed(final ActionEvent event) {
                barraDeProgresso.setValue(barraDeProgresso.getValue() + 1);
                barraDeProgresso.setString(barraDeProgresso.getValue() + "%");

                if (barraDeProgresso.getValue() == 100) {
                    primeiraTela.dispose();
                    segundaTela.setVisible(true);
                }
            }
        });
        timer.start();

Espero que ajude :thumbup:


Luan, acho que consegui resolver de outra maneira.
Vou aprofundar os testes para ter certeza.
Obrigado pela disposição em ajudar.

Criado 26 de abril de 2012
Ultima resposta 27 de abr. de 2012
Respostas 2
Participantes 2