Jump to content

Problema com gif em JPanel


Fest
 Share

Recommended Posts

Olá pessoal, estou com um pequeno problema em mãos.

Ando a fazer umas coisas para aprender e por diversão e de momento preciso de mostrar uma série de gifs. Eu tenho uma lista e conforme o item seleccionado aparece um gif diferente. Eu estou a apresentar o gif num JLabel no parâmetro setIcon através de um ImageIcon. Acontece que, na maioria dos gifs, o fundo que supostamente é transparente, vem colorido. Eu de um jogo que tinha feito lembrei-me que secalhar tinha de implementar doublebuffering, andei a pesquisar, implementei um código e outro e outro e nada, o problema está sempre presente.

Eu mostro o meu problema numa versão mais simples para ser mais fácil de rever.

import java.awt.Graphics;
import java.awt.Image;

import javax.swing.*;

public class windowteste extends JFrame{

private Image dbImage;
private Graphics dbg;

public windowteste(){
	setTitle("Teste v0.0");
	setExtendedState(this.getExtendedState()|JFrame.MAXIMIZED_BOTH);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        JPanel p = new JPanel();
        JLabel l =new JLabel();
        l.setIcon(new ImageIcon("imagens/pokemon/sprites/animated/6.gif"));
        p.add(l);
        add(p);
        invalidate(); 
	validate();
}
public static void main(String[] args) {
	new windowteste();
}
public void update(Graphics g)
{
	// initialize buffer
	if (dbImage == null)
	{
	dbImage = createImage (this.getSize().width, this.getSize().height);
	dbg = dbImage.getGraphics ();
	}

	// clear screen in background
	dbg.setColor (getBackground ());
	dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);

	// draw elements in background
	dbg.setColor (getForeground());
	paint (dbg);

	// draw image on the screen
	g.drawImage (dbImage, 0, 0, this);
}
}

Eu ainda pensei se o problema estaria nos gifs, mas uma vez que não acontece tal coisa quando os abro num browser, retirei essa ideia.

Se alguém quiser o gif que apresento nesse código exemplo que me diga como posso colocá-lo aqui se faz favor.

Obrigado,

Fest.

Link to comment
Share on other sites

Pois de facto isso não é assim tão simples, eu tenho algumas coisas por fazer, não tenho tempo de explorar isso a fundo, mas com o código que fiz aparece sempre uns quadrados por trás a mudar de cor..

Mas olha para aqui e explora isto:

http://stackoverflow.com/questions/5183570/java-background-transparent

Talvez chegues lá, desculpa não poder ajudar muito mais.

Abraço, boa sorte

Link to comment
Share on other sites

Olá xDarkLink, obrigado por responderes, pelo menos deste uma vista de olhos e tentaste.

Estive a ver o que me mandaste e não consegui grandes resultados, apenas obtive imagens mas com o fundo colorido  😄 ando mesmo à nora com isto.

Mesmo assim agradeço pelo tempo. Se alguém conseguir perceber o porquê, por favor diga-me.

Obrigado,

Fest.

Link to comment
Share on other sites

Boas fest hoje deu tempo para ver isto com mais calma, postei no SO ajuda e já achei solução, acharam por mim mas pronto, resulta.

Eu acho que isso é um .gif mal "codificado" ou assim, porque normalmente não surge este tipo de problemas..

Mas pronto assumindo que nao dá para codificar melhor, a solução é esta:

http://stackoverflow.com/questions/9699197/java-gif-on-label-background-squares-showing

explora a resposta do "eee"

boa sorte

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.