Exibir um "GifLoad" - Painel de carregamento enquanto carrega o JInternalframe

3 respostas Resolvido
evanstos

Boa Noite Pessoal,

Tenho uma aplicação que ficou meio pesada e quando clico em um botão o JInternalFrame demora para ser exibido (principalmento no Win 8)… eu queria chamar um JDialog com uma imagem de carregamento enquanto o JInternalFrame não é exibido… não sei a maneira correta de fazer isso, se alguém poder me orientar ou me disponibilizar um material para estudo agradeço…

Abraços

3 Respostas

Andrauss

Olá amigo dê uma pesquisada sobre SwingWorker, fiz algo parecido uma vez e utilizei essa classe para isso.
Fluxo básico:
doInBackground() - Vai executar em segundo plano, aqui vc pode colocar a criação da sua internalframe e criar a dialog com o gif.
done() - esse método é chamado quando o doInBackground termina, aqui vc pode mostrar a internalframe e fechar a dialog.

Andrauss
Solucao aceita
new SwingWorker<Object, Object>() {

            JInternalFrame iframe;
            JDialog dialog;
            JDesktopPane desktop;
            
            @Override
            protected Object doInBackground() throws Exception {
                new Thread(new Runnable() {

                    @Override
                    public void run() {
                        dialog = new JDialog();
                        dialog.setVisible(true);
                    }
                }).start();
                
                iframe = new JInternalFrame();
                return null;
            }
            

            @Override
            protected void done() {
                dialog.dispose();
                desktop.add(iframe);
                iframe.show();
            }
        }.execute();
evanstos

Muito Obrigado… exatamente o que eu precisava, tentei de diversas formas fazer sem esse componente e não estava funcionado.
Testei com o seu exemplo e funcionou !!

Criado 11 de fevereiro de 2016
Ultima resposta 11 de fev. de 2016
Respostas 3
Participantes 2