SwingWorker + JOptionPane [Resolvido]

1 resposta
S

Buenas!

Estou criando um programa para atualização de patch’s de um sistema. Para processar a atualização, estou usando uma classe que estende SwingWorker. Usei o design pattern Command para executar os comandos que compõe a minha atualização.

Aí vem o detalhe: no meio do processo preciso copiar arquivos para uma determinada pasta e gostaria de que, se acontecesse algum erro, o usuário fosse perguntado (JOptionPane) se deseja tentar novamente.

Então tenho a seguinte estrutura:

SwingWorker -> Chama Command -> Chama view que deveria perguntar ao usuário

Pelo que testei aqui, desta forma não funciona.

Qual seria o processo correto neste caso?

1 Resposta

S

Nada como ler de novo a API…

protected void process
Receives data chunks from the publish method asynchronously on the Event Dispatch Thread.

protected final void publish
Sends data chunks to the SwingWorker.process method. This method is to be used from inside the doInBackground method to deliver intermediate results for processing on the Event Dispatch Thread inside the process method.
Because the process method is invoked asynchronously on the Event Dispatch Thread multiple invocations to the publish method might occur before the process method is executed. For performance purposes all these invocations are coalesced into one invocation with concatenated arguments.

Ou seja, no meu método doInBackground, tenho que chamar publish, que por sua vez vai chamar process que pode interagir com a GUI.

Alguns links interessantes:

http://enos.itcollege.ee/~jpoial/docs/tutorial/uiswing/misc/threads.html#SwingWorker
http://download.oracle.com/javase/tutorial/uiswing/concurrency/interim.html

Criado 14 de julho de 2011
Ultima resposta 14 de jul. de 2011
Respostas 1
Participantes 1