Отображение прозрачного GIF в JFrame без оставшегося кадра во время воспроизведения?(Начальный) - PullRequest
1 голос
/ 10 июня 2019

Я пытаюсь отобразить GIF с прозрачным фоном в JFrame. Мой исходный код прост.

import java.awt.*;
import javax.swing.*;
public class GUIProject 
{
    public static void main(String [] args)
    {
        JFrame pokemonFrame = new JFrame();
        pokemonFrame.setSize(800, 800);
        ImageIcon imageLabel = new ImageIcon("/Users/Hannah/eclipse-workspace/Graphics/pokemon images/pikasprite.gif");
        JLabel label = new JLabel(imageLabel);
        pokemonFrame.setLayout(new FlowLayout());
        pokemonFrame.add(label);
        pokemonFrame.setVisible(true);  
    }
}

К сожалению, я столкнулся с проблемой, которая точно такая же, как и в случае этого поста . По сути, прошлые кадры GIF остаются на экране в виде петель GIF, создавая своего рода эффект поблескивания. Я использую то же изображение, что и пост, на который я ссылаюсь. Я пытался реализовать решение, которое дал выбранный ответ, но оно не сработало для меня, возможно, потому, что оно слишком сложное для меня, чтобы понять.

Я только начинающий, но я бы очень хотел исправить эту проблему для проекта, над которым я работаю для моего класса.

Мне нужна помощь в реализации этого кода или в поиске другого решения проблемы, с которой я столкнулся. (Я извиняюсь, если этот вопрос неуместен! Я никогда не использовал Stack Overflow, но раньше я скрывался.)

1 Ответ

0 голосов
/ 10 июня 2019

Вот код, который я использовал:

import java.awt.*;
import javax.swing.*;

public class SSCCE extends JPanel
{
    public SSCCE()
    {
        JLabel label = new JLabel( new ImageIcon("bart_simpson.gif") );
        add( label );

        setBackground( Color.YELLOW );
    }

    private static void createAndShowGUI()
    {
        JFrame frame = new JFrame("SSCCE");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new SSCCE());
        frame.pack();
//      frame.setLocationByPlatform( true );
        frame.setVisible( true );
    }

    public static void main(String[] args) throws Exception
    {
        java.awt.EventQueue.invokeLater( () -> createAndShowGUI() );
/*
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowGUI();
            }
        });
*/
    }
}

А вот изображение, которое я использовал:

enter image description here

Я считаю,это прозрачное изображение, потому что вы можете изменить фон панели, и фон показывает изображение.

...