Fala galera, novamente estou precisando da ajuda de vcs, o seguinte codigo abaixo faz a transferencia de um arquivo para um pasta no servidor:
TIREI O CODIGO
A questao eh que se eu colocar um arquivo tipo de 800 megas pra cima ele trava a janela de interface e so destrava quando a transferencia acaba…como devo evitar isso???
Ele trava a sua janela de interface pq o método ainda está executando.
Se vc quer que tenha independencia de processo, utilize uma Thread.
Crie uma thread pra fazer a transferência e coloque seu método dentro dela, dessa forma sua interface será liberada imediatamente, não precisando terminar seu processamento.
Luca
Olá
Procure entender como funciona SwingWorker ou use a API Foxtrot
[]s
Luca
rafaelt
sapulha:
Ele trava a sua janela de interface pq o método ainda está executando.
Se vc quer que tenha independencia de processo, utilize uma Thread.
Crie uma thread pra fazer a transferência e coloque seu método dentro dela, dessa forma sua interface será liberada imediatamente, não precisando terminar seu processamento.
Teria como vc me dar ume xemplo de codigo, de acordo com o codigo que eu postei acima…???
abracos…
fuiii
sapulha
Coloque seu código em uma método na sua classe, que possa ser acionado de fora.
Depois faça algo do tipo:
public class myThread extends Thread {
publicvoidrun(){SuaClasse.seuMetodo();|
|
Depois chame esse código com MyThread t = new MyThread(); t.start();
Chame isso da sua interface, assim a thread irá rodar e sua interface ficará livre para o usuário continuar utilizando
rafaelt
sapulha:
Coloque seu código em uma método na sua classe, que possa ser acionado de fora.
Depois faça algo do tipo:
public class myThread extends Thread {
publicvoidrun(){SuaClasse.seuMetodo();|
|
Depois chame esse código com MyThread t = new MyThread(); t.start();
Chame isso da sua interface, assim a thread irá rodar e sua interface ficará livre para o usuário continuar utilizando
Nao funcionou, mais provavelmente eu naum devo estar fazendo corretamente.
E na minha interface ja tem um metodo chamado run() dentro do void main…
Ajudaria se eu postar minha classe inteira???
[]'s
Luca
Olá
Provavelmente não. O que ajudaria seria gastar meia hora para entender como funcionam as threads do Swing e usar SwingWorker ou foxtrot.
[]s
Luca
rafaelt
Luca:
Olá
Provavelmente não. O que ajudaria seria gastar meia hora para entender como funcionam as threads do Swing e usar SwingWorker ou foxtrot.
[]s
Luca
Blz, posso fazer isso…
Essa SwingWorker que vc se refere eh uma classe???
Axo que eu tenho essa classe.
Se puder me dar mais informacoes sobre ela…
abracos
Rafael
rafaelt
Nao ta rolando com essa Swing Worker, alguem pode me dar um exemplo de acordo com o codigo que eu coloquei acima…
E porque na hora de perguntar você colocou o código e quando resolveu o problema não mostrou como ficou o código?
[]s
Luca
rafaelt
Luca:
Olá
Onde?
E porque na hora de perguntar você colocou o código e quando resolveu o problema não mostrou como ficou o código?
[]s
Luca
ficou assim meu querido
publicvoidsendFile(){finalSwingWorkerworker=newSwingWorker(){publicObjectconstruct(){try{Filefile=fc.getSelectedFile();//Origem do arquivo.StringselectedFile=file.getName();Stringret=selectedFile;longfileSize=file.length();//Tamanho do arquivo.fileUpload="/"+file.getName()+"/";output=filePath+fileUpload;//Local de upload, para onde o arquivo está indo.Filef=newFile(output);//Destino do arquivo. filePathUpload="localhost/lr/";longtransferRate=0;//Enviando o arquivo.log.append(" "+newline+" ---------- Enviando arquivos ---------- "+newline);log.append("Enviando: "+file.getName()+", 0 KB/s, Enviado / "+fileSize+" "+newline+"Tempo restante: "+newline);InputStreamin=newFileInputStream(file);OutputStreamout=newFileOutputStream(f);byte[]buffer=newbyte[20480];inttamanho=0;//progressBar = 0;while((tamanho=in.read(buffer))>0){out.write(buffer,0,tamanho);//++progressBar;}in.close();out.close();log.append("Arquivo enviado com sucesso: "+file.getName()+newline/*+ "Tamanho: " + fileSize + newline*/);}catch(Exceptione2){log.append("Erro ao enviar o arquivo: "+e2.getMessage());log.invalidate();//return;}returnnewupMenu();}};worker.start();