Problemas com Frame (Resolvido)

6 respostas
M

Olá amigos!

Tenho uma classe que tem um botão que quando o usuário clica vai carregar dados pra o banco de dados. Quando ele clicar vai aparecer um frame que indica que os dados estão sendo carregados pra o banco. Só que quando o usuário clica nesse botão os dados são carregados corretamente para o banco, mas o frame não aparece, só aparece depois quando acaba o carregamento dos dados. Eu queria que primeiro aparecesse o frame (carregasse seus componentes - os botões) e por trás os dados fossem carregados no banco.
Tá aí o construtor do frame:

public Carregando() {

        initComponents();
        setLocation(500, 200);
        setVisible(true);
        
        CarregandoBanco();
    }

O método “CarregandoBanco()” faz com que os dados sejam inseridos no banco. O que está acontecendo é que primeiro os dados são adicionados para depois aparecer o frame com os botões. É nesse frame que vai ter um botão que vai parar o carregamento dos dados para o banco.

Quem puder ajudar aí, desde já agradeço.
Vlw

6 Respostas

worldfernando

coloca esse método “CarregandoBanco();” em uma Thread deve ter o efeito que vc quer

juceliohv

Fala parça,

Seguinte não sei te dizer de cabeça, mas dá uma pesquisada sobre observer e threads. Também dá de fazer uma pequena jDialog com barra de progresso usando estes caras.

Abraço e fica com deus.

Clerius

SwingWorker pode te ajudar.

SwingWorker worker=new SwingWorker() {
	@Override
	protected Object doInBackground() throws Exception {
		System.out.println("Em background");
		return null;
	}

	@Override
	protected void done(){
		System.out.println("Processo finalizado");
	}
};
worker.execute();
M

Primeiro obrigado pelas respostas.
Esclarecendo, eu tenho uma classe que tem um botão “Iniciar”, essa classe deve carregar os dados no banco de dados. Quando eu clico nesse botão aparece uma janela que só serve pra o usuário visualizar uma figura de carregamento (loading) que informa que os dados estão sendo coletados. Se o usuário clicar no botão “Parar” dessa outra janela é interrompida a coleta dos dados.
O que tá contecendo é que quando eu clico no botão “Iniciar” os dados estão sendo salvos no banco, mas não aparece a janela com a figura avisando que os dados estão sendo carregados. Mas quando acaba de salvar os dados no banco a janela aparece. Eu queria que a janela aparecesse quando os dados são salvos no banco.

Como ficaria em uma Thread. Tem um exemplo?
worldfernando é pra colocar o método na run() da Thread?
Mas como é que ele vai parar quando eu apertar o botão??

M

Valeu Clerius funcionou mesmo!!! Brigadão… :smiley:

Ficou assim:

SwingWorker worker=new SwingWorker() {
           @Override
           protected Object doInBackground() throws Exception {
              initComponents();
              setLocation(500, 200);
              setVisible(true);

              CarregaBanco();

              return null;
          }
 };
worker.execute();
M

:lol:

Criado 8 de junho de 2011
Ultima resposta 8 de jun. de 2011
Respostas 6
Participantes 4