Tenho uma aplicação que possui a necessidade de executar vários Threads gráficos ao mesmo tempo, por isso resolvi utilizar a classe SwingWorker.
Mas agora, depois de atualizar minha versão do Java, parou de funcionar.
Voltei a versão e tudo voltou a funcionar, só que não é o correto isso, estou usando por enquanto, gostaria de saber se alguém possui alguma luz para me guiar nisso…
Isso pode ter ocorrido se vc usava um jdk anterior ao 6 já que o SwingWorker antes dessa versão existia como uma api separada com o mesmo nome mas com algumas diferenças de métodos e funcionamento.
Se for possivel atualize novamente o jre debugue tentando descobrir como reimplementar suas thread´s.
[]´
Luiz Renato
I
iglander
não não, estava usando a JRE 1.6_17... foi atualizar pra 19 que parou de funcionar
WTConverterTXT2XMLr=newWTConverterTXT2XML();System.out.println("Instanciou a classe");r.setFile(file);System.out.println("Manda executar");try{r.execute();System.out.println("terminou?");}catch(Exceptione){System.out.println(e.getMessage());e.printStackTrace();}}}this.setVisible(true);ckSelecionarTodos.setSelected(false);}privateclassWTConverterTXT2XMLextendsSwingWorker<Void,Void>{privateFilefile;publicvoidsetFile(Filefile){this.file=file;System.out.println("fez isso pelo menos?");}@OverrideprotectedVoiddoInBackground()throwsException{try{System.out.println("Entrou no DIB?");ConversorTXT2XMLc=newConversorTXT2XML();System.out.println("Instanciou o conversor?");c.converterTXT2XML(file);System.out.println("Converteu?");}catch(Exceptione){System.out.println(e.getMessage());e.printStackTrace();}returnnull;}@Overrideprotectedvoiddone(){carregaArquivosTabela();}}
o Retorno fica assim:
Conversão?
Instanciou a classe
fez isso pelo menos?
Manda executar
terminou?
I
iglander
para os que tiverem esse futuro problema…
troquei o método WorkerThread.execute() por WorkerThread.run() e voltou a funcionar tudo belezinha…
estudarei e explico em breve
= )
I
iglander
ao que eu entendi…
o método execute() põe numa fila, esperando recursos(que no meu caso, não eram disponibilizados nunca) enquanto que o run() pede para ver o final da execução, a não ser que esteja cancelado.
pois bem, isso me parece menos seguro. O execute() pede Worker Threads disponíveis, enquanto o run() “força” isso, (certo?)
tentarei estudar melhor por aqui isso e posto depois mais informações