olá galera blz
alguem sabe como eu faço pra mover o barra de carregamento de um JProgressBar , conforme o demorar de um processo que esta rodando em uma Thread separada??
será que isso é possível???
ficarei grato a quem puder me ajudar
olá galera blz
alguem sabe como eu faço pra mover o barra de carregamento de um JProgressBar , conforme o demorar de um processo que esta rodando em uma Thread separada??
será que isso é possível???
ficarei grato a quem puder me ajudar
Olá Diego tudo bem?
Bom, antes de tudo vamos ver algumas regras básicas sobre qualquer ProgressBar. Essa regra é aplicada tanto em .NET quanto em Swing/SWT, não sei quanto na web, pois nunca usei ProgressBar
todo progressBar possui os valores máximos e mínimos. Geralmente, os padrões são 0 e 100, mas você pode arrumar eles
Todo ProgressBar vai “pintando”, “preenchendo” de acordo com o “value” dele. Digamos, um ProgressBar está setado com valores 0 e 100 respectivamente para mínimo e máximo. Se o value estiver setado para 50, a barra vai ficar pintada até a metade.
Uma das formas para tu fazer ela andar é somente setando o “value”. Agora se você usa threads ou não, é de sua escolha. Se essa barra é um processo crítico (digamos, existe uma tela que, se um processo não terminar, não deve andar) daí não há necessidade de você utilizar thread, pois o programa deve focar no processo e na “rolagem” da barrinha. Agora, digamos que no seu programa faça downloads automáticos de um update e voc6e quer fazer que a barrinha se mexa quando o usuário estiver fazendo outra tarefa, daí há necessidade de uma Thread.
Alguns métodos úteis:
setMinimum( int ) //ajusta o valor mínimo, padrão 0
setMaximum( int ) //ajusta o valor máximo, padrão 100
setValue( int ) // ajusta "a posição", o "preenchimento" do JProgressBar
Espero ter ajudado
blz Leozin!!
então cara o meu problema é o seguinte , eu quero que a barrinha do JProgressBar c mova conforme o processamento de um backup , e que quando ele acabar a barrinha esteja totalmente completa, e para isso estou sim usando Threads , mais é o seguinte eu estou usando para fazer o backup esse código
[code]//comando que executa o backup do banco postgres
ProcessBuilder builder = new ProcessBuilder(“C:\Arquivos de programas\PostgreSQL\8.1\bin\pg_dump.exe”,
“-i”, “-h” ,endIPBanco,"-p", “5432”,"-U", usuario, “-F”,“c”,"-b","-v","-f", caminhoDestino, baseDados);
//inicia o comando
final Process processo = builder.start();
//apos iniciado o comando crai-se duas Threads que ficarão rodando pararlelamente com a Thread do backup
//criada automaticamente acima , a Primeira Thread , é pra saber quando tremina a execução do backup
//e a segunda é pra saber c ouve erro no mesmo
//primeira Thread
new Thread( new Runnable() {
public void run() {
Scanner sc = new Scanner(processo.getInputStream());
while ( sc.hasNext() ) {
sc.next();
}
}
} ).start();
//segunda Thread
new Thread( new Runnable() {
public void run() {
Scanner sc = new Scanner(processo.getErrorStream());
while ( sc.hasNext() ) {
sc.next();
}
}
} ).start();
try{
//fica aguardando pelo processo do backup
processo.waitFor();
processo.getErrorStream().close();
processo.getOutputStream().close();
}catch(Exception ex){
} [/code]
então ele só sai desse método quando eu terminar o processo entendeu??
e queria saber c tem como eu encaixar o setValue() do JProgressBar , pra que ele acompanhe o tempo de demora do backup movendo-se a barrinha…
não sei c vc entendeu, e mais ou menos isso…
será que vc tem alguma idéia pra me ajudar???
Caro diego
Infelizmente isso é algo mais ligado a lógica e nem tanto ao JProgressBar, ou seja, você poderia fazer uns cálculos, do tipo:
Quantos arquivos que você irá fazer backup?
Vamos imaginar que, são, 25 arquivos que tu irá fazer backup
Vamos configurar o JProgressBar para que o mesmo seja “dinâmico”
progressBar1.setMaximum( 25 );
Então, para cada arquivo que passar, vamos aumentar o value do progressBar
int valorAtual = progressBar1.getValue();
progressBar1.setValue( ++valorAtual );
Essa parte do código você botaria num for, foreach sei lá
List meusArquivos = criadorDeBackups.getMeusArquivos();
jProgressBar1.setMaximum( meusArquivos.size() );
for( int i = 0; i < meusArquivos.size(); i++ ) {
efetuarBackupDoArquivo( meusArquios.get( i ) );
progressBar1.setValue( i );
}
Tu poderia alterar o valor do progressBar dentro de alguns daqueles for que lê o stream do console Mas daí você teria que pensar como, pois, como citei, isso é algo mais “lógico”, não tem muito stress com o JProgressBar
Espero ter ajudado
hum sei , bom mais então vou tentar algo aqiu pra fazer isso …
muito obrigado pela dica , valew mesmo