SwingWorker X Update Java

4 respostas
I

Bom dia, povo

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…

grato

= )

4 Respostas

luiz_renato

iglnader,

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

não não, estava usando a JRE 1.6_17... foi atualizar pra 19 que parou de funcionar

WTConverterTXT2XML r = new WTConverterTXT2XML();
				
				System.out.println("Instanciou a classe");
				
				r.setFile(file);
				System.out.println("Manda executar");
				try{
					
					r.execute();
					System.out.println("terminou?");
				}catch(Exception e){
					System.out.println(e.getMessage());
					e.printStackTrace();
				}
			}
		}
		this.setVisible(true);
		ckSelecionarTodos.setSelected(false);
	}
	
	private class WTConverterTXT2XML extends SwingWorker<Void, Void>{
		private File file;
		
		public void setFile(File file){
			this.file = file;
			System.out.println("fez isso pelo menos?");
		}
		
		
		
		@Override
		protected Void doInBackground() throws Exception {
			try{
				System.out.println("Entrou no DIB?");
				ConversorTXT2XML c = new ConversorTXT2XML();
				System.out.println("Instanciou o conversor?");
				c.converterTXT2XML(file);
				System.out.println("Converteu?");
			}catch(Exception e){
				System.out.println(e.getMessage());
				e.printStackTrace();
			}
			return null;
		}
		
		@Override
		protected void done() {
			carregaArquivosTabela();
		}
		
	}

o Retorno fica assim:

Conversão?
Instanciou a classe
fez isso pelo menos?
Manda executar
terminou?

I

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

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

Criado 10 de abril de 2010
Ultima resposta 10 de abr. de 2010
Respostas 4
Participantes 2