Pessoal,
Utilizo no meu sistema uma thread que chama um método que demora a ser executado de acordo. O tempo de execução pode variar de acordo com a utilização do usuário.
Gostatia de saber se consigo fazer uma barra de progresso para monitorar a execução dessa thread.
Dá uma olhada na classe SwingWorker, do Java 6. Olha a descrição dela, retirada do javadoc oficial: SwingWorker is designed for situations where you need to have a long running task run in a background thread and provide updates to the UI either when done, or while processing.
Eu consegui setando o valor no progressbar manual... precisava calcular a porcentagem do tempo da minha thread sem setar na mão...
Exemplo:
O método abaixo run chama o outro metodo:
publicvoidrun(){//throw new UnsupportedOperationException("Not supported yet.");switch(processNumber){case1:runSecondCarrier();break;}
chega nesse método que demora a execução e onde eu precisavar calcular a portentagem até acabar o processo.
[code]
private void runSecondCarrier() {
}
ViniGodoy
E você tem meios de prever isso?
S
souzajhonatan
Negativo… dependendo da maneira que o usuario esta usando a ferramenta pode ser rapido ou pode ser lento…
ViniGodoy
Se você não tem como prever, não tem como fazer o progressbar.
Você não sabe nem alguma contagem? Tipo nr de registros já processados versus nr. de registros totais?
O java não é adivinho. Sem fornecer a informação, o máximo que vc pode fazer é definir sua Progress como indeterminate e deixar ela mexendo, sem informação de percentual.
S
souzajhonatan
sei apenas o total de opções que o usuario selecionou para a ferramenta gerar… minha ferramenta le arquivos textos que variam d 30 até 60Mb.
ViniGodoy
Mas se lê arquivos, vc não pode estimar o número de bytes e contar o número de bytes processados para gerar o progressbar?
S
souzajhonatan
mais e se não ficar sincronizado?
ViniGodoy
Como assim? O mesmo método que irá ler os arquivos irá enviar a informação para o JProgressBar. Como poderia não ficar sincronizado?
S
souzajhonatan
que tipo de informação eu posso passar?
ViniGodoy
Qualquer tipo:
Número de arquivos totais/número de arquivos processados
Número de bytes totais/número de bytes processados
Depende de que informação você tenha disponível. Quando mais granular, melhor.