Добавить изображение .gif как значок в окно вывода

Я хочу добавить загружаемый анимированный значок gif в окно вывода разрабатываемого мной приложения платформы NetBeans. Мне удалось добавить файл значка png. Но в этом случае добавленный значок gif не является анимированным. он остается прежним.

private class Loading extends AbstractAction {

        public Loading() {
            //putValue(SMALL_ICON, ImageUtilities.loadImageIcon("org/netbeans/modules/plsql/execution/loading.gif", true));

            putValue(SMALL_ICON, ImageUtilities.loadImage("org/netbeans/modules/plsql/execution/loading.gif",true));
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("Action performed");
        }

    }

Это то, что я использовал в качестве окна вывода.

final InputOutput io = IOProvider.getDefault().getIO("Deploy Dependents", new Action[]{new Loading()});

Добавить изображение .gif как значок в окно вывода

Вы пробовали использовать ImageIcon, как в этом ответе: stackoverflow.com/a/42284050/150978?

Robert 05.01.2019 15:30

@ Роберт, да. Изображение было показано в нужном месте, но не анимировалось и не двигалось.

Gihan Saranga Siriwardhana 06.01.2019 02:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
2
303
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

вы можете попробовать приведенный ниже код, он загружает изображение в формате GIF с анимацией.

Думаю, вам понадобится только эта часть кода:

    ClassLoader classLoader = getClass().getClassLoader();
    File file = new File(classLoader.getResource("gif.gif").getFile());
    Image image = Toolkit.getDefaultToolkit().createImage(org.apache.commons.io.IOUtils.toByteArray(new FileInputStream(file)));
    ImageIcon icon = new ImageIcon(image);

Пример полного кода добавлен ниже:

import java.awt.Image;
import java.awt.Toolkit;
import java.io.File;
import java.io.FileInputStream;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

public class AnimationTest extends JFrame {

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            AnimationTest test = new AnimationTest();
            test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            test.setVisible(true);
        }
    });
}

public AnimationTest() {
    super();
    try {
        JLabel label = new JLabel();
        ClassLoader classLoader = getClass().getClassLoader();
        File file = new File(classLoader.getResource("gif.gif").getFile());
        Image image = 
       Toolkit.getDefaultToolkit().createImage(org.apache.commons.io.IOUtils.
        toByteArray(new FileInputStream(file)));
        ImageIcon icon = new ImageIcon(image);
        label.setIcon(icon);
        icon.setImageObserver(label);
        add(label);
        pack();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

добавлен тот же код с проектом jave в github, вы можете получить полный код оттуда.

загрузка изображения в формате GIF в Java с анимацией

Кроме того, вам необходимо использовать приведенную ниже зависимость apache commons для образца кода

    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.6</version>
    </dependency>

Это не совсем то, что я ищу. Я хочу добавить gif-анимацию на вкладку окна вывода

Gihan Saranga Siriwardhana 02.01.2019 04:05

что вы имеете в виду под вкладкой окна вывода? вы можете поделиться полным образцом кода? в любом случае, если вы хотите анимировать gif, вам нужно загрузить как поток и сделать его imageIcon.

Dilanka M 02.01.2019 04:50

ваш вопрос до сих пор не ясен. Я предлагаю вам предоставить свой код для методов, связанных с ImageUtilities.loadImage (..) и IOProvider.getDefault (). GetIO (..). потому что без этого невозможно попробовать.

Dilanka M 02.01.2019 11:53

Я знаю, как добавить изображение. Это не моя проблема. Если вы снова прочитаете этот вопрос, мой вопрос заключался в том, что добавленное мной изображение не было анимированным, хотя это был анимированный Gif. И я предоставил все необходимые коды

Gihan Saranga Siriwardhana 02.01.2019 12:23

ButtonUI не поддерживает анонимное изображение, а не метку; если вы попробуете код Диланки, вы увидите. что самый простой способ - сделать то, что вы хотите, создать метку, которая будет прослушивать MouseEvent для выполнения действия

Arnault Le Prévost-Corvellec 03.01.2019 16:29

@Arnault, JButtonделает поддерживает анимацию, поскольку он реализует ImageObserver.

Matthieu 06.01.2019 09:31
Ответ принят как подходящий

Вам нужно добавить кнопку как ImageObserver того Image, который вы загрузили вместе с ImageUtilities.loadImage(). Он позаботится об анимации за вас.

Доступ к самой кнопке может быть скрыт классом IOProvider, но если вам удастся разобраться с ней, просто вызовите image.setImageObserver(button), и вы увидите, что анимация запущена.

Другие вопросы по теме