Janela de "Aguarde...."

3 respostas
mendonca_ime

olá pessoal! estou com o seguinte problema:
-as buscas em um banco de dados de clientes as vezes são demoradas, podem retornar + de 20.000 clientes duma vez… então resolvi criar uma janela de “Aguarde…” algo semelhante a um Splash que eu chamo antes de fazer uma busca no banco só que a janela só renderiza completamente depois que a busca termina…, ou seja, aparece só o contorno dela e quando o programa pára de processar o query é q ela aparece por completo.

já fiz um teste até na propria janela onde eu mando mudar o texto de um label e depois rodar um loop… acontece que o loop roda e só depois o texto muda…

como posso resolver este problema??
Valeu!

3 Respostas

dorivalac

meu filho…

use THREAD, eu tive o mesmo problema com um processo de scan …
ele exibia a tela pela metade e só quando terminava o scan que exibia o resto já falando pra fechar…

extenda o thread e crie multiprocessamento com thread… é a solução

public class seunome extends Thread
{

Coloque o processamento no Run

public void run()
 {
  processamento que trava tudo...

Agora é só ativar a thead que ele chama a rotina vampira…

abraços

mendonca_ime

fiz um bacalhau aki mas funcionou…

AbrirSplash as = new AbrirSplash(); Thread t = new Thread(as); t.start(); SetVectorData svd = new SetVectorData(); svd.nome = nome; svd.email = email; svd.status_cliente = status_cliente; svd.dataDe = dataDe; svd.dataAte = dataAte; svd.id_vendedor = id_vendedor; Thread t2 = new Thread(svd); t2.start();
e as classes ficaram:

class SetVectorData extends Thread { String nome = null; String email = null; Integer id_vendedor = null; Integer status_cliente = null; String dataDe = null; String dataAte = null; public void run() { vDados = setVectorData(stm, nome, email, id_vendedor, status_cliente, dataDe, dataAte); tableModel = new MyTableModel(vDados, vColunas); jTable.setModel(tableModel); FecharSplash fs = new FecharSplash(); Thread t3 = new Thread(fs); t3.start(); } } class AbrirSplash extends Thread { public void run() { janelaAguarde.show(); } } class FecharSplash extends Thread { public void run() { janelaAguarde.hide(); } }
funcionou… mas mesmo assim num é 100% tipo essa janela é só um dialog com um texto (que é instanciada na criação do frame), qnd eu boto figura as vezes funciona e as vezes não…:frowning:
mas mesmo assim obrigado!

dorivalac

daí vc pode mandar atualizar

frame.figura.repaint();

frame.figura.requestFocus();

frame.figura.invalidate();
Criado 18 de novembro de 2006
Ultima resposta 18 de nov. de 2006
Respostas 3
Participantes 2