Java Tips: Preload de Imagens usando ImageIcon

Posted on dezembro 28, 2011. Filed under: Java, Tips |

Fazer preload de imagens no Java pode parecer um tanto complicado, porém é mais simples do que você imagina, ainda mais usando a classe ImageIcon. Para começar, vamos responder a pergunta: Em quais momentos você precisa que imagens sejam totalmente carregadas antes de continuar um determinado processo ? Tive essa situação no desenvolvimento de um Applet no qual deve carregar imagens que estão disponíveis na Internet.

O construtor da classe ImageIcon aceita um objeto do tipo URL como parâmetro. Você pode especificar uma URL onde esta localizada a imagem desejada. Internamente, na classe ImageIcon, é realizado o preload da imagem usando MediaTracker. Dessa forma é possível monitorar o status de loading desta imagem.

Segue abaixo exemplo de como usar o ImageIcon para carregar uma imagem em uma URL e somente continuar após a imagem ter sido carregada:

        try {
            ImageIcon image = new ImageIcon(new URL("http://www.exemplo.com.br/imagem.png"));
            
            //manter o loop enquanto a imagem estiver sendo carregada
            while(image.getImageLoadStatus() == MediaTracker.LOADING);
        
            //neste momento a imagem já foi totalmente carregada
            
        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        }

Os possíveis status do MediaTracker são: LOADING (Carregando), COMPLETE (Totalmente carregada), ERRORED (Erro ao carregar), ABORTED (Cancelada).

Você pode obter a imagem em um objeto do tipo Image facilmente:

Image img = image.getImage();

Make a Comment

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Liked it here?
Why not try sites on the blogroll...

%d blogueiros gostam disto: