Usar o TaskMonitor do Swing de uma maneira elegante, alguém sabe?

1 resposta
jason_bourne

Pessoal,

Estou usando o Netbeans para criar uma aplicação swing e estou tendo um problema para usar o TaskMonitor. Sempre que tenho alguma ação (em que precise aparecer o JProgressBar rodando na tela, eu preciso usar o TaskMonitor. Mas ai que esta o problema. Para cada vez que houver uma ação eu preciso criar uma inner class desse tipo:

private class TesteTask extends Task<Void, Void> {

        public TesteTask(Application app) {
            super(app);
        }

        @Override
        protected Void doInBackground() throws Exception {
                        System.out.println("Teste 0");
        try {//exemplo de ação
            Thread.sleep(3000L);
        } catch (InterruptedException ex) {
            Logger.getLogger(CommerceSysEdView.class.getName()).log(Level.SEVERE, null, ex);
        }
                        System.out.println("Teste 1");
           // throw new UnsupportedOperationException("Not supported yet.");
                        return null;
        }

    }

Esta correto isso? acredito que não. Imagina se numa classe (um JPanel qualquer) eu tiver 20 ações (insert,update, select, etc), terei que criar 20 inner classes iguais a essa? Alguém sabe uma solução melhor?

1 Resposta

relson

Está correto!

Como melhora você poderia utilizar o metodo publish, ou colocar para printar a mensagem ao finalizar a tarefa sobrescrevendo o método succeeded.

Pra colocar ela na fila para ser executada deve fazer o seguinte:

// Suponho que MinhaAplicacao extende de SingleFrameApplication
MinhaAplicacao.getApplication().getContext().getTaskService().execute(new TesteTask(Application.getInstance(MinhaAplicacao.class)));

Talves você queira criar um “manipulador” de tarefas em segundo plano, vc pode criar um construtor que você passe parâmetros.

Espero ter ajudado e até a próxima.

Criado 10 de fevereiro de 2011
Ultima resposta 7 de mar. de 2011
Respostas 1
Participantes 2